diff --git a/docker/toolkits.txt b/docker/toolkits.txt index bde53b86..73cd6f38 100644 --- a/docker/toolkits.txt +++ b/docker/toolkits.txt @@ -3,6 +3,7 @@ arcade-box-api arcade-brightdata arcade-calendly-api arcade-cursor-agents-api +arcade-datadog-api arcade-figma-api arcade-freshservice-api arcade-linkedin diff --git a/toolkits/datadog_api/.pre-commit-config.yaml b/toolkits/datadog_api/.pre-commit-config.yaml new file mode 100644 index 00000000..7685bba7 --- /dev/null +++ b/toolkits/datadog_api/.pre-commit-config.yaml @@ -0,0 +1,19 @@ +files: ^.*/datadog_api/.* +exclude: ^.*/datadog_api/arcade_datadog_api/tools/(request_body_schemas|__init__)\.py$ +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/datadog_api/.ruff.toml b/toolkits/datadog_api/.ruff.toml new file mode 100644 index 00000000..3235688f --- /dev/null +++ b/toolkits/datadog_api/.ruff.toml @@ -0,0 +1,50 @@ +target-version = "py310" +line-length = 100 +fix = true + +# Exclude large auto-generated files from all checks +exclude = [ + "arcade_datadog_api/tools/__init__.py", + "arcade_datadog_api/tools/request_body_schemas.py", +] + +[lint] +select = [ + # flake8-2020 + "YTT", + # flake8-bandit + "S", + # flake8-bugbear + "B", + # flake8-builtins + "A", + # flake8-comprehensions + "C4", + # flake8-debugger + "T10", + # flake8-simplify + "SIM", + # isort + "I", + # mccabe + "C90", + # pycodestyle + "E", "W", + # pyflakes + "F", + # pygrep-hooks + "PGH", + # pyupgrade + "UP", + # ruff + "RUF", + # tryceratops + "TRY", +] + +[lint.per-file-ignores] +"**/tests/*" = ["S101"] + +[format] +preview = true +skip-magic-trailing-comma = false diff --git a/toolkits/datadog_api/LICENSE b/toolkits/datadog_api/LICENSE new file mode 100644 index 00000000..dfbb8b76 --- /dev/null +++ b/toolkits/datadog_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/datadog_api/Makefile b/toolkits/datadog_api/Makefile new file mode 100644 index 00000000..86da492a --- /dev/null +++ b/toolkits/datadog_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/datadog_api/arcade_datadog_api/__init__.py b/toolkits/datadog_api/arcade_datadog_api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/toolkits/datadog_api/arcade_datadog_api/tools/__init__.py b/toolkits/datadog_api/arcade_datadog_api/tools/__init__.py new file mode 100644 index 00000000..7ccdf6be --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/tools/__init__.py @@ -0,0 +1,32899 @@ +"""Arcade Starter Tools for Datadog + +DO NOT EDIT THIS MODULE DIRECTLY. + +THIS MODULE WAS AUTO-GENERATED BY TRANSPILING THE API STARTER TOOL JSON DEFINITIONS +IN THE ../wrapper_tools DIRECTORY INTO PYTHON CODE. ANY CHANGES TO THIS MODULE WILL +BE OVERWRITTEN BY THE TRANSPILER. +""" + +import asyncio +import json +from enum import Enum +from typing import Annotated, Any + +import httpx +import jsonschema +from arcade_tdk import ToolContext, tool +from arcade_tdk.errors import RetryableToolError + +from .request_body_schemas import REQUEST_BODY_SCHEMAS + +# Retry configuration +INITIAL_RETRY_DELAY = 0.5 # seconds + +HTTP_CLIENT = httpx.AsyncClient( + timeout=httpx.Timeout(60.0, connect=10.0), + limits=httpx.Limits(max_keepalive_connections=20, max_connections=100), + transport=httpx.AsyncHTTPTransport(retries=3), + http2=True, + follow_redirects=True, +) + + +class ToolMode(str, Enum): + """Mode for tools with complex request bodies.""" + + GET_REQUEST_SCHEMA = "get_request_schema" + EXECUTE = "execute" + + +def remove_none_values(data: dict[str, Any]) -> dict[str, Any]: + return {k: v for k, v in data.items() if v is not None} + + +async def make_request( + url: str, + method: str, + params: dict[str, Any] | None = None, + headers: dict[str, Any] | None = None, + content: str | None = None, + data: dict[str, Any] | None = None, + auth: tuple[str, str] | None = None, + max_retries: int = 3, +) -> httpx.Response: + """Make an HTTP request with retry logic for 5xx server errors.""" + for attempt in range(max_retries): + try: + response = await HTTP_CLIENT.request( + url=url, + auth=auth, + method=method, + params=params, + headers=headers, + content=content, + ) + response.raise_for_status() + except httpx.HTTPStatusError as e: + # Only retry on 5xx server errors + if e.response.status_code >= 500 and attempt < max_retries - 1: + # Exponential backoff: 0.5s, 1s, 2s + await asyncio.sleep(INITIAL_RETRY_DELAY * (2**attempt)) + continue + # Re-raise for 4xx errors or if max retries reached + raise + except httpx.RequestError: + # Don't retry request errors (network issues are handled by transport) + raise + else: + return response + + # This should never be reached, but satisfies type checker + raise httpx.RequestError("Max retries exceeded") # noqa: TRY003 + + +async def make_request_with_schema_validation( + url: str, + method: str, + request_data: dict[str, Any], + schema: dict[str, Any], + params: dict[str, Any] | None = None, + headers: dict[str, Any] | None = None, + max_retries: int = 3, +) -> httpx.Response: + """Make an HTTP request with schema validation on format errors.""" + try: + response = await make_request( + url=url, + method=method, + params=params, + headers=headers, + content=json.dumps(request_data), + max_retries=max_retries, + ) + except httpx.HTTPStatusError as e: + # Only provide schema validation for format-related errors + if e.response.status_code in (400, 422): + # Run validation to provide additional context + is_valid, validation_error = validate_json_against_schema(request_data, schema) + + api_error_details = f"API returned {e.response.status_code}: {e.response.text}" + + if not is_valid: + # Schema validation found issues - additional context + additional_context = ( + f"{api_error_details}\n\n" + f"Schema validation found the following issues:\n" + f"{validation_error}" + ) + else: + # Schema validation passed - just show API error + additional_context = api_error_details + + raise RetryableToolError( + message=(f"API request failed with validation error: {e.response.status_code}"), + developer_message=api_error_details, + additional_prompt_content=additional_context, + ) from e + else: + # For non-validation errors, re-raise as-is + raise + else: + return response + + +def validate_json_against_schema( + json_data: dict[str, Any], schema: dict[str, Any] +) -> tuple[bool, str | None]: + """Validate JSON data against an OpenAPI/JSON Schema. + + This provides full JSON Schema Draft 7 validation including: + - Required fields, types, enums + - Pattern validation (regex) + - Format validation (email, uuid, date-time, etc.) + - Min/max length and values + - oneOf, anyOf, allOf + - And all other JSON Schema features + + Args: + json_data: The JSON data to validate + schema: The JSON Schema to validate against + + Returns: + Tuple of (is_valid, error_messages). If valid, error_messages is None. + If invalid, error_messages contains all validation errors. + """ + try: + validator = jsonschema.Draft7Validator( + schema, format_checker=jsonschema.Draft7Validator.FORMAT_CHECKER + ) + # Collect ALL validation errors + errors = list(validator.iter_errors(json_data)) + if errors: + # Format all errors with their paths + error_messages = [] + for error in errors: + error_path = ".".join(str(p) for p in error.path) if error.path else "root" + error_messages.append(f"{error.message} at {error_path}") + # Join all errors with newlines + return False, "\n".join(error_messages) + else: + return True, None + except jsonschema.SchemaError as e: + return False, f"Invalid schema: {e.message}" + except Exception as e: + return False, f"Validation error: {e!s}" + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_datadog_datastores( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListDatastores'."]: + """Retrieve a list of all Datadog datastores. + + Use this tool to obtain a complete list of datastores within your organization on Datadog. Ideal for inventory management and audit purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_new_datastore( + context: ToolContext, + datastore_description: Annotated[ + str | None, "A human-readable description about the datastore." + ] = None, + datastore_display_name: Annotated[ + str | None, + "The display name for the new datastore. This should be a human-readable and descriptive name.", # noqa: E501 + ] = None, + datastore_id: Annotated[ + str | None, + "Optional ID for the new datastore. If not provided, a default one will be generated automatically.", # noqa: E501 + ] = None, + datastore_resource_type: Annotated[ + str | None, "Specifies the resource type for the datastore. Valid value is 'datastores'." + ] = "datastores", + organization_access_level: Annotated[ + str | None, + "The access level for the datastore within the organization. Options: 'contributor', 'viewer', or 'manager'.", # noqa: E501 + ] = None, + primary_key_column_name: Annotated[ + str | None, + "The name of the primary key column for this datastore. Must follow PostgreSQL naming conventions and not exceed 63 characters.", # noqa: E501 + ] = None, + primary_key_generation_strategy: Annotated[ + str | None, + "Set to `uuid` for automatic primary key generation when new items are added. Default is `none`, requiring manual key assignment.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateDatastore'."]: + """Creates a new datastore in Datadog. + + Use this tool to create a new datastore within the Datadog platform. It should be called when a new storage resource needs to be initialized or added to the Datadog system.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "description": datastore_description, + "name": datastore_display_name, + "org_access": organization_access_level, + "primary_column_name": primary_key_column_name, + "primary_key_generation_strategy": primary_key_generation_strategy, + }, + "id": datastore_id, + "type": datastore_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_datadog_datastore( + context: ToolContext, + datastore_unique_id: Annotated[ + str, "The unique identifier of the datastore to delete in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteDatastore'."]: + """Delete a Datadog datastore using its unique ID. + + Use this tool to delete a specific datastore in Datadog by providing its unique identifier. Call this tool when a datastore is no longer needed and requires removal.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + datastore_id=datastore_unique_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def retrieve_datastore( + context: ToolContext, + datastore_identifier: Annotated[ + str, "The unique ID of the datastore to be retrieved from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetDatastore'."]: + """Retrieve datastore information by ID. + + Use this tool to access details of a specific datastore by providing its ID. It retrieves information from Datadog's datastore endpoint.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + datastore_id=datastore_identifier, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_datastore_attributes( + context: ToolContext, + datastore_unique_identifier: Annotated[ + str, "The unique identifier of the datastore to update in Datadog." + ], + datastore_description: Annotated[ + str | None, + "A human-readable description for the datastore. Use this to provide additional information or context about the datastore.", # noqa: E501 + ] = None, + datastore_display_name: Annotated[ + str | None, + "The display name of the datastore to be updated. Provide a concise, human-readable name.", + ] = None, + datastore_update_id: Annotated[ + str | None, "The unique identifier for the datastore that needs to be updated." + ] = None, + resource_type_for_datastores: Annotated[ + str | None, "Specifies the resource type for datastores. Must be 'datastores'." + ] = "datastores", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateDatastore'."]: + """Update attributes of an existing datastore in Datadog. + + Use this tool to update details of an existing datastore in Datadog by specifying its ID.""" + request_data = remove_none_values({ + "data": { + "attributes": {"description": datastore_description, "name": datastore_display_name}, + "id": datastore_update_id, + "type": resource_type_for_datastores, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + datastore_id=datastore_unique_identifier, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_datastore_item( + context: ToolContext, + datastore_id: Annotated[ + str, + "A string representing the unique identifier of the datastore from which the item will be deleted.", # noqa: E501 + ], + item_primary_key: Annotated[ + str | None, + "The primary key value identifying the item to delete. Max length is 256 characters.", + ] = None, + item_unique_identifier: Annotated[ + str | None, + "Optional unique identifier of the item to delete. Use if available for more precise deletion.", # noqa: E501 + ] = None, + resource_type_for_datastore_items: Annotated[ + str | None, "The resource type for datastore items. Must be 'items'." + ] = "items", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteDatastoreItem'."]: + """Delete an item from a datastore by its key. + + Use this tool to delete a specific item from a datastore when you have the key and datastore ID.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"id": item_unique_identifier, "item_key": item_primary_key}, + "type": resource_type_for_datastore_items, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), datastore_id=datastore_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_datastore_items( + context: ToolContext, + datastore_identifier: Annotated[ + str, "The unique identifier for the datastore from which to fetch items." + ], + item_limit_per_page: Annotated[ + int | None, + "Limit the number of items to return per page for pagination. Maximum of 100 items per page.", # noqa: E501 + ] = None, + pagination_offset: Annotated[ + int | None, + "Specifies the number of items to skip from the beginning of the result set for pagination.", # noqa: E501 + ] = None, + primary_item_key: Annotated[ + str | None, + "Primary key to retrieve a specific item. Cannot be used with the filter parameter.", + ] = None, + search_filter: Annotated[ + str | None, + "Query filter to search datastore items using the logs search syntax. Cannot be used with item_key.", # noqa: E501 + ] = None, + sort_order: Annotated[ + str | None, + "Sort results by a specific field. Use '-' prefix for descending order (e.g., '-created_at').", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListDatastoreItems'."]: + """Retrieve items from a specified datastore. + + Use this tool to list items from a datastore. You can filter the results by using either an item key or a filter query parameter, but not both simultaneously. Supports server-side pagination for managing large datasets.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + datastore_id=datastore_identifier, + ), + method="GET", + params=remove_none_values({ + "filter": search_filter, + "item_key": primary_item_key, + "page[limit]": item_limit_per_page, + "page[offset]": pagination_offset, + "sort": sort_order, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_datastore_item( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + datastore_identifier: Annotated[ + str | None, + "The unique identifier for the datastore that contains the item 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 'UpdateDatastoreItem'."]: + """Partially update an item in a datastore by its key. + + Use this tool to modify an existing item in a datastore by specifying its key. It's ideal for making incremental changes without altering the entire record, leveraging Datadog's API. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEDATASTOREITEM_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not datastore_identifier: + missing_params.append(("datastore_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEDATASTOREITEM_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["UPDATEDATASTOREITEM_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + datastore_id=datastore_identifier, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEDATASTOREITEM_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def bulk_delete_datastore_items( + context: ToolContext, + datastore_identifier: Annotated[ + str, "The unique ID of the datastore from which items will be deleted." + ], + datastore_items_id: Annotated[ + str | None, "ID for the datastore of items you want to delete." + ] = None, + item_keys_to_delete: Annotated[ + list[str] | None, + "List of up to 100 primary keys identifying items to delete from the datastore.", + ] = None, + items_resource_type: Annotated[ + str | None, "Specifies the resource type of the items. Must be 'items'." + ] = "items", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'BulkDeleteDatastoreItems'."]: + """Delete multiple items from a datastore at once. + + Use this tool to delete multiple items from a specified datastore by their keys in a single operation. It's ideal for efficiently removing batches of entries when managing datastore contents.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"item_keys": item_keys_to_delete}, + "id": datastore_items_id, + "type": items_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items/bulk".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + datastore_id=datastore_identifier, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def bulk_update_datastore_items( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + datastore_identifier: Annotated[ + str | None, + "The unique identifier for the datastore where items will be updated or replaced. 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 'BulkWriteDatastoreItems'."]: + """Perform bulk creation or replacement of datastore items. + + Use this tool to create or replace multiple items in a Datadog datastore in a single operation by specifying their keys. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "BULKUPDATEDATASTOREITEMS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not datastore_identifier: + missing_params.append(("datastore_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["BULKUPDATEDATASTOREITEMS_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["BULKUPDATEDATASTOREITEMS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items/bulk".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + datastore_id=datastore_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["BULKUPDATEDATASTOREITEMS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_app_key_registrations( + context: ToolContext, + page_number: Annotated[ + int | None, "The page number to return for paginating through app key registrations." + ] = None, + results_per_page: Annotated[ + int | None, "The number of App Key Registrations to return per page." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAppKeyRegistrations'."]: + """Retrieve a list of app key registrations from Datadog. + + Use this tool to get a detailed list of all app key registrations available in your Datadog account. Ideal for managing and auditing app key usage.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions/app_key_registrations".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"page[size]": results_per_page, "page[number]": page_number}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def unregister_app_key( + context: ToolContext, + app_key_id: Annotated[str, "The unique identifier of the application key to be unregistered."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UnregisterAppKey'."]: + """Unregister an application key to revoke its access. + + Use this tool to revoke access by unregistering a specific application key from Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions/app_key_registrations/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=app_key_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_app_key_registration( + context: ToolContext, + app_key_id: Annotated[str, "The unique ID of the app key to fetch its registration details."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAppKeyRegistration'."]: + """Retrieve details of an existing App Key Registration. + + This tool retrieves information about a specific App Key Registration by its ID. Use it to obtain details of an app key currently registered in the Datadog system via its unique identifier.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions/app_key_registrations/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=app_key_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def register_datadog_app_key( + context: ToolContext, + app_key_id: Annotated[ + str, + "The unique identifier for the app key to be registered with Datadog. It must be a valid string.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'RegisterAppKey'."]: + """Register a new app key in Datadog. + + Use this tool to register a new application key with Datadog, enabling API access and integrations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions/app_key_registrations/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=app_key_id + ), + method="PUT", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_action_connection( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateActionConnection'."]: + """Create a new action connection in Datadog. + + Use this tool to create a new action connection in Datadog. Ensure you have a registered application key before using this tool. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEACTIONCONNECTION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEACTIONCONNECTION_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["CREATEACTIONCONNECTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/actions/connections".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEACTIONCONNECTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_action_connection( + context: ToolContext, + action_connection_id: Annotated[ + str, "The unique identifier for the action connection to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteActionConnection'."]: + """Delete an existing action connection in Datadog. + + Use this tool to delete a specific action connection in Datadog. Appropriate permissions via a registered application key are required to perform this action.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions/connections/{connection_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + connection_id=action_connection_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_action_connection( + context: ToolContext, + action_connection_id: Annotated[ + str, + "The ID of the action connection to retrieve. Required for fetching details of a specific connection.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetActionConnection'."]: + """Retrieve an existing Action Connection from Datadog. + + Use this tool to get details about an existing Action Connection in Datadog. This requires a registered application key.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/actions/connections/{connection_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + connection_id=action_connection_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_action_connection( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + action_connection_id: Annotated[ + str | None, + "The unique identifier for the action connection to be updated in Datadog. 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 'UpdateActionConnection'."]: + """Update an existing action connection in Datadog. + + This tool updates an action connection in Datadog using the provided connection ID. Ensure you have a registered application key before calling this tool. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEACTIONCONNECTION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not action_connection_id: + missing_params.append(("action_connection_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEACTIONCONNECTION_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["UPDATEACTIONCONNECTION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/actions/connections/{connection_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + connection_id=action_connection_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEACTIONCONNECTION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aws_scan_options( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAwsScanOptions'."]: + """Fetch AWS scan options for configured accounts. + + Use this tool to retrieve the scan options that have been set up for AWS accounts in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def activate_aws_scan_options( + context: ToolContext, + aws_account_id: Annotated[str, "The ID of the AWS account for which to activate scan options."], + enable_container_vulnerability_scanning: Annotated[ + bool, "Enable scanning for vulnerabilities in containers when set to true." + ], + enable_lambda_function_scanning: Annotated[ + bool, "Enable scanning of Lambda functions. Set to true to enable, false to disable." + ], + enable_sensitive_data_scanning: Annotated[ + bool, "Indicates if scanning for sensitive data is enabled for the AWS account." + ], + enable_vulnerability_scan_host_os: Annotated[ + bool, "Indicates if scanning for vulnerabilities in host operating systems is enabled." + ], + resource_type: Annotated[ + str, "Specifies the resource type to activate. Must be 'aws_scan_options'." + ] = "aws_scan_options", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateAwsScanOptions'."]: + """Activate Agentless scan options for an AWS account.""" + request_data = remove_none_values({ + "data": { + "attributes": { + "lambda": enable_lambda_function_scanning, + "sensitive_data": enable_sensitive_data_scanning, + "vuln_containers_os": enable_container_vulnerability_scanning, + "vuln_host_os": enable_vulnerability_scan_host_os, + }, + "id": aws_account_id, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_aws_scan_options( + context: ToolContext, + aws_account_id: Annotated[ + str, "The unique identifier for the AWS account whose scan options you want to delete." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteAwsScanOptions'."]: + """Delete Agentless scan options for an AWS account. + + Use this tool to delete Agentless scan options configured for a specific AWS account. Ideal for managing AWS account security settings through Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=aws_account_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_aws_scan_settings( + context: ToolContext, + aws_account_id: Annotated[str, "The unique ID of an AWS account for fetching scan options."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAwsScanOptions'."]: + """Fetches Agentless scan options for AWS accounts. + + Use this tool to retrieve the configuration of Agentless scan options for a specified AWS account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=aws_account_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_aws_scan_options( + context: ToolContext, + account_identifier: Annotated[ + str, "The ID of the AWS account that needs scan options updated." + ], + aws_account_id: Annotated[str, "The ID of the AWS account for which to update scan options."], + enable_lambda_scanning: Annotated[ + bool | None, "Set to true to enable scanning of AWS Lambda functions." + ] = None, + enable_sensitive_data_scanning: Annotated[ + bool | None, "Enable scanning for sensitive data in the AWS account. Set to true to enable." + ] = None, + enable_vulnerability_scanning_for_containers: Annotated[ + bool | None, "Set to true to enable scanning for container vulnerabilities." + ] = None, + enable_vulnerability_scanning_in_hosts: Annotated[ + bool | None, + "Enable scanning for vulnerabilities in hosts. Set to true to enable, false to disable.", + ] = None, + resource_type: Annotated[ + str, "Specifies the resource type. Must be set to `aws_scan_options`." + ] = "aws_scan_options", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateAwsScanOptions'."]: + """Update Agentless scan options for an AWS account. + + This tool updates the Agentless scan settings for a specified AWS account. It should be called when modifications to scan options are needed for security or compliance purposes.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "lambda": enable_lambda_scanning, + "sensitive_data": enable_sensitive_data_scanning, + "vuln_containers_os": enable_vulnerability_scanning_for_containers, + "vuln_host_os": enable_vulnerability_scanning_in_hosts, + }, + "id": account_identifier, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=aws_account_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_azure_scan_options( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAzureScanOptions'."]: + """Fetches the scan options for Azure accounts from Datadog. + + Call this tool to retrieve the current scan options configured for Azure accounts in Datadog. It provides details about the configuration settings used in agentless scanning for these accounts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def activate_azure_scan_options( + context: ToolContext, + azure_subscription_id: Annotated[ + str | None, "The Azure subscription ID for which to activate the scan options." + ] = None, + enable_container_vulnerability_scan: Annotated[ + bool | None, "Set to true to activate scanning for vulnerabilities in containers." + ] = None, + enable_vulnerability_scan_hosts: Annotated[ + bool | None, + "Indicate if scanning for vulnerabilities in Azure hosts is enabled. Set to true to activate.", # noqa: E501 + ] = None, + resource_type: Annotated[ + str | None, "Specifies the resource type. Always use 'azure_scan_options'." + ] = "azure_scan_options", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateAzureScanOptions'."]: + """Activate Agentless scan options for Azure subscriptions. + + Use this tool to activate Agentless scan options for a specified Azure subscription. This is useful for enabling security scans without deploying agents.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "vuln_containers_os": enable_container_vulnerability_scan, + "vuln_host_os": enable_vulnerability_scan_hosts, + }, + "id": azure_subscription_id, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_azure_subscription_scan_options( + context: ToolContext, + azure_subscription_id: Annotated[ + str, + "The unique identifier for the Azure subscription whose scan options you want to delete.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteAzureScanOptions'."]: + """Delete scan options for an Azure subscription. + + Use this tool to delete agentless scan options for a specified Azure subscription. It should be called when there is a need to remove scan settings associated with Azure resources.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure/{subscription_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + subscription_id=azure_subscription_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_agentless_scan_options( + context: ToolContext, + azure_subscription_id: Annotated[ + str, "The Azure subscription ID to retrieve the Agentless scan options for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAzureScanOptions'."]: + """Fetch Azure Agentless scan options for a subscription. + + Use this tool to retrieve the Agentless scan options for an activated Azure subscription. This is useful for understanding the scanning configurations applied to the subscription.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure/{subscription_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + subscription_id=azure_subscription_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_azure_scan_options( + context: ToolContext, + azure_subscription_id: Annotated[ + str, "The unique identifier for the Azure subscription to update scan options." + ], + azure_scan_options_resource_type: Annotated[ + str | None, + "Specifies the resource type for Azure scan options, must be 'azure_scan_options'.", + ] = "azure_scan_options", + azure_subscription_identifier: Annotated[ + str | None, "The Azure subscription ID for which to update scan options." + ] = None, + enable_container_vulnerability_scanning: Annotated[ + bool | None, + "Enable or disable container vulnerability scanning. Set to true to enable, false to disable.", # noqa: E501 + ] = None, + enable_scanning_for_host_vulnerabilities: Annotated[ + bool | None, "Enable or disable scanning for vulnerabilities in host operating systems." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateAzureScanOptions'."]: + """Update Agentless scan options for an Azure subscription. + + Use this tool to update the Agentless scanning preferences for a specified Azure subscription in Datadog.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "vuln_containers_os": enable_container_vulnerability_scanning, + "vuln_host_os": enable_scanning_for_host_vulnerabilities, + }, + "id": azure_subscription_identifier, + "type": azure_scan_options_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure/{subscription_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + subscription_id=azure_subscription_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_gcp_scan_options( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListGcpScanOptions'."]: + """Fetch GCP project scan options. + + This tool retrieves the scan options configured for all Google Cloud Platform (GCP) projects, facilitating the assessment of agentless scanning configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def activate_gcp_scan_options( + context: ToolContext, + enable_container_vulnerability_scanning: Annotated[ + bool | None, "Set to true to enable scanning for vulnerabilities in containers." + ] = None, + enable_vulnerability_host_scanning: Annotated[ + bool | None, + "Set to true to enable scanning for vulnerabilities in hosts in the GCP project.", + ] = None, + gcp_project_id: Annotated[ + str | None, "The Google Cloud Platform project ID for which to activate the scan options." + ] = None, + gcp_scan_resource_type: Annotated[ + str | None, "The type of GCP scan options resource. This is typically 'gcp_scan_options'." + ] = "gcp_scan_options", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateGcpScanOptions'."]: + """Activate Agentless scan options for a GCP project. + + Use this tool to enable Agentless scanning for a Google Cloud Platform project. This is useful for setting up security scans without deploying agents.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "vuln_containers_os": enable_container_vulnerability_scanning, + "vuln_host_os": enable_vulnerability_host_scanning, + }, + "id": gcp_project_id, + "type": gcp_scan_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_gcp_scan_options( + context: ToolContext, + gcp_project_id: Annotated[ + str, + "The unique identifier for the Google Cloud Platform (GCP) project whose scan options you wish to delete.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteGcpScanOptions'."]: + """Delete Agentless scan options for a GCP project. + + Use this tool to remove the agentless scanning configuration for a specified GCP project. Ideal for managing and updating project scan settings.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp/{project_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), project_id=gcp_project_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def retrieve_gcp_scan_settings( + context: ToolContext, + gcp_project_id: Annotated[ + str, "The unique ID of the GCP project to retrieve scan options for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetGcpScanOptions'."]: + """Retrieve GCP project agentless scan options. + + This tool fetches the agentless scanning options for a specified activated GCP project from Datadog, helping to determine scan configurations and settings.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp/{project_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), project_id=gcp_project_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_gcp_scan_options( + context: ToolContext, + gcp_project_id: Annotated[ + str, "The Google Cloud Platform project ID to update scan options for." + ], + enable_container_vulnerability_scanning: Annotated[ + bool | None, "Enable (True) or disable (False) scanning for vulnerabilities in containers." + ] = None, + enable_host_vulnerability_scanning: Annotated[ + bool | None, + "Indicate if scanning for vulnerabilities in host operating systems is enabled.", + ] = None, + gcp_scan_options_resource_type: Annotated[ + str | None, + "Specifies the GCP scan options resource type, typically set to 'gcp_scan_options'.", + ] = "gcp_scan_options", + google_cloud_project_id: Annotated[ + str | None, "The ID of the GCP project to update scan options for, used as an identifier." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateGcpScanOptions'."]: + """Update scan options for a GCP project in Datadog. + + Use this tool to update the agentless scanning options for an activated Google Cloud Platform project in Datadog. It should be called when changes to the existing scan configuration are needed.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "vuln_containers_os": enable_container_vulnerability_scanning, + "vuln_host_os": enable_host_vulnerability_scanning, + }, + "id": google_cloud_project_id, + "type": gcp_scan_options_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp/{project_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), project_id=gcp_project_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_recent_aws_on_demand_tasks( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAwsOnDemandTasks'."]: + """Retrieve the latest AWS on demand tasks. + + Fetches the most recent 1000 AWS on demand tasks. Useful for monitoring or analyzing recent AWS activities managed by Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/ondemand/aws".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def trigger_aws_resource_scan( + context: ToolContext, + aws_resource_arn: Annotated[ + str, "The ARN of the AWS resource to scan, such as EC2, Lambda, AMI, ECR, RDS, or S3." + ], + task_type: Annotated[ + str, "The type of the on-demand task. This must always be set to 'aws_resource'." + ] = "aws_resource", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateAwsOnDemandTask'."]: + """Trigger a high-priority scan of an AWS resource. + + Use this tool to initiate a high-priority scan of a specific AWS resource. Ensure agentless scanning is activated for the AWS account containing the resource you wish to scan.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"arn": aws_resource_arn}, "type": task_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/ondemand/aws".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aws_on_demand_task_data( + context: ToolContext, + aws_task_uuid: Annotated[ + str, + "The UUID of the AWS on-demand task to fetch data for. This is a unique identifier for the task.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAwsOnDemandTask'."]: + """Fetch data of a specific AWS on-demand task in Datadog. + + Use this tool to retrieve information about a specific AWS on-demand task from Datadog's agentless scanning service. It should be called when detailed information about a task is needed, identified by its task ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/agentless_scanning/ondemand/aws/{task_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), task_id=aws_task_uuid + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_api_keys( + context: ToolContext, + api_key_filter: Annotated[ + str | None, + "String to filter API keys by specified criteria. Use it to narrow down the list based on specific string matches.", # noqa: E501 + ] = None, + created_after_date_filter: Annotated[ + str | None, "Include API keys created on or after this date. Expected format: YYYY-MM-DD." + ] = None, + filter_api_keys_by_category: Annotated[ + str | None, "Filter API keys by the specified category." + ] = None, + filter_by_remote_config_read_enabled: Annotated[ + bool | None, + "Set to true to filter API keys with remote config read enabled; false otherwise.", + ] = None, + filter_created_before_date: Annotated[ + str | None, "Include only API keys created on or before this date in the format YYYY-MM-DD." + ] = None, + include_related_resources: Annotated[ + str | None, + "Comma-separated list of resource paths (`created_by`, `modified_by`) to include related data in the response.", # noqa: E501 + ] = None, + modified_after_date_filter: Annotated[ + str | None, + "Specify a date to include API keys modified on or after this date. Use YYYY-MM-DD format.", + ] = None, + modified_before_date: Annotated[ + str | None, + "Include API keys modified on or before this specified date. Format should be YYYY-MM-DD.", + ] = None, + page_size: Annotated[ + int | None, + "Specifies the number of API keys returned in a single page; maximum value is 100.", + ] = 10, + sort_by_attribute: Annotated[ + str | None, "Attribute to sort API keys by. Use a minus sign for descending order." + ] = "name", + specific_page_number_to_return: Annotated[ + int | None, "The specific page number to return from the paginated list of API keys." + ] = 0, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAPIKeys'."]: + """Retrieve all API keys for your Datadog account. + + Use this tool to fetch a list of all API keys associated with your Datadog account. It is useful for managing or auditing your API key usage.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/api_keys".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": specific_page_number_to_return, + "sort": sort_by_attribute, + "filter": api_key_filter, + "filter[created_at][start]": created_after_date_filter, + "filter[created_at][end]": filter_created_before_date, + "filter[modified_at][start]": modified_after_date_filter, + "filter[modified_at][end]": modified_before_date, + "include": include_related_resources, + "filter[remote_config_read_enabled]": filter_by_remote_config_read_enabled, + "filter[category]": filter_api_keys_by_category, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_datadog_api_key( + context: ToolContext, + api_key_name: Annotated[ + str, + "Name of the API key to be created in Datadog. This should be a descriptive and unique string identifier.", # noqa: E501 + ], + api_keys_resource_type: Annotated[str, "Specify the resource type as 'api_keys'."] = "api_keys", + apikey_category: Annotated[ + str | None, + "Specifies the category for the API key. This categorizes the key for organizational purposes.", # noqa: E501 + ] = None, + remote_config_read_enabled: Annotated[ + bool | None, + "Indicates whether to enable read access to remote config for the new API key. Expects a boolean value.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateAPIKey'."]: + """Creates a new API key in Datadog. + + Use this tool to generate a new API key in Datadog. Ideal for managing authentication and access to Datadog services.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "category": apikey_category, + "name": api_key_name, + "remote_config_read_enabled": remote_config_read_enabled, + }, + "type": api_keys_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/api_keys".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_datadog_api_key( + context: ToolContext, + api_key_id: Annotated[str, "The unique identifier of the API key to delete in Datadog."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteAPIKey'."]: + """Delete an API key from Datadog. + + Use this tool to delete an existing API key in Datadog by providing the API key ID. Call this tool when you need to manage and remove unnecessary or compromised keys from your Datadog account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/api_keys/{api_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), api_key_id=api_key_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_api_key_details( + context: ToolContext, + api_key_id: Annotated[str, "The unique identifier for the Datadog API key to be retrieved."], + include_related_resources: Annotated[ + str | None, + "Comma-separated list of resource paths (`created_by`, `modified_by`) to include in the response.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAPIKey'."]: + """Retrieves details of a specific Datadog API key. + + Use this tool to obtain information about a specific API key from Datadog by providing the API key ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/api_keys/{api_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), api_key_id=api_key_id + ), + method="GET", + params=remove_none_values({"include": include_related_resources}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_datadog_api_key( + context: ToolContext, + api_key_id: Annotated[str, "The unique identifier for the API key to be updated in Datadog."], + api_key_name: Annotated[str, "The new name for the API key to be updated."], + key_id: Annotated[str, "ID of the API key to be updated in Datadog."], + api_key_category: Annotated[ + str | None, "The category of the API key for the update operation." + ] = None, + api_keys_resource_type: Annotated[ + str, "Specifies the resource type for API keys. Must be 'api_keys'." + ] = "api_keys", + enable_remote_config_read: Annotated[ + bool | None, + "Enable remote config read for the API key. Use true to enable, false to disable.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateAPIKey'."]: + """Update an API key in Datadog. + + This tool updates an existing API key in Datadog. It should be called when you need to modify the details of an API key for access permissions or other configurations within the Datadog platform.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "category": api_key_category, + "name": api_key_name, + "remote_config_read_enabled": enable_remote_config_read, + }, + "id": key_id, + "type": api_keys_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/api_keys/{api_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), api_key_id=api_key_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_span_metrics( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListSpansMetrics'."]: + """Retrieve configured span-based metrics from Datadog. + + Get the list of configured span-based metrics along with their definitions from Datadog's APM configuration.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/apm/config/metrics".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_span_metric( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateSpansMetric'."]: + """Create a metric based on ingested spans in your organization. + + Use this tool to create a metric using your ingested spans. It will return the created span-based metric object if successful. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESPANMETRIC_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATESPANMETRIC_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["CREATESPANMETRIC_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/apm/config/metrics".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESPANMETRIC_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_span_metric( + context: ToolContext, + metric_id: Annotated[str, "The unique identifier for the span-based metric to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteSpansMetric'."]: + """Delete a specific span-based metric from your organization. + + Use this tool to delete a span-based metric by specifying its metric ID. It helps manage and maintain the span metrics within your organization by removing unnecessary or obsolete data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/apm/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=metric_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_span_metric( + context: ToolContext, + metric_name: Annotated[str, "The name of the span-based metric to be retrieved from Datadog."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSpansMetric'."]: + """Retrieve a specific span-based metric from Datadog. + + Use this tool to get detailed information on a particular span-based metric from your Datadog organization. Ideal for accessing span metrics data by specifying the metric ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/apm/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=metric_name + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_span_metric( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + span_metric_name: Annotated[ + str | None, + "The name of the span-based metric to update in Datadog. 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 'UpdateSpansMetric'."]: + """Update a specific span-based metric in Datadog. + + Use this tool to update a specific span-based metric in your Datadog organization. Call this tool when you need to modify the configuration of an existing span-based metric. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATESPANMETRIC_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not span_metric_name: + missing_params.append(("span_metric_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATESPANMETRIC_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["UPDATESPANMETRIC_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/apm/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=span_metric_name + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESPANMETRIC_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_apm_retention_filters( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListApmRetentionFilters'."]: + """Retrieve the list of APM retention filters from Datadog. + + This tool is used to obtain a list of APM retention filters in Datadog. It should be called when there's a need to review or analyze the current retention filter settings in APM configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/apm/config/retention-filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_apm_retention_filter( + context: ToolContext, + enable_retention_filter: Annotated[ + bool, "Set to true to enable the retention filter or false to disable it." + ], + retention_filter_name: Annotated[str, "The name for the retention filter to be created."], + search_query: Annotated[ + str, "The search query using span search syntax to define criteria for retention." + ], + span_sample_rate: Annotated[ + float, + "Sample rate for spans matching the query. A value of 1.0 processes all matching spans.", + ], + resource_type: Annotated[ + str, "Specify the type of the resource, always use 'apm_retention_filter'." + ] = "apm_retention_filter", + retention_filter_type: Annotated[ + str, "Set the type of retention filter. Must be 'spans-sampling-processor'." + ] = "spans-sampling-processor", + trace_sample_rate: Annotated[ + float | None, + "Sample rate for traces with spans going through the filter. Use 1.0 to keep all matching traces.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateApmRetentionFilter'."]: + """Create a retention filter for indexing spans in Datadog. + + Use this tool to create a retention filter in Datadog that indexes spans within your organization. Note that default filters of types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be created. This tool returns the definition of the newly created retention filter.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "enabled": enable_retention_filter, + "filter": {"query": search_query}, + "filter_type": retention_filter_type, + "name": retention_filter_name, + "rate": span_sample_rate, + "trace_rate": trace_sample_rate, + }, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/apm/config/retention-filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def reorder_apm_retention_filters( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ReorderApmRetentionFilters'."]: + """Reorder execution order of APM retention filters. + + Use this tool to change the sequence in which APM retention filters are executed. This is useful for prioritizing certain filters over others in your Datadog configuration. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "REORDERAPMRETENTIONFILTERS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REORDERAPMRETENTIONFILTERS_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["REORDERAPMRETENTIONFILTERS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/apm/config/retention-filters-execution-order".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REORDERAPMRETENTIONFILTERS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_apm_retention_filter( + context: ToolContext, + retention_filter_id: Annotated[ + str, "The ID of the retention filter to delete. Default filters cannot be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteApmRetentionFilter'."]: + """Delete a specific APM retention filter from your organization. + + Use this tool to delete a specific retention filter in Datadog's APM configuration. Note that default filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor 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="https://{datadog_base_url}/api/v2/apm/config/retention-filters/{filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), filter_id=retention_filter_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_apm_retention_filter( + context: ToolContext, + retention_filter_id: Annotated[ + str, "The unique identifier for the specific APM retention filter to retrieve." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetApmRetentionFilter'."]: + """Retrieve details of a specific APM retention filter. + + Use this tool to get detailed information about an APM retention filter by specifying the filter ID. It helps in managing and understanding APM data retention configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/apm/config/retention-filters/{filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), filter_id=retention_filter_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_apm_retention_filter( + context: ToolContext, + enable_retention_filter: Annotated[ + bool, "Set to true to enable or false to disable the retention filter." + ], + filter_id: Annotated[ + str, "The unique identifier for the retention filter that you want to update." + ], + filter_query: Annotated[ + str, "The search query for the retention filter, following the span search syntax." + ], + retention_filter_id: Annotated[str, "The unique ID of the retention filter to be updated."], + retention_filter_name: Annotated[str, "Specify the name of the retention filter to update."], + span_sample_rate: Annotated[ + float, + "Sample rate to apply to spans going through this retention filter. A value of 1.0 keeps all spans matching the query. Expected to be a number between 0 and 1.", # noqa: E501 + ], + resource_type: Annotated[ + str, + "Specifies the type of the APM retention filter resource, should be 'apm_retention_filter'.", # noqa: E501 + ] = "apm_retention_filter", + retention_filter_type: Annotated[ + str, + "Specify the type of retention filter. Valid options are: 'spans-sampling-processor', 'spans-errors-sampling-processor', 'spans-appsec-sampling-processor'.", # noqa: E501 + ] = "spans-sampling-processor", + trace_sample_rate: Annotated[ + float | None, + "Sample rate for traces containing spans that pass through the retention filter. A value of 1.0 keeps all matching traces.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateApmRetentionFilter'."]: + """Update an APM retention filter in your organization. + + Use this tool to update a retention filter for APM in your Datadog organization. Default filters cannot be renamed or removed.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "enabled": enable_retention_filter, + "filter": {"query": filter_query}, + "filter_type": retention_filter_type, + "name": retention_filter_name, + "rate": span_sample_rate, + "trace_rate": trace_sample_rate, + }, + "id": filter_id, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/apm/config/retention-filters/{filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), filter_id=retention_filter_id + ), + method="PUT", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_multiple_datadog_apps( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteApps'."]: + """Delete multiple apps in Datadog using app IDs. + + This tool deletes multiple applications from Datadog in a single request using a list of app IDs. It requires a registered application key or configured UI permissions. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "DELETEMULTIPLEDATADOGAPPS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["DELETEMULTIPLEDATADOGAPPS_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["DELETEMULTIPLEDATADOGAPPS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/app-builder/apps".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="DELETE", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["DELETEMULTIPLEDATADOGAPPS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_apps( + context: ToolContext, + filter_by_app_name: Annotated[ + str | None, "Filter the list of apps by specifying the app name." + ] = None, + filter_by_creator_email: Annotated[ + str | None, + "Filter apps by the creator's email address. This is used to narrow down apps created by a specific user.", # noqa: E501 + ] = None, + filter_by_creator_uuid: Annotated[ + str | None, + "Filter apps by the app creator's UUID. Provide the UUID of the user who created the app to narrow down the results.", # noqa: E501 + ] = None, + filter_by_query: Annotated[ + str | None, "Filter apps by the app name or the app creator's name." + ] = None, + filter_by_tags: Annotated[ + str | None, "Filter apps by specifying tags. Separate multiple tags with commas." + ] = None, + filter_self_service_enabled: Annotated[ + bool | None, "Filter apps by self-service enablement. True for enabled, false otherwise." + ] = None, + include_published_apps: Annotated[ + bool | None, "Set to true to include only published apps, false to exclude them." + ] = None, + page_number: Annotated[int | None, "The page number to return for paginated results."] = None, + page_size: Annotated[int | None, "The number of apps to return per page."] = None, + show_only_favorite_apps: Annotated[ + bool | None, "Set to true to filter and show only apps that you have marked as favorites." + ] = None, + sort_fields_and_directions: Annotated[ + list[str] | None, + "An array specifying the fields and directions (e.g., 'name:asc', 'created_at:desc') to sort apps by.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListApps'."]: + """Retrieve a list of all apps with optional filters and sorting. + + This tool calls the Datadog API to list all registered apps. It supports filtering and sorting options and provides basic information such as app ID, name, and description. Useful for managing and viewing app information through automation.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/app-builder/apps".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "limit": page_size, + "page": page_number, + "filter[user_name]": filter_by_creator_email, + "filter[user_uuid]": filter_by_creator_uuid, + "filter[name]": filter_by_app_name, + "filter[query]": filter_by_query, + "filter[deployed]": include_published_apps, + "filter[tags]": filter_by_tags, + "filter[favorite]": show_only_favorite_apps, + "filter[self_service]": filter_self_service_enabled, + "sort": sort_fields_and_directions, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_new_app( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateApp'."]: + """Create a new app and return its ID using Datadog. + + Use this tool to create a new app in Datadog. Ensure you have a registered application key or configured permissions in the UI before calling this tool. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATENEWAPP_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATENEWAPP_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["CREATENEWAPP_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request( + url="https://{datadog_base_url}/api/v2/app-builder/apps".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_app( + context: ToolContext, + app_id: Annotated[ + str, + "The ID of the app to delete in Datadog. Ensure this ID is accurate to avoid unintentional deletions.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteApp'."]: + """Delete a specific app in Datadog. + + Use this tool to delete a specific app in Datadog. Ensure you have the necessary application key registered or permissions configured in the UI before attempting to delete.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=app_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_app_details( + context: ToolContext, + application_id: Annotated[ + str, + "The unique ID of the Datadog app to retrieve details for. Required for fetching app information.", # noqa: E501 + ], + app_version: Annotated[ + str | None, + "Specify the app version to retrieve. Use a version number starting from 1, or special values `latest` and `deployed` for the latest or published version, respectively.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetApp'."]: + """Retrieve comprehensive details of a Datadog app. + + This tool fetches the full definition of a specified app from Datadog. It's useful when you need detailed information about an app for monitoring or management purposes. Ensure you have a registered application key or configured permissions as required by Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=application_id + ), + method="GET", + params=remove_none_values({"version": app_version}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_app_version( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + application_id: Annotated[ + str | None, + "The unique ID of the app to update. Required for creating a new version. 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 'UpdateApp'."]: + """Update an app by creating a new version. + + Use this tool to update an existing app by creating a new version through Datadog's API. Ensure you have the necessary registered application key or have configured permissions in the UI before making this call. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEAPPVERSION_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not application_id: + missing_params.append(("application_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEAPPVERSION_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["UPDATEAPPVERSION_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request( + url="https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=application_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=json.dumps(request_data), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def unpublish_app( + context: ToolContext, + app_identifier: Annotated[ + str, "The ID of the app you want to unpublish, removing its live version." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UnpublishApp'."]: + """Unpublish an app to remove its live version. + + Use this tool to unpublish an app and remove its live version. The app can still be updated and republished in the future. Requires a registered application key.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}/deployment".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=app_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def publish_app_on_datadog( + context: ToolContext, + app_id_of_app_to_publish: Annotated[ + str, "The unique identifier of the app you want to publish on Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'PublishApp'."]: + """Publish an app for user access on Datadog. + + Use this tool to publish an app for use by other users on Datadog. Ensure a restriction policy is set for correct user access. A registered application key is required for this operation.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}/deployment".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=app_id_of_app_to_publish + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_application_keys( + context: ToolContext, + created_after_date: Annotated[ + str | None, "Include application keys created on or after this date (YYYY-MM-DD)." + ] = None, + created_before_date: Annotated[ + str | None, + "Filters application keys created on or before this date. Expected format is YYYY-MM-DD.", + ] = None, + filter_application_keys: Annotated[ + str | None, + "Filter the application keys based on a specified string to narrow down the results.", + ] = None, + include_related_resource: Annotated[ + str | None, "Specify 'owned_by' to include related resource information in the response." + ] = None, + page_number: Annotated[int | None, "Specify the page number to return in the results."] = 0, + page_size: Annotated[ + int | None, "Specify the number of application keys to return per page. Maximum is 100." + ] = 10, + sort_keys_by_attribute: Annotated[ + str | None, + "Sort application keys by attribute such as 'created_at', 'name', or 'last4'. Use a minus sign for descending order, e.g., '-name'.", # noqa: E501 + ] = "name", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListApplicationKeys'."]: + """Retrieve all application keys for your organization. + + This tool calls the Datadog API to list all application keys available for your organization, allowing you to view and manage your organization's credentials.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/application_keys".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_keys_by_attribute, + "filter": filter_application_keys, + "filter[created_at][start]": created_after_date, + "filter[created_at][end]": created_before_date, + "include": include_related_resource, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_datadog_app_key( + context: ToolContext, + application_key_id: Annotated[str, "The unique ID of the Datadog application key to delete."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteApplicationKey'."]: + """Deletes an application key in Datadog. + + Use this tool to delete an existing application key in Datadog when it is no longer needed or if security requires its removal.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=application_key_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_application_key( + context: ToolContext, + application_key_id: Annotated[ + str, "The unique identifier for the application key to retrieve details from Datadog." + ], + include_related_resource: Annotated[ + str | None, + "Resource path for related resources to include in the response. Currently, only `owned_by` is supported.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetApplicationKey'."]: + """Retrieve an application key for your organization from Datadog. + + Use this tool to obtain information about a specific application key in your Datadog account. This can be useful for managing and auditing access keys.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=application_key_id + ), + method="GET", + params=remove_none_values({"include": include_related_resource}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_datadog_app_key( + context: ToolContext, + app_key_id: Annotated[str, "The unique ID of the Datadog application key to be edited."], + application_key_id: Annotated[ + str, "The unique identifier for the Datadog application key that needs to be updated." + ], + application_key_name: Annotated[ + str | None, "Name of the application key to be updated." + ] = None, + application_key_scopes: Annotated[ + list[str] | None, + "Array of scopes to grant the application key. Each scope is a string specifying a permission level.", # noqa: E501 + ] = None, + application_keys_resource_type: Annotated[ + str, "Fixed value for the resource type, which should always be 'application_keys'." + ] = "application_keys", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateApplicationKey'."]: + """Edit a Datadog application key by ID. + + Use this tool to update details of a specific Datadog application key by providing its ID. Useful for modifying configurations or permissions of the application key.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"name": application_key_name, "scopes": application_key_scopes}, + "id": app_key_id, + "type": application_keys_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=application_key_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_audit_logs( + context: ToolContext, + audit_logs_search_query: Annotated[ + str | None, "Search query using Audit Logs syntax to filter events." + ] = None, + cursor_for_following_results: Annotated[ + str | None, + "Cursor to fetch subsequent pages of results. Use the cursor from the previous query's response.", # noqa: E501 + ] = None, + max_event_timestamp: Annotated[ + str | None, "Specify the maximum timestamp for requested events in ISO 8601 format." + ] = None, + max_events_per_response: Annotated[ + int | None, "Specifies the maximum number of events to return in the response." + ] = 10, + sort_order_of_events: Annotated[ + str | None, + "Specify the order of events in the results. Use 'timestamp' for ascending and '-timestamp' for descending order.", # noqa: E501 + ] = None, + start_time_filter: Annotated[ + str | None, + "Specify the minimum timestamp for requested events in the format YYYY-MM-DDTHH:MM:SSZ.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAuditLogs'."]: + """Retrieve events matching an Audit Logs search query. + + This tool calls the Datadog API to retrieve audit log events that match a specified search query. It provides the latest events 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="https://{datadog_base_url}/api/v2/audit/events".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": audit_logs_search_query, + "filter[from]": start_time_filter, + "filter[to]": max_event_timestamp, + "sort": sort_order_of_events, + "page[cursor]": cursor_for_following_results, + "page[limit]": max_events_per_response, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_audit_logs( + context: ToolContext, + audit_logs_search_query: Annotated[ + str | None, + "A string representing the search query following the Audit Logs search syntax to filter the logs.", # noqa: E501 + ] = "*", + max_events_limit: Annotated[ + int | None, + "Specify the maximum number of events to include in the response, enabling efficient pagination.", # noqa: E501 + ] = 10, + maximum_time_for_requested_events: Annotated[ + str | None, + "Maximum time for the requested events. Supports date, math, and regular timestamps (in milliseconds).", # noqa: E501 + ] = "now", + minimum_time: Annotated[ + str | None, + "Minimum time for the requested events. Accepts date, math, or timestamps in milliseconds.", + ] = "now-15m", + pagination_cursor: Annotated[ + str | None, "Cursor for retrieving subsequent pages of audit log results." + ] = None, + sort_parameter: Annotated[ + str | None, + "Sort events by timestamp. Use 'timestamp' for ascending, '-timestamp' for descending.", + ] = None, + time_offset_seconds: Annotated[ + int | None, + "Time offset in seconds to apply to the query, adjusting the timeframe of the log search.", + ] = None, + timezone: Annotated[ + str | None, + "Specify the timezone for the query, using GMT, UTC, an offset like UTC+1, or a Timezone Database identifier like America/New_York.", # noqa: E501 + ] = "UTC", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchAuditLogs'."]: + """Retrieve audit logs events based on a search query. + + Use this tool to filter and search through Datadog audit logs events using complex queries. Results are paginated.""" # noqa: E501 + request_data = remove_none_values({ + "filter": { + "from": minimum_time, + "query": audit_logs_search_query, + "to": maximum_time_for_requested_events, + }, + "options": {"time_offset": time_offset_seconds, "timezone": timezone}, + "page": {"cursor": pagination_cursor, "limit": max_events_limit}, + "sort": sort_parameter, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/audit/events/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_authn_mappings( + context: ToolContext, + filter_authn_mappings: Annotated[ + str | None, + "Filter all authentication mappings using a specific string to refine the results.", + ] = None, + filter_by_resource_type: Annotated[ + str | None, + "Filter results by mapping resource type. Can be 'role' or 'team'. Defaults to 'role'.", + ] = None, + page_number: Annotated[ + int | None, "The specific page number to return from the list of AuthN Mappings." + ] = 0, + page_size: Annotated[ + int | None, "Number of results per page, with a maximum value of 100." + ] = 10, + sort_authn_mappings_by: Annotated[ + str | None, + "Sort AuthN Mappings by the specified field. Options include fields like created_at, role_id, saml_assertion_attribute_id, etc. Prefix with '-' for descending order.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAuthNMappings'."]: + """Retrieve all AuthN Mappings in the organization. + + Use this tool to obtain a comprehensive list of all authentication mappings within your organization using Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/authn_mappings".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_authn_mappings_by, + "filter": filter_authn_mappings, + "resource_type": filter_by_resource_type, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_authn_mapping( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateAuthNMapping'."]: + """Creates a new AuthN Mapping in Datadog. + + This tool calls the Datadog API to create a new AuthN Mapping. It should be used when you need to set up or configure authentication mappings in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEAUTHNMAPPING_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEAUTHNMAPPING_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["CREATEAUTHNMAPPING_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/authn_mappings".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEAUTHNMAPPING_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_authn_mapping( + context: ToolContext, + authn_mapping_uuid: Annotated[ + str, "The unique identifier (UUID) of the AuthN Mapping to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteAuthNMapping'."]: + """Delete an AuthN Mapping using its UUID. + + Use this tool to delete a specific AuthN Mapping by providing its unique identifier (UUID).""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/authn_mappings/{authn_mapping_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + authn_mapping_id=authn_mapping_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_authn_mapping( + context: ToolContext, + authn_mapping_uuid: Annotated[str, "The UUID of the AuthN Mapping to retrieve."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAuthNMapping'."]: + """Retrieve an AuthN Mapping by its UUID. + + Use this tool to obtain details of a specific AuthN Mapping in Datadog by providing its UUID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/authn_mappings/{authn_mapping_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + authn_mapping_id=authn_mapping_uuid, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_authn_mapping( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + authn_mapping_uuid: Annotated[ + str | None, + "The UUID of the AuthN Mapping to edit. 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 'UpdateAuthNMapping'."]: + """Edit an AuthN Mapping in Datadog. + + This tool allows editing an authentication mapping in Datadog. It should be called when modifications to an existing AuthN Mapping 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 parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["EDITAUTHNMAPPING_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not authn_mapping_uuid: + missing_params.append(("authn_mapping_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["EDITAUTHNMAPPING_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["EDITAUTHNMAPPING_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/authn_mappings/{authn_mapping_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + authn_mapping_id=authn_mapping_uuid, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EDITAUTHNMAPPING_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_cases( + context: ToolContext, + order_ascending: Annotated[ + bool | None, "Set to true for ascending order; false for descending." + ] = False, + page_number: Annotated[ + int | None, "The specific page number to return in the search results." + ] = 0, + page_size: Annotated[ + int | None, "The number of results per page, with a maximum value of 100." + ] = 10, + search_query: Annotated[ + str | None, + "The search query to filter cases. Use keywords or phrases to specify your search criteria.", # noqa: E501 + ] = None, + sort_by_field: Annotated[ + str | None, + "Specify the field to sort by. Options are 'created_at', 'priority', or 'status'.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchCases'."]: + """Search and retrieve support cases from Datadog. + + Use this tool to search and retrieve support case information from Datadog. It is useful for accessing case details and statuses.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort[field]": sort_by_field, + "filter": search_query, + "sort[asc]": order_ascending, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_support_case( + context: ToolContext, + case_title: Annotated[ + str, + "The title of the support case to be created. It should clearly summarize the issue or request.", # noqa: E501 + ], + case_type_uuid: Annotated[ + str, + "UUID representing the case type. Provide a valid UUID to specify the type of case being created.", # noqa: E501 + ], + assignee_resource_type: Annotated[ + str | None, "The type of resource for the assignee, usually 'user'." + ] = "user", + assignee_user_id: Annotated[ + str | None, + "A unique identifier for the user assigned to the case. Typically a UUID string.", + ] = None, + case_description: Annotated[ + str | None, + "A detailed description of the support case. Include all relevant information about the issue or request.", # noqa: E501 + ] = None, + case_priority: Annotated[ + str | None, + "The priority of the support case. Valid values are NOT_DEFINED, P1, P2, P3, P4, P5.", + ] = "NOT_DEFINED", + case_resource_type: Annotated[ + str, 'Specifies the type of resource being created. Always use "case" for this argument.' + ] = "case", + project_id: Annotated[ + str | None, "Provide the unique identifier of the project related to the support case." + ] = None, + project_resource_type: Annotated[ + str | None, "Specifies the project resource type. Must be 'project'." + ] = "project", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCase'."]: + """Create a new support case in Datadog. + + Use this tool to create a new support case in Datadog. Useful for reporting issues or requesting assistance.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "description": case_description, + "priority": case_priority, + "title": case_title, + "type_id": case_type_uuid, + }, + "relationships": { + "assignee": {"data": {"id": assignee_user_id, "type": assignee_resource_type}}, + "project": {"data": {"id": project_id, "type": project_resource_type}}, + }, + "type": case_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_all_projects( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetProjects'."]: + """Retrieve a list of all projects from Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/projects".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_project( + context: ToolContext, + project_key: Annotated[str, "The unique key for the project. Cannot use the value 'CASE'."], + project_name: Annotated[ + str, "Specify the name of the project to be created. It should be a descriptive string." + ], + project_resource_type: Annotated[ + str, "Specifies the project resource type, which must be 'project'." + ] = "project", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateProject'."]: + """Create a new project in the system. + + Use this tool to initiate and create a new project effectively. It communicates with the Datadog service to set up the project environment.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"key": project_key, "name": project_name}, + "type": project_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/projects".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_project( + context: ToolContext, + project_id: Annotated[str, "The unique identifier (UUID) of the project to be removed."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteProject'."]: + """Remove a project using its ID. + + Use this tool to remove a project by providing the project's ID to ensure it is no longer available 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="https://{datadog_base_url}/api/v2/cases/projects/{project_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), project_id=project_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_project_details( + context: ToolContext, + project_uuid: Annotated[ + str, "The unique identifier (UUID) of the project for which details are required." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetProject'."]: + """Retrieve details of a specific project using project ID. + + Use this tool to obtain comprehensive details about a particular project by providing the project's ID, utilizing the Datadog API.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/projects/{project_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), project_id=project_uuid + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def retrieve_support_case_types( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAllCaseTypes'."]: + """Retrieves all available support case types from Datadog. + + This tool should be called to get a complete list of support case types available in Datadog. Useful for understanding the types of support cases that can be submitted.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/types".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_case_type_in_datadog( + context: ToolContext, + case_type_name: Annotated[str, "Specify the name of the case type to be created in Datadog."], + case_type_deleted_timestamp: Annotated[ + str | None, + "Timestamp indicating when the case type was deleted. Format should be a valid ISO 8601 string.", # noqa: E501 + ] = None, + case_type_description: Annotated[ + str | None, "A brief textual description of the case type to be created in Datadog." + ] = None, + case_type_emoji: Annotated[ + str | None, "Emoji representing the case type. Use a short, descriptive Unicode emoji." + ] = None, + case_type_resource_type: Annotated[ + str, "Specify the resource type for the case. Must be 'case_type'." + ] = "case_type", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCaseType'."]: + """Initiate the creation of a new case type in Datadog. + + Use this tool to create a new case type in Datadog, enabling structured classification and management of cases within the platform.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "deleted_at": case_type_deleted_timestamp, + "description": case_type_description, + "emoji": case_type_emoji, + "name": case_type_name, + }, + "type": case_type_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/types".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_all_custom_attributes( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAllCustomAttributes'."]: + """Retrieve all custom attributes for cases in Datadog. + + Use this tool to fetch all the custom attributes associated with cases in Datadog. This can be useful for understanding the different custom data fields available for case management.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/types/custom_attributes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_case_type( + context: ToolContext, + case_type_uuid: Annotated[str, "The unique identifier (UUID) of the case type to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCaseType'."]: + """Delete a specific case type in Datadog. + + Use this tool to delete a specific case type by providing the case type ID. This is useful for managing and organizing case types within Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/types/{case_type_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_type_id=case_type_uuid + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_custom_attribute_configs( + context: ToolContext, + case_type_uuid: Annotated[ + str, "UUID for the case type to retrieve its custom attribute configurations." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetAllCustomAttributeConfigsByCaseType'." +]: + """Retrieve all custom attribute configurations for a case type. + + Use this tool to fetch all custom attribute configurations associated with a specific case type. Ideal for understanding or managing attributes for various case types.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/types/{case_type_id}/custom_attributes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_type_id=case_type_uuid + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_custom_attribute_config( + context: ToolContext, + allow_multiple_values: Annotated[ + bool, "Indicates if multiple values can be set for the custom attribute." + ], + case_type_uuid: Annotated[ + str, "UUID of the case type for which the custom attribute config is to be created." + ], + custom_attribute_display_name: Annotated[str, "The display name for the custom attribute."], + custom_attribute_key: Annotated[ + str, + "A string key used to search for the custom attribute. This is the identifier for the attribute.", # noqa: E501 + ], + custom_attribute_type: Annotated[ + str, "Type of the custom attribute. Options: 'URL', 'TEXT', or 'NUMBER'." + ], + custom_attribute_description: Annotated[ + str | None, + "Detailed description for the custom attribute. This helps define the attribute's purpose and use.", # noqa: E501 + ] = None, + custom_attributes_config_type: Annotated[ + str, + "Specifies the JSON:API resource type for the custom attributes configuration. Must be 'custom_attribute'.", # noqa: E501 + ] = "custom_attribute", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCustomAttributeConfig'."]: + """Create a custom attribute configuration for a specific case type. + + Use this tool to create a custom attribute configuration in Datadog for a specified case type, enhancing data categorization and organization.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "description": custom_attribute_description, + "display_name": custom_attribute_display_name, + "is_multi": allow_multiple_values, + "key": custom_attribute_key, + "type": custom_attribute_type, + }, + "type": custom_attributes_config_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/types/{case_type_id}/custom_attributes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_type_id=case_type_uuid + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_custom_attribute_config( + context: ToolContext, + case_type_uuid: Annotated[ + str, + "The UUID of the case type for which the custom attribute configuration should be deleted.", + ], + custom_attribute_uuid: Annotated[str, "The UUID of the case custom attribute to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCustomAttributeConfig'."]: + """Deletes a custom attribute configuration for a case type. + + Use this tool to delete a specified custom attribute configuration from a case type in Datadog. It should be called when you need to remove an attribute configuration identified by a specific `case_type_id` and `custom_attribute_id`. Returns a confirmation of the deletion.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/types/{case_type_id}/custom_attributes/{custom_attribute_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + case_type_id=case_type_uuid, + custom_attribute_id=custom_attribute_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_case_details( + context: ToolContext, + case_identifier: Annotated[ + str, + "The unique identifier for the case, either a UUID or a specific key, required to retrieve case details.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCase'."]: + """Retrieve detailed information for a specific case. + + This tool retrieves the details of a case using its unique identifier, `case_id`. It should be called when specific information about a case is needed, such as for review, analysis, or reporting.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def archive_case( + context: ToolContext, + case_unique_id: Annotated[ + str, "The unique identifier or key of the case to be archived in Datadog." + ], + case_resource_type: Annotated[ + str, "Specify 'case' as the resource type to identify the case resource." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ArchiveCase'."]: + """Archive a specific case in Datadog. + + This tool is used to archive a case in Datadog by specifying the case ID. Call this tool when you need to move a case to the archive for record-keeping or compliance.""" # noqa: E501 + request_data = remove_none_values({"data": {"type": case_resource_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/archive".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_unique_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def assign_case_to_user( + context: ToolContext, + assignee_user_id: Annotated[str, "The UUID of the user to whom the case will be assigned."], + case_id: Annotated[str, "The unique identifier (UUID or key) of the case to be assigned."], + case_resource_type: Annotated[ + str, "Specify the resource type. Must be set to 'case'." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AssignCase'."]: + """Assign a case to a specific user. + + Use this tool to assign a case to a specific user by providing the case ID. It should be called when you need to allocate a case to an appropriate team member or user.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"assignee_id": assignee_user_id}, "type": case_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/assign".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_case_attributes( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + case_identifier: Annotated[ + str | None, + "The unique identifier or key for the case 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 'UpdateAttributes'."]: + """Update attributes of a specific case. + + Use this tool to update the attributes of a specific case in Datadog by providing the case ID and new attribute values. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATECASEATTRIBUTES_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not case_identifier: + missing_params.append(("case_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECASEATTRIBUTES_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["UPDATECASEATTRIBUTES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/attributes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECASEATTRIBUTES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_comment_to_case( + context: ToolContext, + case_identifier: Annotated[ + str, "The unique identifier (UUID or key) for the case to which the comment will be added." + ], + comment_message: Annotated[str, "The message content to be added as a comment on the case."], + case_resource_type: Annotated[ + str, "Specify the type of resource, always set to 'case'." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CommentCase'."]: + """Add a comment to a specific case in Datadog. + + Use this tool to post a comment to a particular case within the Datadog system by providing the case ID.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"comment": comment_message}, "type": case_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/comment".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_case_comment( + context: ToolContext, + case_identifier: Annotated[ + str, "The unique identifier or key of the case for which the comment will be deleted." + ], + timeline_cell_uuid: Annotated[ + str, + "The UUID of the timeline cell containing the comment to be deleted. Required for specifying the exact comment.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCaseComment'."]: + """Deletes a specific comment from a case. + + Use this tool to delete a comment from a specified case by providing the case and comment identifiers. It is useful for managing and maintaining relevant information within cases by removing unnecessary or outdated comments.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/comment/{cell_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + case_id=case_identifier, + cell_id=timeline_cell_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_case_custom_attribute( + context: ToolContext, + case_custom_attribute_key: Annotated[ + str, "The key of the custom attribute to be removed from a case." + ], + case_identifier: Annotated[ + str, + "The unique identifier or key of the case from which the custom attribute is to be deleted.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCaseCustomAttribute'."]: + """Removes a custom attribute from a specified case. + + This tool is used to delete a custom attribute from a specific case in Datadog. It should be called when you need to remove a particular custom attribute key from a case.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/custom_attributes/{custom_attribute_key}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + case_id=case_identifier, + custom_attribute_key=case_custom_attribute_key, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_case_custom_attribute( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + case_identifier: Annotated[ + str | None, + "The UUID or key of the case to be updated. This identifies the specific case in Datadog. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + custom_attribute_key: Annotated[ + str | None, + "The key for the custom attribute of the case to be updated. Provide the exact key name to ensure accurate updates. 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 'UpdateCaseCustomAttribute'."]: + """Update a custom attribute for a specific case in Datadog. + + Use this tool to update the custom attribute of a specific case by providing the case ID and the custom attribute key in Datadog. It should be called when you need to modify the properties of an existing case. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATECASECUSTOMATTRIBUTE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not case_identifier: + missing_params.append(("case_identifier", "path")) + if not custom_attribute_key: + missing_params.append(("custom_attribute_key", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECASECUSTOMATTRIBUTE_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["UPDATECASECUSTOMATTRIBUTE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/custom_attributes/{custom_attribute_key}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + case_id=case_identifier, + custom_attribute_key=custom_attribute_key, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECASECUSTOMATTRIBUTE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_case_description( + context: ToolContext, + case_uuid_or_key: Annotated[ + str, + "The unique identifier (UUID or key) for the specific case you want to update in Datadog.", + ], + new_case_description: Annotated[ + str, + "Provide the new description text for the case you wish to update. This replaces the current case description.", # noqa: E501 + ], + case_resource_type: Annotated[ + str, "Specify the type of resource for the case. It must be 'case'." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCaseDescription'."]: + """Update the description of a case in Datadog. + + Use this tool to modify the description of a specific case in Datadog by providing the case ID and new description details.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"description": new_case_description}, "type": case_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/description".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_uuid_or_key + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_case_priority( + context: ToolContext, + case_identifier: Annotated[str, "The unique identifier for the case, either UUID or key."], + case_priority: Annotated[ + str, + "Specify the priority level of the case. Valid options are: 'NOT_DEFINED', 'P1', 'P2', 'P3', 'P4', 'P5'.", # noqa: E501 + ] = "NOT_DEFINED", + case_resource_type: Annotated[ + str, "Specifies the type of resource, should be set to 'case'." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdatePriority'."]: + """Update the priority of a specific case. + + This tool updates the priority level of a given case in the system. It should be called when a change in priority is required for case management.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"priority": case_priority}, "type": case_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/priority".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_case_status( + context: ToolContext, + case_status: Annotated[ + str, "Specify the status of the case. Valid values are 'OPEN', 'IN_PROGRESS', 'CLOSED'." + ], + case_uuid_or_key: Annotated[ + str, "The unique identifier or key for the case to update its status in Datadog." + ], + case_resource_type: Annotated[ + str, "Specifies the resource type of the case. Must be 'case'." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateStatus'."]: + """Update the status of a specific case in Datadog. + + Use this tool to change the status of an existing case in Datadog. It should be called when you need to update a case's progress or condition to a new state.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"status": case_status}, "type": case_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/status".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_uuid_or_key + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_case_title( + context: ToolContext, + case_identifier: Annotated[ + str, "The unique identifier (UUID or key) of the case whose title you want to update." + ], + new_case_title: Annotated[str, "The new title for the case to be updated."], + case_resource_type: Annotated[ + str, "Specify the type of the case resource, which should be 'case'." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCaseTitle'."]: + """Update the title of a specific case by ID. + + Use this tool to change the title of a case in Datadog by providing the specific case ID.""" + request_data = remove_none_values({ + "data": {"attributes": {"title": new_case_title}, "type": case_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/title".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def unarchive_case( + context: ToolContext, + case_identifier: Annotated[ + str, "The unique identifier (UUID or key) of the case to be unarchived." + ], + case_resource_type: Annotated[str, "The resource type of the case, must be 'case'."] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UnarchiveCase'."]: + """Unarchive a specific support case in Datadog. + + Use this tool to restore a previously archived support case based on its ID. This is helpful when you need to reactivate or view the details of a case that was archived.""" # noqa: E501 + request_data = remove_none_values({"data": {"type": case_resource_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/unarchive".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def unassign_case( + context: ToolContext, + case_identifier: Annotated[ + str, "The unique UUID or key representing the case to be unassigned in Datadog." + ], + case_resource_type: Annotated[ + str, "Specifies the resource type of the case. Must be set to 'case'." + ] = "case", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UnassignCase'."]: + """Unassigns a case from its current assignee. + + Use this tool to unassign a specific case from its current assignee within Datadog. This is helpful when you want to reassign or close a support case.""" # noqa: E501 + request_data = remove_none_values({"data": {"type": case_resource_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cases/{case_id}/unassign".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), case_id=case_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_software_catalog_entities( + context: ToolContext, + exclude_snapshotted_entities: Annotated[ + str | None, "Set to `true` to exclude entities that are snapshotted." + ] = None, + filter_by_kind: Annotated[ + str | None, "Filter entities by specifying the kind of entity, provided as a string." + ] = None, + filter_by_name: Annotated[str | None, "Filter entities by specifying their name."] = None, + filter_by_owner: Annotated[ + str | None, "Filter the entities by their owner using a specific owner name or ID." + ] = None, + filter_by_reference: Annotated[ + str | None, "Filter entities by their specific reference string." + ] = None, + filter_by_relation_type: Annotated[ + str | None, + "Specify the relation type to filter entities. Options include: 'RelationTypeOwns', 'RelationTypeOwnedBy', 'RelationTypeDependsOn', 'RelationTypeDependencyOf', 'RelationTypePartsOf', 'RelationTypeHasPart', 'RelationTypeOtherOwns', 'RelationTypeOtherOwnedBy', 'RelationTypeImplementedBy', 'RelationTypeImplements'.", # noqa: E501 + ] = None, + filter_by_uuid: Annotated[ + str | None, + "Filter entities by their UUID. Provide the UUID as a string to retrieve specific entities.", # noqa: E501 + ] = None, + include_relationship_data: Annotated[ + str | None, + "Specify which relationship data to include, such as 'schema', 'raw_schema', 'oncall', 'incident', or 'relation'.", # noqa: E501 + ] = None, + max_entities_per_page: Annotated[ + int | None, "Specifies the maximum number of entities to return per page in the response." + ] = 100, + pagination_offset: Annotated[ + int | None, "The starting point for pagination of the returned list of entities." + ] = 0, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCatalogEntity'."]: + """Retrieve entities from the software catalog. + + Use this tool to get a list of entities from the software catalog, ideal for managing or integrating software components.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/catalog/entity".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[offset]": pagination_offset, + "page[limit]": max_entities_per_page, + "filter[id]": filter_by_uuid, + "filter[ref]": filter_by_reference, + "filter[name]": filter_by_name, + "filter[kind]": filter_by_kind, + "filter[owner]": filter_by_owner, + "filter[relation][type]": filter_by_relation_type, + "filter[exclude_snapshot]": exclude_snapshotted_entities, + "include": include_relationship_data, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def manage_software_catalog_entity( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpsertCatalogEntity'."]: + """Create or update entities in the Software Catalog. + + Use this tool to either create a new entity or update an existing one within the Software Catalog in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "MANAGESOFTWARECATALOGENTITY_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MANAGESOFTWARECATALOGENTITY_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["MANAGESOFTWARECATALOGENTITY_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/catalog/entity".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MANAGESOFTWARECATALOGENTITY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_catalog_entity( + context: ToolContext, + catalog_entity_identifier: Annotated[ + str, "The UUID or Entity Reference for the entity to be deleted from the Software Catalog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCatalogEntity'."]: + """Delete a single entity from the Software Catalog. + + This tool deletes a specified entity in the Software Catalog using its entity ID. Call this tool when you need to remove an entity from the Datadog Software Catalog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/catalog/entity/{entity_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + entity_id=catalog_entity_identifier, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_catalog_kinds( + context: ToolContext, + filter_entity_name: Annotated[ + str | None, "Filter entities in the Software Catalog by their name using a string value." + ] = None, + filter_uuid: Annotated[str | None, "Filter entities by their UUID in the catalog."] = None, + max_kinds_in_response: Annotated[ + int | None, "Specify the maximum number of entity kinds to be returned in the response." + ] = 100, + page_offset: Annotated[ + int | None, + "Specific offset to use as the beginning of the returned page. It determines where the data will start from in the list.", # noqa: E501 + ] = 0, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCatalogKind'."]: + """Retrieve entity kinds from the Software Catalog. + + This tool calls the Datadog API to retrieve a list of entity kinds from the Software Catalog. It should be used when you need information about the types of entities available in the catalog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/catalog/kind".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[offset]": page_offset, + "page[limit]": max_kinds_in_response, + "filter[id]": filter_uuid, + "filter[name]": filter_entity_name, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_software_catalog_kind( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpsertCatalogKind'."]: + """Create or update kinds in the Software Catalog. + + Use this tool to add new kinds or update existing ones in the Datadog Software Catalog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATESOFTWARECATALOGKIND_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESOFTWARECATALOGKIND_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["UPDATESOFTWARECATALOGKIND_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/catalog/kind".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESOFTWARECATALOGKIND_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_catalog_kind( + context: ToolContext, + catalog_kind_identifier: Annotated[ + str, "The unique identifier for the kind to delete from the Software Catalog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCatalogKind'."]: + """Delete a kind from the Software Catalog. + + Use this tool to delete a specific kind from the Software Catalog using its identifier. This is useful for managing and organizing the catalog contents by removing obsolete 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="https://{datadog_base_url}/api/v2/catalog/kind/{kind_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), kind_id=catalog_kind_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_catalog_entity_relations( + context: ToolContext, + filter_by_first_entity_reference: Annotated[ + str | None, "Filter relations by the reference of the first entity in the relation." + ] = None, + filter_relations_by_second_entity_reference: Annotated[ + str | None, "Filter relations by the reference of the second entity in the relation." + ] = None, + include_relationship_data: Annotated[ + str | None, "Specify which relationship data to include: 'entity' or 'schema'." + ] = None, + maximum_relations_per_page: Annotated[ + int | None, "Maximum number of relations to include in the response." + ] = 100, + page_offset: Annotated[int | None, "The starting offset for the returned page of results."] = 0, + relation_type_filter: Annotated[ + str | None, + "Filter relations by type using predefined relation types such as 'RelationTypeOwns', 'RelationTypeDependsOn', etc.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCatalogRelation'."]: + """Retrieve entity relations from the software catalog. + + This tool retrieves a list of entity relations from the Datadog Software Catalog. It's useful for understanding connections and dependencies between different software entities.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/catalog/relation".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[offset]": page_offset, + "page[limit]": maximum_relations_per_page, + "filter[type]": relation_type_filter, + "filter[from_ref]": filter_by_first_entity_reference, + "filter[to_ref]": filter_relations_by_second_entity_reference, + "include": include_relationship_data, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def aggregate_pipeline_events( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AggregateCIAppPipelineEvents'."]: + """Aggregate CI pipeline event metrics and timeseries. + + This tool aggregates CI Visibility pipeline events into buckets of computed metrics and timeseries. Use it when you need to analyze CI pipeline performances and trends. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "AGGREGATEPIPELINEEVENTS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["AGGREGATEPIPELINEEVENTS_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["AGGREGATEPIPELINEEVENTS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/ci/pipelines/analytics/aggregate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["AGGREGATEPIPELINEEVENTS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_ci_pipeline_events( + context: ToolContext, + cursor_for_next_page: Annotated[ + str | None, "Cursor to paginate through results. Use the cursor from the previous query." + ] = None, + event_order: Annotated[ + str | None, + "Specifies the order of CI pipeline events in the results. Use 'timestamp' for ascending and '-timestamp' for descending order.", # noqa: E501 + ] = None, + max_events_response: Annotated[ + int | None, + "Specify the maximum number of events to include in the response. Accepts an integer value.", # noqa: E501 + ] = 10, + maximum_timestamp: Annotated[ + str | None, + "Specify the maximum timestamp for the requested events. Format as an ISO 8601 string (e.g., 2023-10-01T00:00:00Z).", # noqa: E501 + ] = None, + min_timestamp: Annotated[ + str | None, + "Specify the earliest time for the events you want to retrieve. Use a timestamp string.", + ] = None, + search_query: Annotated[ + str | None, + "A search query using Datadog's log syntax to filter CI pipeline events. Specify criteria to refine results.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCIAppPipelineEvents'."]: + """Retrieve CI pipeline events based on a search query. + + Use this tool to get a list of continuous integration pipeline events from Datadog that match a specified search query. Results are paginated and similar to how logs are handled, providing insight into your latest pipeline activities.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ci/pipelines/events".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": search_query, + "filter[from]": min_timestamp, + "filter[to]": maximum_timestamp, + "sort": event_order, + "page[cursor]": cursor_for_next_page, + "page[limit]": max_events_response, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_ci_pipeline_events( + context: ToolContext, + filter_to_time: Annotated[ + str | None, + "The maximum time for requested events; supports date, math, and timestamps (in milliseconds).", # noqa: E501 + ] = "now", + max_events_per_page: Annotated[ + int | None, + "Specify the maximum number of events to retrieve in a single response. This limits the number of events returned in one page of results.", # noqa: E501 + ] = 10, + min_time_for_events: Annotated[ + str | None, + "Specify the minimum time for the requested events. Supports date, math expressions, and timestamps in milliseconds.", # noqa: E501 + ] = "now-15m", + pagination_cursor: Annotated[ + str | None, + "Use this to fetch the next set of results by providing the cursor value from the previous query response.", # noqa: E501 + ] = None, + query_time_offset_seconds: Annotated[ + int | None, "The time offset in seconds to apply to the query for event retrieval." + ] = None, + search_query: Annotated[ + str | None, + "The search query using CI Visibility Explorer search syntax to filter pipeline events.", + ] = "*", + sort_events_by: Annotated[ + str | None, + "Defines the order of CI pipeline events by timestamp. Use 'timestamp' for ascending order and '-timestamp' for descending order.", # noqa: E501 + ] = None, + timezone: Annotated[ + str | None, + "Specify the timezone as GMT, UTC, a UTC offset (like UTC+1), or a Timezone Database identifier (e.g., America/New_York).", # noqa: E501 + ] = "UTC", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchCIAppPipelineEvents'."]: + """Retrieve CI pipeline events matching a search query. + + Use this tool to obtain CI Visibility pipeline events that fit a specific search query. It's useful for filtering and searching through pipeline events using complex queries. The results are paginated.""" # noqa: E501 + request_data = remove_none_values({ + "filter": {"from": min_time_for_events, "query": search_query, "to": filter_to_time}, + "options": {"time_offset": query_time_offset_seconds, "timezone": timezone}, + "page": {"cursor": pagination_cursor, "limit": max_events_per_page}, + "sort": sort_events_by, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ci/pipelines/events/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def aggregate_test_metrics( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AggregateCIAppTestEvents'."]: + """Aggregate CI Visibility test events into metrics and timeseries. + + Use this tool to aggregate CI test events into buckets for computed metrics and timeseries insights. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["AGGREGATETESTMETRICS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["AGGREGATETESTMETRICS_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["AGGREGATETESTMETRICS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/ci/tests/analytics/aggregate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["AGGREGATETESTMETRICS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_ci_test_events( + context: ToolContext, + max_events_in_response: Annotated[ + int | None, "Specify the maximum number of CI test events to return in the response." + ] = 10, + max_timestamp: Annotated[ + str | None, "Specify the maximum timestamp for the requested events." + ] = None, + minimum_timestamp: Annotated[ + str | None, + "The minimum timestamp to filter requested events. Format is typically ISO 8601.", + ] = None, + pagination_cursor: Annotated[ + str | None, + "Cursor for fetching the next set of paginated results, provided by the previous query.", + ] = None, + search_query: Annotated[ + str | None, "Search query using log syntax to filter CI Visibility test events." + ] = None, + sort_order: Annotated[ + str | None, + "Specify the order of events by using 'timestamp' for ascending or '-timestamp' for descending.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCIAppTestEvents'."]: + """Retrieve CI test events based on a search query. + + Use this tool to obtain CI Visibility test events from Datadog that match a specified search query. The results are paginated in a manner similar to logs. This can help in reviewing and analyzing the latest test events.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ci/tests/events".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": search_query, + "filter[from]": minimum_timestamp, + "filter[to]": max_timestamp, + "sort": sort_order, + "page[cursor]": pagination_cursor, + "page[limit]": max_events_in_response, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_ci_test_events( + context: ToolContext, + maximum_event_time: Annotated[ + str | None, + "The maximum time for the requested events. Supports date strings, math expressions, or timestamps (in milliseconds).", # noqa: E501 + ] = "now", + maximum_events_in_response: Annotated[ + int | None, + "Specify the maximum number of events to be returned in the response. This limits the size of the result set.", # noqa: E501 + ] = 10, + pagination_cursor: Annotated[ + str | None, + "Cursor for retrieving the next set of paginated results based on previous queries.", + ] = None, + search_query: Annotated[ + str | None, + "The search query using CI Visibility Explorer syntax for filtering test events.", + ] = "*", + sort_order: Annotated[ + str | None, + "Specify the sorting order for events. Use 'timestamp' for ascending or '-timestamp' for descending order.", # noqa: E501 + ] = None, + start_time_filter: Annotated[ + str | None, + "The minimum time for requested events; can be a date, mathematical expression, or timestamp in milliseconds.", # noqa: E501 + ] = "now-15m", + time_offset_seconds: Annotated[ + int | None, + "The time offset, in seconds, to apply to the query for adjusting the search time range.", + ] = None, + timezone: Annotated[ + str | None, + "Specify the timezone as GMT, UTC, a UTC offset (e.g., UTC+1), or a Timezone Database identifier (e.g., America/New_York).", # noqa: E501 + ] = "UTC", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchCIAppTestEvents'."]: + """Retrieve CI Visibility test events with advanced search capabilities. + + Use this tool to obtain CI Visibility test events that match specific search criteria. Ideal for building complex event filtering and searching within Datadog's CI data.""" # noqa: E501 + request_data = remove_none_values({ + "filter": {"from": start_time_filter, "query": search_query, "to": maximum_event_time}, + "options": {"time_offset": time_offset_seconds, "timezone": timezone}, + "page": {"cursor": pagination_cursor, "limit": maximum_events_in_response}, + "sort": sort_order, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ci/tests/events/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_custom_security_framework( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCustomFramework'."]: + """Create a custom security framework in Datadog. + + This tool is used to create a custom security framework in Datadog's cloud security management system. Call this tool when you need to define or customize security protocols and structures. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECUSTOMSECURITYFRAMEWORK_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMSECURITYFRAMEWORK_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["CREATECUSTOMSECURITYFRAMEWORK_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMSECURITYFRAMEWORK_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_custom_framework( + context: ToolContext, + framework_handle: Annotated[ + str, "The unique identifier for the custom framework to be deleted." + ], + framework_version: Annotated[str, "Specify the version of the custom framework to delete."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCustomFramework'."]: + """Delete a custom framework from Datadog. + + This tool deletes a specified custom framework in Datadog's cloud security management system. Use it when you need to remove an existing custom security framework by its handle and version.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + handle=framework_handle, + version=framework_version, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_custom_framework( + context: ToolContext, + framework_handle: Annotated[str, "The unique identifier for the custom framework to retrieve."], + framework_version: Annotated[ + str, + "Specify the version of the framework to retrieve. Use the exact version number or identifier.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCustomFramework'."]: + """Retrieve a specific custom framework by handle and version. + + Use this tool to get details of a specific custom framework in Datadog by providing its handle and version. This is useful for accessing specific configurations or settings within cloud security management frameworks.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + handle=framework_handle, + version=framework_version, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_custom_framework( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + framework_handle: Annotated[ + str | None, + "The unique identifier for the framework to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + framework_version: Annotated[ + str | None, + "Specifies the version of the framework 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 'UpdateCustomFramework'."]: + """Update an existing custom security management framework. + + Use this tool to make changes to an existing custom framework within Datadog's cloud security management. Invoke this when you need to update framework details identified by a specific handle and version. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATECUSTOMFRAMEWORK_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not framework_handle: + missing_params.append(("framework_handle", "path")) + if not framework_version: + missing_params.append(("framework_version", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMFRAMEWORK_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["UPDATECUSTOMFRAMEWORK_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + handle=framework_handle, + version=framework_version, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMFRAMEWORK_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_resource_filters( + context: ToolContext, + cloud_provider_account_id: Annotated[ + str | None, + "Filter resource filters by the cloud provider's account ID. This is valid only when a provider is specified.", # noqa: E501 + ] = None, + cloud_provider_filter: Annotated[ + str | None, + "Specifies the cloud provider to filter resource filters, such as aws, gcp, or azure.", + ] = None, + skip_cache_for_resource_filters: Annotated[ + bool | None, + "Set to true to skip the cache when fetching resource filters. Useful when the latest resource data is needed.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetResourceEvaluationFilters'."]: + """Retrieve Datadog resource evaluation filters. + + Call this tool to obtain a list of resource evaluation filters for cloud security management in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cloud_security_management/resource_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "cloud_provider": cloud_provider_filter, + "account_id": cloud_provider_account_id, + "skip_cache": skip_cache_for_resource_filters, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_resource_filters( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateResourceEvaluationFilters'."]: + """Update resource filters in cloud security management. + + Use this tool to modify resource filters within Datadog's cloud security management. It should be called when you need to change which resources are included or excluded for evaluation. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATERESOURCEFILTERS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERESOURCEFILTERS_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["UPDATERESOURCEFILTERS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cloud_security_management/resource_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERESOURCEFILTERS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_container_images( + context: ToolContext, + filter_tags: Annotated[ + str | None, "Comma-separated list of tags to filter container images by." + ] = None, + group_container_images_by_tags: Annotated[ + str | None, + "Comma-separated list of tags to group container images by. Helps in organizing images based on specified criteria.", # noqa: E501 + ] = None, + max_results_per_page: Annotated[ + int | None, "The maximum number of container image results to return per page." + ] = 1000, + next_page_cursor: Annotated[ + str | None, + "String to query the next page of container image results. Obtain this from the `meta.pagination.next_cursor` in the API response.", # noqa: E501 + ] = None, + sort_container_images_by: Annotated[ + str | None, "Attribute to sort Container Images by, such as 'name' or 'date'." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListContainerImages'."]: + """Retrieve all container images for your organization. + + Use this tool to get a list of all container images associated with your organization. This is useful for monitoring and managing your containerized applications within Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/container_images".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[tags]": filter_tags, + "group_by": group_container_images_by_tags, + "sort": sort_container_images_by, + "page[size]": max_results_per_page, + "page[cursor]": next_page_cursor, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_all_containers( + context: ToolContext, + container_sort_attribute: Annotated[ + str | None, + "Specify the attribute to sort containers by. Common values include 'name', 'creation_date', etc.", # noqa: E501 + ] = None, + filter_by_tags: Annotated[ + str | None, + "Comma-separated list of tags to filter containers by, narrowing down the results based on specified tags.", # noqa: E501 + ] = None, + group_containers_by_tags: Annotated[ + str | None, "Comma-separated list of tags to group containers by." + ] = None, + maximum_results_returned: Annotated[ + int | None, "Maximum number of container results to return per page." + ] = 1000, + pagination_cursor: Annotated[ + str | None, + "A string to query the next page of container results, using the `meta.pagination.next_cursor` from the API response.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListContainers'."]: + """Retrieve all containers within your organization. + + Use this tool to get a comprehensive list of all containers managed by your organization in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/containers".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[tags]": filter_by_tags, + "group_by": group_containers_by_tags, + "sort": container_sort_attribute, + "page[size]": maximum_results_returned, + "page[cursor]": pagination_cursor, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_custom_allocation_rules( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCustomAllocationRules'."]: + """Retrieve all custom allocation rules for the organization. + + Use this tool to obtain a list of all custom allocation rules defined in the organization. It provides details about how costs are allocated according to custom rules in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/arbitrary_rule".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_custom_allocation_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCustomAllocationRule'."]: + """Create a custom allocation rule in Datadog. + + Use this tool to create a custom allocation rule in Datadog with specified filters and allocation strategies. Useful for managing cost allocations with strategies like proportional, even, timeseries, or fixed percentage methods. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMALLOCATIONRULE_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["CREATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cost/arbitrary_rule".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def reorder_custom_allocation_rules( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ReorderCustomAllocationRules'."]: + """Change execution order of custom allocation rules in Datadog. + + Use this tool to reorder custom allocation rules by specifying the complete list of rule IDs in the desired sequence. Lower indices are executed first, so arrange them according to priority. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "REORDERCUSTOMALLOCATIONRULES_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REORDERCUSTOMALLOCATIONRULES_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["REORDERCUSTOMALLOCATIONRULES_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cost/arbitrary_rule/reorder".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REORDERCUSTOMALLOCATIONRULES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_custom_allocation_rule( + context: ToolContext, + custom_allocation_rule_id: Annotated[ + int, "The unique identifier of the custom allocation rule to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCustomAllocationRule'."]: + """Delete an existing custom allocation rule by ID. + + Call this tool to delete an existing custom allocation rule using its ID in Datadog's cost management API.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/arbitrary_rule/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + rule_id=custom_allocation_rule_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_custom_allocation_rule( + context: ToolContext, + custom_allocation_rule_id: Annotated[ + int, "The unique identifier for retrieving a specific custom allocation rule in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCustomAllocationRule'."]: + """Retrieve a custom allocation rule by its ID. + + Call this tool to get detailed information about a specific custom allocation rule using its unique ID. Useful for examining allocation settings in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/arbitrary_rule/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + rule_id=custom_allocation_rule_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_custom_allocation_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + custom_allocation_rule_id: Annotated[ + int | None, + "The unique identifier for the custom allocation rule 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 'UpdateCustomAllocationRule'."]: + """Update custom allocation rules with new filters and strategies. + + This tool updates an existing custom allocation rule in Datadog by modifying filters and allocation strategies. It supports various allocation strategies like PROPORTIONAL, EVEN, TIMESERIES, PERCENT, and USAGE_METRIC. Users should specify strategy methods and filter conditions to redefine the allocation. Appropriate strategy fields and filter operators must be used according to the needs. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not custom_allocation_rule_id: + missing_params.append(("custom_allocation_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATECUSTOMALLOCATIONRULE_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["UPDATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cost/arbitrary_rule/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + rule_id=custom_allocation_rule_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_aws_cur_configs( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCostAWSCURConfigs'."]: + """Retrieve AWS CUR configuration list from Datadog. + + Call this tool to get a list of AWS Cost and Usage Report (CUR) configurations in Datadog when you need to examine or manage AWS cost data integrations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/aws_cur_config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_aws_cur_config( + context: ToolContext, + aws_account_id: Annotated[ + str | None, + "The AWS account ID for which the CUR config is created. This is required to specify which AWS account the configuration applies to.", # noqa: E501 + ] = None, + aws_bucket_name_for_cur: Annotated[ + str | None, "The AWS bucket name used to store the Cost and Usage Report." + ] = None, + aws_cur_config_type: Annotated[ + str, + "Type of AWS CUR config post request. Choose from available options: 'aws_cur_config_post_request'.", # noqa: E501 + ] = "aws_cur_config_post_request", + bucket_region: Annotated[str | None, "The AWS region where the bucket is located."] = None, + excluded_aws_account_ids: Annotated[ + list[str] | None, + "List of AWS account IDs to exclude from the billing dataset. Used when `include_new_accounts` is `true`.", # noqa: E501 + ] = None, + include_new_member_accounts: Annotated[ + bool | None, + "Set to true to automatically include new member accounts by default in your billing dataset.", # noqa: E501 + ] = None, + included_aws_account_ids: Annotated[ + list[str] | None, + "List of AWS account IDs to be included in the billing dataset, used when `include_new_accounts` is `false`.", # noqa: E501 + ] = None, + report_month: Annotated[ + int | None, + "Specify the month for the AWS Cost and Usage Report. Use an integer (1-12) to represent the month.", # noqa: E501 + ] = None, + report_name: Annotated[ + str | None, "The name of the Cost and Usage Report to create for AWS CUR configuration." + ] = None, + report_prefix: Annotated[str | None, "The prefix for the Cost and Usage Report (CUR)."] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCostAWSCURConfig'."]: + """Create an AWS CUR config for Cloud Cost Management. + + Use this tool to create a Cloud Cost Management account for an AWS Cost and Usage Report (CUR) configuration.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "account_filters": { + "excluded_accounts": excluded_aws_account_ids, + "include_new_accounts": include_new_member_accounts, + "included_accounts": included_aws_account_ids, + }, + "account_id": aws_account_id, + "bucket_name": aws_bucket_name_for_cur, + "bucket_region": bucket_region, + "months": report_month, + "report_name": report_name, + "report_prefix": report_prefix, + }, + "type": aws_cur_config_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/aws_cur_config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def archive_cloud_cost_account( + context: ToolContext, + cloud_account_id: Annotated[ + int, "The unique identifier for the Cloud Account to be archived in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCostAWSCURConfig'."]: + """Archive a Cloud Cost Management Account. + + Use this tool to archive a Cloud Cost Management Account in Datadog, specifically for AWS CUR configurations. Useful for managing or removing outdated or unnecessary cost configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/aws_cur_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=cloud_account_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aws_cur_config( + context: ToolContext, + cloud_account_id: Annotated[ + int, + "The unique integer identifier of the AWS cloud account for which to fetch the CUR configuration.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCostAWSCURConfig'."]: + """Retrieve a specific AWS CUR configuration. + + This tool is used to fetch the AWS Cost and Usage Report (CUR) configuration for a specific cloud account ID. It is ideal for users who need to check or audit AWS usage configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/aws_cur_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=cloud_account_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_aws_cur_config_status( + context: ToolContext, + cloud_account_id: Annotated[int, "The ID of the AWS cloud account to configure in Datadog."], + automatic_inclusion_of_new_accounts: Annotated[ + bool | None, + "Set to true to automatically include new member accounts by default in your billing dataset.", # noqa: E501 + ] = None, + aws_cur_config_request_type: Annotated[ + str, + "Specify the type of AWS CUR config Patch Request, usually 'aws_cur_config_patch_request'.", + ] = "aws_cur_config_patch_request", + excluded_aws_account_ids: Annotated[ + list[str] | None, + 'List of AWS account IDs to exclude from the billing dataset when "include_new_accounts" is true.', # noqa: E501 + ] = None, + included_aws_accounts: Annotated[ + list[str] | None, + "List of AWS account IDs to be included in the billing dataset when `include_new_accounts` is `false`.", # noqa: E501 + ] = None, + is_cost_management_enabled: Annotated[ + bool | None, + "Indicates whether the Cloud Cost Management account is enabled. Accepts a boolean value.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCostAWSCURConfig'."]: + """Updates status or configuration of an AWS CUR config. + + Use this tool to update the active/archived status or account filtering settings of an AWS Cost and Usage Report (CUR) configuration in Datadog for a specified cloud account.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "account_filters": { + "excluded_accounts": excluded_aws_account_ids, + "include_new_accounts": automatic_inclusion_of_new_accounts, + "included_accounts": included_aws_accounts, + }, + "is_enabled": is_cost_management_enabled, + }, + "type": aws_cur_config_request_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/aws_cur_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=cloud_account_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_azure_configs( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCostAzureUCConfigs'."]: + """Retrieve Azure configuration list from Datadog. + + Use this tool to obtain a list of Azure configs from Datadog. Useful for viewing or managing current Azure configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/azure_uc_config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_azure_cost_management_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCostAzureUCConfigs'."]: + """Create a Cloud Cost Management account for Azure. + + Use this tool to set up a Cloud Cost Management account for an Azure configuration using Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEAZURECOSTMANAGEMENTACCOUNT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEAZURECOSTMANAGEMENTACCOUNT_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["CREATEAZURECOSTMANAGEMENTACCOUNT_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cost/azure_uc_config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEAZURECOSTMANAGEMENTACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def archive_azure_cost_account( + context: ToolContext, + azure_cloud_account_id: Annotated[ + int, + "The ID of the Azure Cloud Cost Management account to archive. This is necessary to identify which account's configurations will be removed.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCostAzureUCConfig'."]: + """Archive an Azure Cloud Cost Management account in Datadog. + + Use this tool to archive a Cloud Cost Management account associated with Azure in Datadog. This action is irreversible and should be performed when you need to remove cost management configurations for a specific Azure account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/azure_uc_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=azure_cloud_account_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_azure_config( + context: ToolContext, + azure_cloud_account_id: Annotated[ + int, "The unique identifier for the Azure cloud account to retrieve the configuration." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCostAzureUCConfig'."]: + """Retrieve details of a specific Azure configuration. + + This tool is used to get detailed information about a specific Azure configuration using the cloud account ID. It should be called when you need to access the configuration details for Azure within the Datadog service.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/azure_uc_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=azure_cloud_account_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_azure_config_status( + context: ToolContext, + cloud_account_id: Annotated[ + int, + "The identifier for the Azure Cloud account whose configuration status is being updated.", + ], + azure_config_patch_request_type: Annotated[ + str, + "Specify the type of Azure config Patch Request, typically 'azure_uc_config_patch_request'.", # noqa: E501 + ] = "azure_uc_config_patch_request", + enable_cloud_cost_management: Annotated[ + bool | None, "Set to true to enable the Cloud Cost Management account, false to disable it." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCostAzureUCConfigs'."]: + """Update status of Azure config to active or archived. + + This tool updates the status of a specified Azure configuration to either active or archived. It should be called when there is a need to change the operational state of an Azure config.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"is_enabled": enable_cloud_cost_management}, + "type": azure_config_patch_request_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/azure_uc_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=cloud_account_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def manage_budget( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpsertBudget'."]: + """Create or update a budget in Datadog. + + This tool allows you to create a new budget or update an existing budget using the Datadog API. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["MANAGEBUDGET_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["MANAGEBUDGET_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["MANAGEBUDGET_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cost/budget".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MANAGEBUDGET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_budget( + context: ToolContext, + budget_id: Annotated[ + str, + "The unique identifier for the budget to be deleted. This ID is required to specify which budget to remove from the system.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteBudget'."]: + """Delete a specified budget. + + Use this tool to delete a budget by its ID. It should be called when you want to remove an existing budget 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="https://{datadog_base_url}/api/v2/cost/budget/{budget_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), budget_id=budget_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_budget_details( + context: ToolContext, + budget_identifier: Annotated[ + str, "The unique identifier for the budget to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetBudget'."]: + """Retrieve detailed information about a specific budget. + + Use this tool to get detailed information about a budget by providing the budget ID. Ideal for tracking budget allocations and spending.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/budget/{budget_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), budget_id=budget_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_budgets( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListBudgets'."]: + """Fetch a list of budgets from Datadog. + + Use this tool to retrieve the list of budgets set up in Datadog, including their details and configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/budgets".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_custom_costs_files( + context: ToolContext, + filter_by_file_status: Annotated[ + str | None, + "Filter the custom costs files by their status. Accepts a string value representing the status to filter by, such as 'active', 'inactive', or 'pending'.", # noqa: E501 + ] = None, + page_number: Annotated[ + int | None, "The page number to retrieve for pagination in the list of custom costs files." + ] = None, + pagination_page_size: Annotated[ + int | None, "The number of custom cost files to return per page for pagination." + ] = 100, + sort_key: Annotated[ + str | None, + "Specify the key for sorting the list, with an optional '-' prefix for descending order.", + ] = "created_at", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCustomCostsFiles'."]: + """Retrieve a list of custom costs files from Datadog. + + Use this tool to access and list custom costs files stored in Datadog. It is useful when you need to audit or analyze custom cost data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/custom_costs".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[number]": page_number, + "page[size]": pagination_page_size, + "filter[status]": filter_by_file_status, + "sort": sort_key, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def upload_custom_costs_file( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UploadCustomCostsFile'."]: + """Upload a custom costs file to Datadog. + + This tool uploads a custom costs file to Datadog. Use it when you need to update or input new cost data into the system. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPLOADCUSTOMCOSTSFILE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPLOADCUSTOMCOSTSFILE_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["UPLOADCUSTOMCOSTSFILE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/cost/custom_costs".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPLOADCUSTOMCOSTSFILE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_custom_cost_file( + context: ToolContext, + custom_cost_file_id: Annotated[ + str, "The unique identifier of the custom costs file to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCustomCostsFile'."]: + """Delete a specified custom costs file in Datadog. + + Use this tool to delete a specific custom costs file by providing its file ID. It can be called when a user needs to manage their cost files by removing outdated or unnecessary custom cost entries in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/custom_costs/{file_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), file_id=custom_cost_file_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_custom_costs_file( + context: ToolContext, + file_identifier: Annotated[ + str, "A unique identifier for the Custom Costs file to be retrieved from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCustomCostsFile'."]: + """Fetch a specified Custom Costs file by file ID from Datadog. + + Use this tool to retrieve a specific Custom Costs file from Datadog by providing the file ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/custom_costs/{file_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), file_id=file_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_gcp_usage_cost_configs( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCostGCPUsageCostConfigs'."]: + """Retrieve Google Cloud Usage Cost configurations from Datadog. + + Call this tool to obtain a list of Google Cloud Usage Cost configurations in your Datadog account. Useful for monitoring and managing GCP cost settings.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/gcp_uc_config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_gcp_cost_management_account( + context: ToolContext, + gcp_bucket_name: Annotated[ + str | None, "The name of the Google Cloud bucket where the Usage Cost exports are stored." + ] = None, + gcp_usage_cost_export_dataset_name: Annotated[ + str | None, "The dataset name used for exporting the Google Cloud Usage Cost report." + ] = None, + gcp_usage_cost_report_name: Annotated[ + str | None, "The name of the Google Cloud Usage Cost report to be used for cost management." + ] = None, + google_cloud_billing_account_id: Annotated[ + str | None, "The Google Cloud account ID for cost management." + ] = None, + google_cloud_export_prefix: Annotated[ + str | None, "The export prefix for the Google Cloud Usage Cost report." + ] = None, + google_cloud_service_account_email: Annotated[ + str | None, + "The unique Google Cloud service account email required for the cost management setup.", + ] = None, + usage_cost_config_type: Annotated[ + str, + 'Specifies the type of Google Cloud Usage Cost configuration post request. Use "gcp_uc_config_post_request" to indicate this type.', # noqa: E501 + ] = "gcp_uc_config_post_request", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCostGCPUsageCostConfig'."]: + """Create a cost management account for Google Cloud usage. + + This tool creates a Cloud Cost Management account specifically for Google Cloud Usage Cost configurations. It should be called when a user wants to set up or initiate tracking and managing costs related to their Google Cloud resources.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "billing_account_id": google_cloud_billing_account_id, + "bucket_name": gcp_bucket_name, + "export_dataset_name": gcp_usage_cost_export_dataset_name, + "export_prefix": google_cloud_export_prefix, + "export_project_name": gcp_usage_cost_report_name, + "service_account": google_cloud_service_account_email, + }, + "type": usage_cost_config_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/gcp_uc_config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def archive_gcp_cost_management_account( + context: ToolContext, + cloud_account_identifier: Annotated[ + int, "The unique identifier for the GCP cloud account to be archived." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCostGCPUsageCostConfig'."]: + """Archive a Cloud Cost Management account. + + Use this tool to archive a Google Cloud Platform (GCP) cost management account in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/gcp_uc_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=cloud_account_identifier, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_gcp_usage_cost_config( + context: ToolContext, + cloud_account_identifier: Annotated[ + int, + "The unique identifier of the Google Cloud account for which to retrieve the usage cost configuration.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCostGCPUsageCostConfig'."]: + """Retrieve specific Google Cloud Usage Cost configuration details. + + The tool retrieves a specific Google Cloud Usage Cost configuration using the provided cloud account ID. It is useful for obtaining cost configurations related to Google Cloud usage in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/gcp_uc_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=cloud_account_identifier, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_gcp_usage_cost_status( + context: ToolContext, + cloud_account_id: Annotated[ + int, + "The ID of the Google Cloud account for which the cost configuration status needs to be updated.", # noqa: E501 + ], + cloud_cost_management_enabled: Annotated[ + bool, "Set to 'true' to enable the Cloud Cost Management account or 'false' to disable it." + ], + gcp_usage_cost_config_request_type: Annotated[ + str, + "Type of Google Cloud Usage Cost configuration patch request. Use 'gcp_uc_config_patch_request'.", # noqa: E501 + ] = "gcp_uc_config_patch_request", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCostGCPUsageCostConfig'."]: + """Update the status of a GCP Usage Cost config. + + This tool updates the status of a Google Cloud Platform Usage Cost configuration in Datadog, setting it as active or archived. It should be called when you need to change the operational status of a specific GCP cost configuration based on the cloud account ID.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"is_enabled": cloud_cost_management_enabled}, + "type": gcp_usage_cost_config_request_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost/gcp_uc_config/{cloud_account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + cloud_account_id=cloud_account_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_active_billing_dimensions( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetActiveBillingDimensions'."]: + """Retrieve active billing dimensions for cost attribution. + + Call this tool to get active billing dimensions used for attributing costs. Useful for understanding cost distribution across different dimensions. The data is available by the 19th of the following month.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost_by_tag/active_billing_dimensions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_monthly_cost_attribution( + context: ToolContext, + cost_types_fields: Annotated[ + str, + "Comma-separated list specifying cost types and proportions. Use `*` to retrieve all fields. Example: `infra_host_on_demand_cost,infra_host_percentage_in_account`.", # noqa: E501 + ], + start_month: Annotated[ + str, + "Datetime in ISO-8601 format, UTC, precise to month `[YYYY-MM]`. Represents the start of the costing period.", # noqa: E501 + ], + end_month: Annotated[ + str | None, + "The final month for cost calculation. Use ISO-8601 format `[YYYY-MM]` to specify the month.", # noqa: E501 + ] = None, + include_child_organization_costs: Annotated[ + bool | None, "Include child organization costs in the response. Defaults to true." + ] = True, + pagination_next_record_id: Annotated[ + str | None, + "Identifier for fetching the next set of results in a paginated response. Use the 'next_record_id' from the previous response.", # noqa: E501 + ] = None, + sort_by_billing_dimension: Annotated[ + str | None, + "Billing dimension to sort by. Defaults to sorting by total cost. Example: 'infra_host'.", + ] = None, + sort_by_direction: Annotated[ + str | None, + "Specifies the direction to sort cost attribution data. Use 'desc' for descending or 'asc' for ascending order.", # noqa: E501 + ] = "desc", + tag_keys_for_cost_grouping: Annotated[ + str | None, + "Comma-separated list of tag keys used to group costs. If empty, costs won't be grouped by tag. Check `tag_config_source` in the API response for available tags.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetMonthlyCostAttribution'."]: + """Retrieve monthly cost attribution data by tag. + + Fetch detailed monthly cost attribution by tag for both multi-org and single root-org accounts. Use this to track and report cost allocations within an organization after the 19th of each month. Ensure to handle pagination if necessary to acquire all records.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/cost_by_tag/monthly_cost_attribution".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "start_month": start_month, + "end_month": end_month, + "fields": cost_types_fields, + "sort_direction": sort_by_direction, + "sort_name": sort_by_billing_dimension, + "tag_breakdown_keys": tag_keys_for_cost_grouping, + "next_record_id": pagination_next_record_id, + "include_descendants": include_child_organization_costs, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_all_csm_agents( + context: ToolContext, + filter_query: Annotated[ + str | None, "A search query string to filter results, e.g., `hostname:COMP-T2H4J27423`." + ] = None, + page_size: Annotated[ + int | None, "Specify the number of items to include in a single page for pagination." + ] = None, + pagination_page_index: Annotated[ + int | None, "The zero-based index of the page to retrieve for pagination." + ] = None, + results_sort_direction: Annotated[ + str | None, "Sets sort order for results. Use 'asc' for ascending or 'desc' for descending." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAllCSMAgents'."]: + """Retrieve all CSM Agents running on your infrastructure. + + Use this tool to get a comprehensive list of all Customer Service Management (CSM) Agents currently operational on your hosts and containers. This can be useful for monitoring and managing your service agents.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/csm/onboarding/agents".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page": pagination_page_index, + "size": page_size, + "query": filter_query, + "order_direction": results_sort_direction, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_cloud_accounts_coverage_analysis( + context: ToolContext, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetCSMCloudAccountsCoverageAnalysis'." +]: + """Retrieve CSM coverage analysis of your cloud accounts. + + Retrieve the CSM Coverage Analysis for cloud accounts to see how many are scanned for security issues.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/csm/onboarding/coverage_analysis/cloud_accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_csm_coverage_analysis( + context: ToolContext, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetCSMHostsAndContainersCoverageAnalysis'." +]: + """Retrieve CSM coverage analysis for hosts and containers. + + Use this tool to obtain the CSM Coverage Analysis for your hosts and containers based on active agents with CSM features enabled.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/csm/onboarding/coverage_analysis/hosts_and_containers".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_serverless_coverage_analysis( + context: ToolContext, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetCSMServerlessCoverageAnalysis'." +]: + """Retrieve CSM serverless coverage analysis data from Datadog. + + This tool fetches the CSM Coverage Analysis for serverless resources in Datadog, determined by the number of agents with CSM features enabled.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/csm/onboarding/coverage_analysis/serverless".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_serverless_agents( + context: ToolContext, + filter_query: Annotated[ + str | None, + "A search string to filter serverless agents, such as `hostname:COMP-T2H4J27423`.", + ] = None, + items_per_page: Annotated[ + int | None, "The number of items to include in a single page of results." + ] = None, + page_index: Annotated[ + int | None, "The zero-based page index for pagination when retrieving serverless agents." + ] = None, + sort_direction: Annotated[ + str | None, + "The direction to sort results: 'asc' for ascending or 'desc' for descending order.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAllCSMServerlessAgents'."]: + """Retrieve all running CSM Serverless Agents. + + Use this tool to get a list of all CSM Serverless Agents currently running on your hosts and containers. It's ideal for monitoring and managing your serverless agent deployments.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/csm/onboarding/serverless/agents".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page": page_index, + "size": items_per_page, + "query": filter_query, + "order_direction": sort_direction, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_user_app_keys( + context: ToolContext, + created_after_date: Annotated[ + str | None, "Include application keys created on or after this date in the results." + ] = None, + filter_by_string: Annotated[ + str | None, "Filter application keys by the specified string to narrow down the results." + ] = None, + filter_created_at_end_date: Annotated[ + str | None, + "Include only application keys created on or before this date. Format: YYYY-MM-DD.", + ] = None, + include_related_resources: Annotated[ + str | None, "Specify 'owned_by' to include related resources in the response." + ] = None, + page_number: Annotated[ + int | None, "Specify the page number to retrieve application keys from." + ] = 0, + page_size: Annotated[ + int | None, "Specify the number of application keys per page. Maximum value is 100." + ] = 10, + sort_application_keys: Annotated[ + str | None, + "Specify the attribute to sort the application keys. Use a minus sign for descending order.", # noqa: E501 + ] = "name", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCurrentUserApplicationKeys'."]: + """Retrieve all application keys for the current user. + + This tool retrieves a list of all application keys associated with the current user in Datadog. It should be called when there's a need to view or manage these application keys.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/current_user/application_keys".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_application_keys, + "filter": filter_by_string, + "filter[created_at][start]": created_after_date, + "filter[created_at][end]": filter_created_at_end_date, + "include": include_related_resources, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_user_application_key( + context: ToolContext, + application_key_name: Annotated[ + str, "The name of the application key to be created for the current user." + ], + application_key_resource_type: Annotated[ + str, "Specifies the resource type, should always be 'application_keys'." + ] = "application_keys", + application_key_scopes: Annotated[ + list[str] | None, + "List of scopes to grant the application key for accessing specific resources.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCurrentUserApplicationKey'."]: + """Create an application key for the current user in Datadog. + + Use this tool to generate a new application key for the current Datadog user. This is useful for accessing Datadog APIs that require authentication with user-specific credentials.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"name": application_key_name, "scopes": application_key_scopes}, + "type": application_key_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/current_user/application_keys".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_user_application_key( + context: ToolContext, + application_key_id: Annotated[ + str, + "The ID of the application key to be deleted. Required to identify which key to remove.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCurrentUserApplicationKey'."]: + """Delete an application key owned by the current user. + + This tool deletes an application key associated with the current user in Datadog. It should be called when the user needs to remove access or invalidate an application key.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/current_user/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=application_key_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_user_application_key( + context: ToolContext, + application_key_id: Annotated[ + str, "The ID of the application key to retrieve, owned by the current user." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCurrentUserApplicationKey'."]: + """Retrieve an application key owned by the current user. + + Use this tool to obtain details about a specific application key that belongs to the currently authenticated Datadog user.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/current_user/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=application_key_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_user_app_key( + context: ToolContext, + app_key_identifier: Annotated[str, "ID of the application key to be edited."], + application_key_id: Annotated[ + str, "The ID of the application key to be edited. Must be a valid string ID." + ], + application_key_name: Annotated[str | None, "New name for the application key."] = None, + application_key_resource_type: Annotated[ + str, + "Specifies the resource type for the application key. Use the value 'application_keys'.", + ] = "application_keys", + application_key_scopes: Annotated[ + list[str] | None, + "List of scopes to grant the application key. Each scope is a string defining permissions.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCurrentUserApplicationKey'."]: + """Edit an application key owned by the current user. + + Use this tool to modify an existing application key for the current user. This is useful when you need to update permissions or other details associated with your application keys.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"name": application_key_name, "scopes": application_key_scopes}, + "id": app_key_identifier, + "type": application_key_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/current_user/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_key_id=application_key_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_dashboard_from_list( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + dashboard_list_identifier: Annotated[ + int | None, + "The unique integer ID of the dashboard list from which dashboards will be deleted. 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 'DeleteDashboardListItems'."]: + """Remove dashboards from a specified list in Datadog. + + Use this tool to delete one or more dashboards from an existing dashboard list in Datadog by specifying the list ID. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "DELETEDASHBOARDFROMLIST_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not dashboard_list_identifier: + missing_params.append(("dashboard_list_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["DELETEDASHBOARDFROMLIST_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["DELETEDASHBOARDFROMLIST_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + dashboard_list_id=dashboard_list_identifier, + ), + method="DELETE", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["DELETEDASHBOARDFROMLIST_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_dashboard_list_items( + context: ToolContext, + dashboard_list_id: Annotated[ + int, + "The unique integer ID of the dashboard list from which to retrieve dashboard definitions.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetDashboardListItems'."]: + """Fetch details of dashboards in a list. + + Use this tool to retrieve the details of dashboards contained in a specific dashboard list by providing the list ID. It returns the dashboard definitions for that list.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + dashboard_list_id=dashboard_list_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_dashboards_to_list( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + dashboard_list_identifier: Annotated[ + int | None, + "Specify the integer ID of the dashboard list where dashboards 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 'CreateDashboardListItems'."]: + """Add dashboards to an existing list in Datadog. + + Use this tool to append dashboards to a specified existing dashboard list in Datadog. Ideal for organizing and managing dashboards effectively. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["ADDDASHBOARDSTOLIST_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not dashboard_list_identifier: + missing_params.append(("dashboard_list_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ADDDASHBOARDSTOLIST_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["ADDDASHBOARDSTOLIST_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + dashboard_list_id=dashboard_list_identifier, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ADDDASHBOARDSTOLIST_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_dashboard_list_items( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + dashboard_list_identifier: Annotated[ + int | None, + "ID of the dashboard list to update with new items. 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 'UpdateDashboardListItems'."]: + """Update dashboards in an existing dashboard list. + + Use this tool to update the dashboards contained in a specific dashboard list within Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEDASHBOARDLISTITEMS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not dashboard_list_identifier: + missing_params.append(("dashboard_list_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEDASHBOARDLISTITEMS_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["UPDATEDASHBOARDLISTITEMS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + dashboard_list_id=dashboard_list_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEDASHBOARDLISTITEMS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_all_datasets( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAllDatasets'."]: + """Retrieve all datasets configured for your organization. + + Call this tool to obtain a list of all datasets that have been configured for an organization, using the Datadog API.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/datasets".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_dataset( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateDataset'."]: + """Create a dataset with specified configurations. + + Use this tool to create a new dataset on Datadog with the desired configurations provided in the request. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEDATASET_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEDATASET_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["CREATEDATASET_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/datasets".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEDATASET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_dataset( + context: ToolContext, + dataset_identifier: Annotated[ + str, "The unique ID of the dataset to be deleted. Required for deletion." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteDataset'."]: + """Deletes a dataset using its ID. + + Use this tool to delete a dataset by providing its ID. It should be called when you need to remove an existing dataset 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="https://{datadog_base_url}/api/v2/datasets/{dataset_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), dataset_id=dataset_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def retrieve_dataset_info( + context: ToolContext, + dataset_identifier: Annotated[ + str, "The unique identifier of the dataset to retrieve from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetDataset'."]: + """Retrieve detailed information about a specific dataset from Datadog. + + Use this tool to get information about a dataset using its unique ID. It retrieves comprehensive details related to the specified dataset from Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/datasets/{dataset_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), dataset_id=dataset_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_dataset( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + dataset_id: Annotated[ + str | None, + "The unique ID of the dataset to be edited in Datadog. 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 'UpdateDataset'."]: + """Edit the dataset using the specified ID. + + Call this tool to edit the details of a dataset in Datadog using its ID. It updates the dataset's configuration or metadata. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["EDITDATASET_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not dataset_id: + missing_params.append(("dataset_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["EDITDATASET_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["EDITDATASET_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/datasets/{dataset_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), dataset_id=dataset_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EDITDATASET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_domain_allowlist( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetDomainAllowlist'."]: + """Retrieve the domain allowlist for an organization. + + Use this tool to get the list of domains that are allowed within your organization's settings. It helps ensure authorized access and manage security policies.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/domain_allowlist".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_domain_allowlist( + context: ToolContext, + allowed_domains_list: Annotated[ + list[str] | None, + "A list of domains to include in the organization's email domain allowlist.", + ] = None, + email_domain_allowlist_type: Annotated[ + str, "Type of email domain allowlist. Valid value: 'domain_allowlist'." + ] = "domain_allowlist", + enable_email_domain_allowlist: Annotated[ + bool | None, "Set to true to enable the email domain allowlist for the organization." + ] = None, + organization_identifier: Annotated[ + str | None, "The unique identifier for the organization to update the domain allowlist." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'PatchDomainAllowlist'."]: + """Update the organization's domain allowlist to control domain access.""" + request_data = remove_none_values({ + "data": { + "attributes": { + "domains": allowed_domains_list, + "enabled": enable_email_domain_allowlist, + }, + "id": organization_identifier, + "type": email_domain_allowlist_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/domain_allowlist".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_scheduled_downtimes( + context: ToolContext, + include_resources_in_response: Annotated[ + str | None, + "Comma-separated list of resource paths to include in the response, such as `created_by` and `monitor`.", # noqa: E501 + ] = None, + max_downtimes_in_response: Annotated[ + int | None, "Maximum number of downtimes to include in the response." + ] = 30, + page_offset: Annotated[ + int | None, + "The starting point for the list of returned scheduled downtimes, used for pagination.", + ] = 0, + return_current_downtimes_only: Annotated[ + bool | None, "Set to true to return only downtimes active at the time of the request." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListDowntimes'."]: + """Retrieve all scheduled downtimes from Datadog. + + Use this tool to get a list of all downtimes that are currently scheduled in Datadog. It should be called when you need information about planned downtime periods.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/downtime".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "current_only": return_current_downtimes_only, + "include": include_resources_in_response, + "page[offset]": page_offset, + "page[limit]": max_downtimes_in_response, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def schedule_downtime( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateDowntime'."]: + """Schedule downtime for services or systems through Datadog. + + Use this tool to schedule a downtime for services or systems using Datadog's API. It is useful for planning maintenance or handling expected outages by suppressing alerts during the specified period. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["SCHEDULEDOWNTIME_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["SCHEDULEDOWNTIME_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["SCHEDULEDOWNTIME_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/downtime".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SCHEDULEDOWNTIME_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def cancel_downtime( + context: ToolContext, + downtime_id: Annotated[str, "Provide the ID of the downtime you wish to cancel."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CancelDowntime'."]: + """Cancel an active downtime in Datadog. + + Use this tool to cancel an active downtime in Datadog. The downtime remains visible for about two days in search results until it is permanently removed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/downtime/{downtime_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), downtime_id=downtime_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_downtime_details( + context: ToolContext, + downtime_id: Annotated[ + str, "The unique identifier for the downtime period to retrieve details for." + ], + include_related_resources: Annotated[ + str | None, + "Comma-separated list of resource paths to include in the response. Options: `created_by`, `monitor`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetDowntime'."]: + """Retrieve details of a specific downtime by ID. + + Use this tool to get detailed information about a specific downtime in Datadog using a downtime ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/downtime/{downtime_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), downtime_id=downtime_id + ), + method="GET", + params=remove_none_values({"include": include_related_resources}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_downtime( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + downtime_id: Annotated[ + str | None, + "The unique identifier of the downtime to be updated in Datadog. 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 'UpdateDowntime'."]: + """Update downtime by its ID in Datadog. + + Use this tool to modify an existing downtime configuration in Datadog by providing the downtime ID. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEDOWNTIME_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not downtime_id: + missing_params.append(("downtime_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEDOWNTIME_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["UPDATEDOWNTIME_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/downtime/{downtime_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), downtime_id=downtime_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEDOWNTIME_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_datadog_issues( + context: ToolContext, + end_date: Annotated[ + int, + "End date (exclusive) for the query in milliseconds since the Unix epoch. Determines up to when the issues are retrieved.", # noqa: E501 + ], + object_type: Annotated[ + str, "Specify the type of the object. The value must be 'search_request'." + ], + search_event_query: Annotated[ + str, "Search query using the event search syntax to find relevant issues." + ], + start_date_millis: Annotated[ + int, "Start date (inclusive) of the query in milliseconds since the Unix epoch." + ], + event_track_to_query: Annotated[ + str | None, + "Specify the track of events to query: 'trace', 'logs', or 'rum'. Either track or persona must be provided.", # noqa: E501 + ] = None, + include_relationship_objects: Annotated[ + list[str] | None, + "List of relationship objects to include in the response, specified as an array of strings.", # noqa: E501 + ] = None, + search_persona: Annotated[ + str | None, + "Persona for the search. Choose from ALL, BROWSER, MOBILE, or BACKEND. Either track(s) or persona(s) must be specified.", # noqa: E501 + ] = None, + sort_results_by: Annotated[ + str | None, + "Attribute to sort the search results. Options: TOTAL_COUNT, FIRST_SEEN, IMPACTED_SESSIONS, PRIORITY.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchIssues'."]: + """Search and retrieve issues from Datadog using a query. + + Use this tool to programmatically search for issues in your organization via Datadog. It returns a list of issues that match a specified search query, up to 100 per request.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "from": start_date_millis, + "order_by": sort_results_by, + "persona": search_persona, + "query": search_event_query, + "to": end_date, + "track": event_track_to_query, + }, + "type": object_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/error-tracking/issues/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({"include": include_relationship_objects}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_error_tracking_issue_details( + context: ToolContext, + issue_identifier: Annotated[ + str, "The unique identifier of the error tracking issue to retrieve details for." + ], + include_relationship_objects: Annotated[ + list[str] | None, + "A list of relationship objects to include in the response. Provide as an array of strings.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIssue'."]: + """Retrieve full details of a specific error tracking issue. + + Use this tool to obtain comprehensive details about an error tracking issue from Datadog, including its attributes and relationships. Ideal for understanding specific issues and investigating errors.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/error-tracking/issues/{issue_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), issue_id=issue_identifier + ), + method="GET", + params=remove_none_values({"include": include_relationship_objects}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_issue_assignee( + context: ToolContext, + issue_identifier: Annotated[str, "The unique identifier for the issue to update the assignee."], + object_type: Annotated[ + str, "Specifies the type of object being updated. For issue assignee, use 'assignee'." + ], + user_identifier: Annotated[str, "The identifier of the user to assign the issue to."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateIssueAssignee'."]: + """Update the assignee of an issue in Datadog. + + Use this tool to change the assignee of a specific issue in Datadog by providing the issue ID.""" # noqa: E501 + request_data = remove_none_values({"data": {"id": user_identifier, "type": object_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/error-tracking/issues/{issue_id}/assignee".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), issue_id=issue_identifier + ), + method="PUT", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_issue_state( + context: ToolContext, + issue_id_value: Annotated[ + str, "The identifier for the issue to update the state of in Datadog." + ], + issue_identifier: Annotated[ + str, "The unique identifier for the issue to update its state in Datadog." + ], + issue_object_type: Annotated[ + str, "Specifies the type of the object. Accepted value is 'error_tracking_issue'." + ], + issue_state: Annotated[ + str, + "State of the issue, valid values are 'OPEN', 'ACKNOWLEDGED', 'RESOLVED', 'IGNORED', 'EXCLUDED'.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateIssueState'."]: + """Update the state of an issue in Datadog. + + This tool updates the state of an issue identified by `issue_id` in Datadog, allowing transitions between states such as `OPEN`, `RESOLVED`, or `IGNORED`. It should be called when you need to change an issue's status.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"state": issue_state}, + "id": issue_id_value, + "type": issue_object_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/error-tracking/issues/{issue_id}/state".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), issue_id=issue_identifier + ), + method="PUT", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_datadog_events( + context: ToolContext, + event_search_query: Annotated[ + str | None, "Search query following Datadog's events syntax to filter events." + ] = None, + max_timestamp_milliseconds: Annotated[ + str | None, + "Specify the maximum timestamp for requested events in milliseconds. Use this to limit the latest time of events retrieved.", # noqa: E501 + ] = None, + maximum_events_per_page: Annotated[ + int | None, "Sets the maximum number of events to return in the response." + ] = 10, + minimum_timestamp_millis: Annotated[ + str | None, "The minimum timestamp in milliseconds for filtering requested events." + ] = None, + pagination_cursor: Annotated[ + str | None, + "Cursor for paginating through results, provided in the previous query response.", + ] = None, + sort_order: Annotated[ + str | None, + "Specify the order of events: 'timestamp' for ascending, '-timestamp' for descending.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListEvents'."]: + """Retrieve events from Datadog based on a search query. + + Use this tool to list events from Datadog that match a specific search query. The results are paginated, similar to logs, and this tool is ideal for accessing the latest events.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/events".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": event_search_query, + "filter[from]": minimum_timestamp_millis, + "filter[to]": max_timestamp_milliseconds, + "sort": sort_order, + "page[cursor]": pagination_cursor, + "page[limit]": maximum_events_per_page, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_datadog_events( + context: ToolContext, + event_search_query: Annotated[ + str | None, "The search query using Datadog's event search syntax to filter events." + ] = "*", + max_event_time: Annotated[ + str | None, + "Specify the maximum time for the events. Supports date math and timestamps in milliseconds.", # noqa: E501 + ] = "now", + maximum_events_per_page: Annotated[ + int | None, + "Specify the maximum number of events returned per page in the response. This controls the pagination size.", # noqa: E501 + ] = 10, + paging_cursor: Annotated[ + str | None, "The cursor for pagination to retrieve the next set of results." + ] = None, + sort_order: Annotated[ + str | None, + "Specify event sorting order: 'timestamp' for ascending, '-timestamp' for descending.", + ] = None, + start_time: Annotated[ + str | None, + "The earliest time for requested events, using date math or timestamps in milliseconds.", + ] = "now-15m", + time_offset_seconds: Annotated[ + int | None, + "The time offset to apply to the query in seconds. Use an integer to specify the shift in time for the search results.", # noqa: E501 + ] = None, + timezone: Annotated[ + str | None, + "Specify the timezone for the query. It can be GMT, UTC, an offset (like UTC+1), or a Timezone Database identifier (like America/New_York).", # noqa: E501 + ] = "UTC", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchEvents'."]: + """Search and filter events in Datadog. + + Use this tool to find and filter events in Datadog using complex search queries. It returns a paginated list of events that match the specified criteria.""" # noqa: E501 + request_data = remove_none_values({ + "filter": {"from": start_time, "query": event_search_query, "to": max_event_time}, + "options": {"timeOffset": time_offset_seconds, "timezone": timezone}, + "page": {"cursor": paging_cursor, "limit": maximum_events_per_page}, + "sort": sort_order, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/events/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_event_details( + context: ToolContext, + event_unique_id: Annotated[ + str, + "The unique identifier of the event to retrieve details for. This should be a string representing the event's UID.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetEvent'."]: + """Retrieve detailed information about a specific event. + + Use this tool to get detailed information about an event by providing its unique event ID. It is useful for obtaining specifics about incidents or activities tracked in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/events/{event_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), event_id=event_unique_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_organization_incidents( + context: ToolContext, + include_related_objects: Annotated[ + list[str] | None, + "List of related object types to include in the response. Specify as an array of strings.", + ] = None, + page_offset: Annotated[ + int | None, + "Specific offset to start the returned page of incidents. Use this to paginate results.", + ] = 0, + page_size: Annotated[ + int | None, "Integer specifying the number of incidents per page, up to a maximum of 100." + ] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListIncidents'."]: + """Retrieve all incidents for your organization. + + Call this tool to get a comprehensive list of all incidents associated with the user's organization in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "include": include_related_objects, + "page[size]": page_size, + "page[offset]": page_offset, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_incident( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateIncident'."]: + """Create a new incident in Datadog. + + This tool is used to create a new incident within Datadog's incident management system. Trigger this tool when there is a need to report or manage an incident requiring attention. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEINCIDENT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEINCIDENT_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["CREATEINCIDENT_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEINCIDENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_incident_notification_rules( + context: ToolContext, + resources_to_include: Annotated[ + str | None, + "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListIncidentNotificationRules'."]: + """Retrieve all incident notification rules for the organization. + + Fetches a list of notification rules for incidents within your organization, with optional filtering by incident type.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"include": resources_to_include}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_incident_notification_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateIncidentNotificationRule'."]: + """Creates a new incident notification rule in Datadog. + + Use this tool to create and manage notification rules for incidents in Datadog. It should be called when there is a need to set up a new notification rule for monitoring incident alerts. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEINCIDENTNOTIFICATIONRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINCIDENTNOTIFICATIONRULE_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["CREATEINCIDENTNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEINCIDENTNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_incident_notification_rule( + context: ToolContext, + notification_rule_id: Annotated[ + str, "The unique identifier of the notification rule to be deleted." + ], + include_resources: Annotated[ + str | None, + "Comma-separated list of resources to include, such as `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteIncidentNotificationRule'."]: + """Delete an incident notification rule by its ID. + + Use this tool to delete a specific incident notification rule in Datadog by providing its ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-rules/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=notification_rule_id + ), + method="DELETE", + params=remove_none_values({"include": include_resources}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_notification_rule( + context: ToolContext, + notification_rule_id: Annotated[ + str, "The unique identifier for the notification rule to retrieve details." + ], + include_resources: Annotated[ + str | None, + "Comma-separated list of resources to include in the response. Options: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIncidentNotificationRule'."]: + """Retrieve details of a specific incident notification rule. + + This tool retrieves a specific incident notification rule from Datadog by its ID. It should be called when there is a need to obtain detailed information about a particular notification rule used in incident management.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-rules/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=notification_rule_id + ), + method="GET", + params=remove_none_values({"include": include_resources}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_incident_notification_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + notification_rule_id: Annotated[ + str | None, + "The unique identifier for the notification rule to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + include_resources: Annotated[ + str | None, + "Comma-separated list of resources to include: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`. 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 'UpdateIncidentNotificationRule'."]: + """Update an incident notification rule in Datadog. + + This tool updates an existing incident notification rule in Datadog with a complete replacement. Use it when you need to modify the settings or parameters of an incident alert rule. + + 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[ + "UPDATEINCIDENTNOTIFICATIONRULE_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 notification_rule_id: + missing_params.append(("notification_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINCIDENTNOTIFICATIONRULE_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["UPDATEINCIDENTNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-rules/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=notification_rule_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINCIDENTNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": include_resources}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_incident_notification_templates( + context: ToolContext, + incident_type_id_filter: Annotated[ + str | None, "Optional ID to filter notification templates by incident type." + ] = None, + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to include in the response. Supported values are `created_by_user`, `last_modified_by_user`, `incident_type`.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ListIncidentNotificationTemplates'." +]: + """Retrieve all incident notification templates. + + This tool lists all the notification templates available for incidents in Datadog. It can optionally filter the templates by incident type.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-templates".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[incident-type]": incident_type_id_filter, + "include": include_relationships, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_incident_notification_template( + context: ToolContext, + notification_content_body: Annotated[ + str, + "The body content for the notification template, describing the detailed message of the notification.", # noqa: E501 + ], + notification_subject: Annotated[ + str, + "The subject line for the notification template. This sets the subject of the template being created.", # noqa: E501 + ], + notification_template_category: Annotated[str, "The category of the notification template."], + notification_template_name: Annotated[ + str, "The name for the notification template to be created." + ], + resource_type_notification_template: Annotated[ + str, + "Specify the resource type for notification templates, which should be 'notification_templates'.", # noqa: E501 + ], + incident_type_id: Annotated[ + str | None, "The ID of the incident type to associate with the notification template." + ] = None, + incident_type_resource_type: Annotated[ + str | None, "The resource type for the incident, which should be 'incident_types'." + ] = "incident_types", +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateIncidentNotificationTemplate'." +]: + """Creates a new incident notification template. + + Use this tool to create a new notification template for incidents. It should be called when there is a need to set up or customize notifications related to incident management.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "category": notification_template_category, + "content": notification_content_body, + "name": notification_template_name, + "subject": notification_subject, + }, + "relationships": { + "incident_type": { + "data": {"id": incident_type_id, "type": incident_type_resource_type} + } + }, + "type": resource_type_notification_template, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-templates".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_incident_notification_template( + context: ToolContext, + notification_template_id: Annotated[ + str, "The unique ID of the incident notification template to be deleted." + ], + relationships_to_include: Annotated[ + str | None, + "Comma-separated list of relationships to include. Options: `created_by_user`, `last_modified_by_user`, `incident_type`.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'DeleteIncidentNotificationTemplate'." +]: + """Deletes a notification template by its ID. + + Use this tool to delete a specific incident notification template by providing its ID. It should be called when a notification template is no longer needed or requires removal.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-templates/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=notification_template_id + ), + method="DELETE", + params=remove_none_values({"include": relationships_to_include}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_notification_template( + context: ToolContext, + template_id: Annotated[str, "The ID of the notification template to retrieve from Datadog."], + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIncidentNotificationTemplate'."]: + """Retrieve a specific incident notification template by ID. + + Use this tool to get details of a specific incident notification template from Datadog 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="https://{datadog_base_url}/api/v2/incidents/config/notification-templates/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=template_id + ), + method="GET", + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_notification_template( + context: ToolContext, + notification_template_id: Annotated[ + str, "The unique identifier of the notification template to update." + ], + notification_template_resource_type: Annotated[ + str, + "Specifies the type of the notification template resource. Must be 'notification_templates'.", # noqa: E501 + ], + template_id: Annotated[ + str, "The unique identifier of the notification template to be updated." + ], + notification_template_category: Annotated[ + str | None, "The category of the notification template to update." + ] = None, + notification_template_content: Annotated[ + str | None, "The content body of the notification template to be updated." + ] = None, + notification_template_name: Annotated[ + str | None, "The name of the notification template to update in Datadog." + ] = None, + notification_template_subject: Annotated[ + str | None, "The subject line of the notification template to be updated in Datadog." + ] = None, + relationships_to_include: Annotated[ + str | None, + "Comma-separated list of relationships to include. Valid values: `created_by_user`, `last_modified_by_user`, `incident_type`.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'UpdateIncidentNotificationTemplate'." +]: + """Update attributes of a notification template. + + Use this tool to update an existing notification template's attributes in Datadog's incident management system.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "category": notification_template_category, + "content": notification_template_content, + "name": notification_template_name, + "subject": notification_template_subject, + }, + "id": template_id, + "type": notification_template_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/notification-templates/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=notification_template_id + ), + method="PATCH", + params=remove_none_values({"include": relationships_to_include}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_types( + context: ToolContext, + include_deleted: Annotated[ + bool | None, "Include deleted incident types in the response when set to true." + ] = False, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListIncidentTypes'."]: + """Retrieve all incident types from Datadog. + + This tool calls the Datadog API to list all available incident types. Use it to get information about the types of incidents 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="https://{datadog_base_url}/api/v2/incidents/config/types".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"include_deleted": include_deleted}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_incident_type( + context: ToolContext, + incident_type_name: Annotated[str, "The name of the incident type to be created in Datadog."], + creator_user_id: Annotated[ + str | None, "A unique ID representing the user who created the incident type." + ] = None, + incident_creation_timestamp: Annotated[ + str | None, + "Timestamp indicating when the incident type was created. Format should be ISO 8601.", + ] = None, + incident_title_prefix: Annotated[ + str | None, "The string prepended to the incident title throughout the Datadog app." + ] = None, + incident_type_description: Annotated[ + str | None, + "Text that describes the incident type. Provide a clear, concise explanation to aid in management and identification.", # noqa: E501 + ] = None, + incident_type_resource_type: Annotated[ + str, "Specifies the incident type resource type. Must be 'incident_types'." + ] = "incident_types", + last_modified_timestamp: Annotated[ + str | None, + "Timestamp indicating when the incident type was last modified. Use ISO 8601 format, e.g., '2023-10-01T14:30:00Z'.", # noqa: E501 + ] = None, + last_modified_user_id: Annotated[ + str | None, "Unique identifier for the user who last modified the incident type." + ] = None, + set_as_default_incident_type: Annotated[ + bool | None, + "Set to true to make this the default incident type if no type is specified during incident creation.", # noqa: E501 + ] = False, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateIncidentType'."]: + """Create a new incident type in Datadog. + + This tool is used to create a new incident type in Datadog, allowing users to define categories for managing incidents effectively.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "createdAt": incident_creation_timestamp, + "createdBy": creator_user_id, + "description": incident_type_description, + "is_default": set_as_default_incident_type, + "lastModifiedBy": last_modified_user_id, + "modifiedAt": last_modified_timestamp, + "name": incident_type_name, + "prefix": incident_title_prefix, + }, + "type": incident_type_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/types".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_incident_type( + context: ToolContext, + incident_type_uuid: Annotated[ + str, "The unique identifier (UUID) of the incident type to be deleted in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteIncidentType'."]: + """Deletes a specified incident type from Datadog configuration. + + Use this tool to remove an incident type from your Datadog configuration. It should be called when there is a need to delete a specific incident type identified 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="https://{datadog_base_url}/api/v2/incidents/config/types/{incident_type_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_type_id=incident_type_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_type_details( + context: ToolContext, + incident_type_uuid: Annotated[ + str, "The UUID of the specific incident type to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIncidentType'."]: + """Retrieve details of a specific incident type. + + Use this tool to obtain detailed information about a specific incident type from Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/config/types/{incident_type_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_type_id=incident_type_uuid, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_incident_type( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_type_uuid: Annotated[ + str | None, + "The UUID representing the incident type to be updated in Datadog. 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 'UpdateIncidentType'."]: + """Update the type of a specific incident in Datadog. + + Use this tool to modify an existing incident type in Datadog by specifying the incident type ID. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEINCIDENTTYPE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not incident_type_uuid: + missing_params.append(("incident_type_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINCIDENTTYPE_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["UPDATEINCIDENTTYPE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/config/types/{incident_type_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_type_id=incident_type_uuid, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINCIDENTTYPE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_datadog_incidents( + context: ToolContext, + incident_query: Annotated[ + str, + "Query to determine which incidents to return. Use facets joined by `AND` and multiple values by `OR`, e.g., `state:active AND severity:(SEV-2 OR SEV-1)`.", # noqa: E501 + ], + include_related_objects: Annotated[ + str | None, + "Specifies which types of related objects ('users', 'attachments') should be included in the response.", # noqa: E501 + ] = None, + page_offset: Annotated[ + int | None, "The starting position offset for returning incidents. Use an integer value." + ] = 0, + page_size: Annotated[ + int | None, + "Specify the number of incidents to return per page. The maximum allowed value is 100.", + ] = 10, + sort_order: Annotated[ + str | None, + "Defines the order of returned incidents. Use 'created' for ascending and '-created' for descending.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchIncidents'."]: + """Search for incidents in Datadog by query. + + Use this tool to find incidents in Datadog that match a specific query. It helps in quickly retrieving relevant incident information based on search criteria.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "include": include_related_objects, + "query": incident_query, + "sort": sort_order, + "page[size]": page_size, + "page[offset]": page_offset, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_incident( + context: ToolContext, + incident_uuid: Annotated[str, "The unique identifier (UUID) of the incident to delete."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteIncident'."]: + """Deletes an existing incident from the organization. + + Use this tool to remove an incident from your organization's records in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_details( + context: ToolContext, + incident_uuid: Annotated[str, "The UUID of the incident to retrieve its details."], + include_related_objects: Annotated[ + list[str] | None, + "Specify related object types to include in the response, such as users, logs, etc.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIncident'."]: + """Retrieve details of a specific incident using its ID. + + Use this tool to obtain detailed information about a specific incident by providing the incident ID. It retrieves all the necessary details from the Datadog service.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="GET", + params=remove_none_values({"include": include_related_objects}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_incident( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_uuid: Annotated[ + str | None, + "The unique identifier (UUID) for the incident to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + include_related_objects: Annotated[ + list[str] | None, + "List of related object types to include in the response, such as 'users', 'comments', etc. 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 'UpdateIncident'."]: + """Partially update an incident's details. + + Use this tool to update specific attributes of an existing incident in Datadog. Only the provided attributes will be modified. + + 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["UPDATEINCIDENT_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 incident_uuid: + missing_params.append(("incident_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEINCIDENT_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["UPDATEINCIDENT_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINCIDENT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": include_related_objects}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_attachments( + context: ToolContext, + incident_uuid: Annotated[ + str, "The unique identifier (UUID) of the incident whose attachments are to be retrieved." + ], + attachment_types_to_include: Annotated[ + list[str] | None, + "List the types of attachments to include in the response. Each type should be a string.", + ] = None, + include_related_objects: Annotated[ + list[str] | None, + "A list of related object types to include in the response, such as 'user', 'tags'.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListIncidentAttachments'."]: + """Retrieve all attachments for a specified incident. + + This tool retrieves all files and documents attached to a particular incident. It should be called when details about the attachments associated with an incident are needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/attachments".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="GET", + params=remove_none_values({ + "include": include_related_objects, + "filter[attachment_type]": attachment_types_to_include, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def manage_incident_attachments( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_uuid: Annotated[ + str | None, + "The UUID of the incident to manage its attachments. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + related_objects_inclusion: Annotated[ + list[str] | None, + "List of related object types to include in the response (e.g., comments, attachments). 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 'UpdateIncidentAttachments'."]: + """Manage attachments for a specific incident in bulk. + + Use this tool to create, update, or delete multiple attachments related to a specific incident. It is called when adjustments to the attachments of an incident 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[ + "MANAGEINCIDENTATTACHMENTS_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 incident_uuid: + missing_params.append(("incident_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["MANAGEINCIDENTATTACHMENTS_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["MANAGEINCIDENTATTACHMENTS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/attachments".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["MANAGEINCIDENTATTACHMENTS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": related_objects_inclusion}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_impacts( + context: ToolContext, + incident_uuid: Annotated[str, "The unique UUID of the incident to retrieve impacts for."], + include_related_resources: Annotated[ + list[str] | None, + "Specify which related resources to include in the response as an array of strings.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListIncidentImpacts'."]: + """Retrieve all impacts for a specified incident. + + Use this tool to fetch all impact details associated with a particular incident, providing insight into the effects and scope of the incident.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/impacts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="GET", + params=remove_none_values({"include": include_related_resources}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_incident_impact( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_uuid: Annotated[ + str | None, + "The unique identifier (UUID) for the incident. This is required to log impact details for the specified incident. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + included_resources: Annotated[ + list[str] | None, + "List of related resources to include in the response, such as 'users' or 'details'. 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 'CreateIncidentImpact'."]: + """Create an impact for a specific incident. + + This tool is used to create an impact for a specified incident. It should be called when there is a need to log or document the impact details of an ongoing or past incident. + + 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["CREATEINCIDENTIMPACT_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 incident_uuid: + missing_params.append(("incident_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINCIDENTIMPACT_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["CREATEINCIDENTIMPACT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/impacts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEINCIDENTIMPACT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": included_resources}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_incident_impact( + context: ToolContext, + incident_id: Annotated[ + str, + "The UUID of the incident to be deleted. Required for identifying the specific incident.", + ], + incident_impact_uuid: Annotated[ + str, + "The UUID of the incident impact to be deleted. This is required to identify which specific impact to remove.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteIncidentImpact'."]: + """Delete a specific incident impact by ID. + + Use this tool to delete an impact associated with a specific incident using the incident and impact IDs. Suitable for managing and cleaning up incident data in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/impacts/{impact_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_id=incident_id, + impact_id=incident_impact_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_integrations( + context: ToolContext, + incident_uuid: Annotated[ + str, "The unique UUID of the incident to retrieve integration metadata." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListIncidentIntegrations'."]: + """Retrieve integration metadata for a specific incident. + + Use this tool to get all the integration metadata associated with a particular incident. It helps in understanding how different integrations are linked to an incident.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_incident_integration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_uuid: Annotated[ + str | None, + "The unique identifier (UUID) of the incident to create integration metadata 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 'CreateIncidentIntegration'."]: + """Create incident integration metadata for an incident. + + Use this tool to create integration metadata related to a specific incident in Datadog. It facilitates linking external integrations to an incident for enhanced tracking and management. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not incident_uuid: + missing_params.append(("incident_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINCIDENTINTEGRATION_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["CREATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_incident_integration_metadata( + context: ToolContext, + incident_integration_metadata_uuid: Annotated[ + str, "The UUID of the incident integration metadata to be deleted." + ], + incident_uuid: Annotated[ + str, "The UUID of the incident you want to delete integration metadata for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteIncidentIntegration'."]: + """Remove an incident integration metadata entry. + + Use this tool to delete metadata associated with an incident integration. Call it when you need to remove specific integration details from an incident.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_id=incident_uuid, + integration_metadata_id=incident_integration_metadata_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_integration_details( + context: ToolContext, + incident_integration_metadata_uuid: Annotated[ + str, "The UUID of the incident integration metadata required to fetch its details." + ], + incident_uuid: Annotated[ + str, "The UUID of the incident in Datadog for which to obtain integration metadata." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIncidentIntegration'."]: + """Fetches details of incident integration metadata. + + Use this tool to obtain detailed metadata about a specific incident integration within Datadog, using the incident ID and integration metadata ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_id=incident_uuid, + integration_metadata_id=incident_integration_metadata_uuid, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_incident_integration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_uuid: Annotated[ + str | None, + "The UUID of the incident. This is a unique identifier used to specify which incident to update the integration metadata for. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + integration_metadata_uuid: Annotated[ + str | None, + "The UUID of the incident integration metadata 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 'UpdateIncidentIntegration'."]: + """Update incident integration metadata in Datadog. + + Call this tool to update the metadata of an existing incident integration in Datadog. Useful for modifying integration details after an incident is created. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not incident_uuid: + missing_params.append(("incident_uuid", "path")) + if not integration_metadata_uuid: + missing_params.append(("integration_metadata_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINCIDENTINTEGRATION_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["UPDATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_id=incident_uuid, + integration_metadata_id=integration_metadata_uuid, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_incident_todos( + context: ToolContext, + incident_uuid: Annotated[ + str, "The unique identifier (UUID) of the incident for which to retrieve todos." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListIncidentTodos'."]: + """Retrieve all todos for a specified incident. + + Use this tool to gather a list of todos associated with a specific incident in Datadog. It is useful for tracking tasks that need to be addressed within an incident context.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_incident_todo( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_uuid: Annotated[ + str | None, + "The UUID of the incident for which the to-do 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 'CreateIncidentTodo'."]: + """Create a task within an incident in Datadog. + + This tool is used to add a to-do item to an incident in Datadog, helping manage and track tasks related to incident resolution. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEINCIDENTTODO_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not incident_uuid: + missing_params.append(("incident_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEINCIDENTTODO_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["CREATEINCIDENTTODO_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), incident_id=incident_uuid + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEINCIDENTTODO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_incident_todo( + context: ToolContext, + incident_todo_uuid: Annotated[str, "The unique UUID for the incident todo to be deleted."], + incident_uuid: Annotated[ + str, + "The unique identifier (UUID) of the incident to which the todo belongs. This is necessary to specify the incident context.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteIncidentTodo'."]: + """Delete a specified incident todo in Datadog. + + Use this tool to delete a specific todo item associated with an incident in Datadog. This is helpful for managing and updating incident tasks as needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_id=incident_uuid, + todo_id=incident_todo_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_incident_todo_details( + context: ToolContext, + incident_todo_uuid: Annotated[ + str, + "The UUID of the incident todo to fetch details for. This is essential for identifying the specific todo item linked to an incident.", # noqa: E501 + ], + incident_uuid: Annotated[str, "The UUID of the incident to get the todo details for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIncidentTodo'."]: + """Retrieve details of an incident todo item from Datadog. + + Use this tool to obtain specific details about a todo item related to an incident in Datadog. It should be called when detailed information about an incident's todo component is needed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_id=incident_uuid, + todo_id=incident_todo_uuid, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_incident_todo( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + incident_uuid: Annotated[ + str | None, + "The unique identifier (UUID) of the incident to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + incident_todo_uuid: Annotated[ + str | None, + "The unique identifier (UUID) of the incident todo 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 'UpdateIncidentTodo'."]: + """Update a specific incident todo in Datadog. + + Use this tool to update details of a specific todo associated with an incident in Datadog. This is useful when you need to modify tasks related to incident management. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEINCIDENTTODO_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not incident_uuid: + missing_params.append(("incident_uuid", "path")) + if not incident_todo_uuid: + missing_params.append(("incident_todo_uuid", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEINCIDENTTODO_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["UPDATEINCIDENTTODO_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + incident_id=incident_uuid, + todo_id=incident_todo_uuid, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEINCIDENTTODO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_aws_accounts( + context: ToolContext, + filter_by_aws_account_id: Annotated[ + str | None, + "Optional parameter to filter AWS accounts by their ID. Provide a specific AWS Account ID to get its integration config. If omitted, configurations for all accounts are returned.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAWSAccounts'."]: + """Retrieve AWS account integration configurations. + + Get a comprehensive list of AWS account integration configurations from Datadog. Useful for managing and reviewing AWS account integrations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"aws_account_id": filter_by_aws_account_id}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_aws_account_integration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateAWSAccount'."]: + """Create a new AWS Account Integration Config in Datadog. + + This tool should be called when you need to integrate an AWS account with Datadog. It will set up a new AWS account configuration for monitoring and managing AWS services through Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEAWSACCOUNTINTEGRATION_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["CREATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/integration/aws/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_aws_account_config( + context: ToolContext, + aws_account_configuration_id: Annotated[ + str, + "Unique Datadog ID for the AWS Account Integration Config. Obtain this ID via the 'List all AWS integrations' Datadog endpoint.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteAWSAccount'."]: + """Delete an AWS account integration by config ID. + + Use this tool to delete an AWS account integration configuration in Datadog by specifying the config ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/accounts/{aws_account_config_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + aws_account_config_id=aws_account_configuration_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aws_account_integration_config( + context: ToolContext, + aws_account_integration_config_id: Annotated[ + str, + "Unique Datadog ID of the AWS Account Integration Config. Obtain it using the List all AWS integrations endpoint.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAWSAccount'."]: + """Retrieve AWS Account Integration Config by ID. + + Use this tool to obtain detailed information about a specific AWS account integration configuration, identified by its config ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/accounts/{aws_account_config_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + aws_account_config_id=aws_account_integration_config_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_aws_account_integration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + aws_account_integration_config_id: Annotated[ + str | None, + "Unique Datadog ID for the AWS Account Integration Config. Retrieve using the List all AWS integrations endpoint and query by AWS Account ID. 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 'UpdateAWSAccount'."]: + """Update an AWS Account Integration configuration. + + Use this tool to update the configuration of an AWS Account Integration by specifying the configuration ID. Ideal for modifying existing AWS integration settings. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not aws_account_integration_config_id: + missing_params.append(("aws_account_integration_config_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEAWSACCOUNTINTEGRATION_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["UPDATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/integration/aws/accounts/{aws_account_config_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + aws_account_config_id=aws_account_integration_config_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aws_cloudwatch_namespaces( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAWSNamespaces'."]: + """Retrieve available AWS CloudWatch namespaces for Datadog integration. + + This tool fetches a list of AWS CloudWatch namespaces that can send metrics to Datadog. It should be called when needing to understand which AWS services can integrate with Datadog for monitoring and analysis purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/available_namespaces".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def generate_aws_external_id( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateNewAWSExternalID'."]: + """Generate a new external ID for AWS authentication. + + This tool is used to generate a new external ID for AWS role-based authentication through Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/generate_new_external_id".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_aws_integration_permissions( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAWSIntegrationIAMPermissions'."]: + """Retrieve AWS IAM permissions for Datadog integration. + + Call this tool to obtain the list of AWS IAM permissions required for integrating AWS with Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/iam_permissions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aws_iam_permissions( + context: ToolContext, +) -> Annotated[ + dict[str, Any], + "Response from the API endpoint 'GetAWSIntegrationIAMPermissionsResourceCollection'.", +]: + """Get required AWS IAM permissions for resource collection. + + This tool retrieves all necessary AWS IAM permissions for integrating with AWS. Use it to ensure that the integration has the required permissions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/iam_permissions/resource_collection".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aws_integration_iam_permissions( + context: ToolContext, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetAWSIntegrationIAMPermissionsStandard'." +]: + """Fetch standard AWS IAM permissions for integration. + + Retrieve all standard AWS IAM permissions needed for setting up AWS integration.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/iam_permissions/standard".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_aws_logs_services( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListAWSLogsServices'."]: + """Retrieve AWS services for logging to Datadog. + + Use this tool to obtain a list of AWS services that have the capability to send log data to Datadog. This can help in configuring and troubleshooting integrations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/aws/logs/services".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_gcp_sts_accounts( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListGCPSTSAccounts'."]: + """Retrieve all GCP STS-enabled service accounts from Datadog. + + Use this tool to list all Google Cloud Platform (GCP) STS-enabled service accounts configured in your Datadog account. It should be called when you need to view or manage the integration of GCP accounts within Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/gcp/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_gcp_sts_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateGCPSTSAccount'."]: + """Create a new GCP STS account entry in Datadog. + + Use this tool to create a new entry within Datadog for your STS-enabled Google Cloud Platform service account. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEGCPSTSACCOUNT_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["CREATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/integration/gcp/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_gcp_sts_account( + context: ToolContext, + gcp_sts_account_id: Annotated[ + str, "The unique ID of the GCP STS-enabled service account to delete from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteGCPSTSAccount'."]: + """Delete an STS-enabled GCP account in Datadog. + + Use this tool to remove a specified STS-enabled Google Cloud Platform account from Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/gcp/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=gcp_sts_account_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_gcp_sts_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + service_account_id: Annotated[ + str | None, + "Unique ID of your GCP STS-enabled service account 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 'UpdateGCPSTSAccount'."]: + """Update an STS-enabled GCP service account configuration. + + Call this tool to modify the configuration of an existing STS-enabled Google Cloud Platform service account in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not service_account_id: + missing_params.append(("service_account_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEGCPSTSACCOUNT_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["UPDATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/integration/gcp/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=service_account_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_gcp_sts_delegate( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetGCPSTSDelegate'."]: + """Retrieve the Datadog-GCP STS delegate account configuration. + + Use this tool to list the configured GCP STS delegate account in your Datadog account. It provides information about the integration between Datadog and Google Cloud Platform for security token service (STS) delegation.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/gcp/sts_delegate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_datadog_gcp_principal( + context: ToolContext, + delegate_service_account_data: Annotated[ + dict[str, str] | None, + "JSON object containing details for creating a delegate service account within Datadog. Include necessary account parameters.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'MakeGCPSTSDelegate'."]: + """Create a Datadog GCP principal. + + Use this tool to create a Google Cloud Platform (GCP) principal for integration with Datadog. It facilitates the setting up of GCP STS (Security Token Service) delegates needed for Datadog services.""" # noqa: E501 + request_data = remove_none_values(delegate_service_account_data) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/gcp/sts_delegate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_datadog_channel_info( + context: ToolContext, + datadog_channel_name: Annotated[ + str, + "The name of the channel in the Datadog Microsoft Teams integration. Required to retrieve channel details.", # noqa: E501 + ], + team_name: Annotated[ + str, + "Specify the name of the team for which you want to retrieve channel ID details in the Datadog Microsoft Teams integration.", # noqa: E501 + ], + tenant_name: Annotated[ + str, + "The name of the tenant for which you want to get the channel information in Datadog's Microsoft Teams integration.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetChannelByName'."]: + """Retrieve channel ID details for Datadog MS Teams integration. + + Use this tool to obtain the tenant, team, and channel ID for a specific channel in the Datadog Microsoft Teams integration. Call this tool when you need to look up channel configuration details within a Datadog integration.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/channel/{tenant_name}/{team_name}/{channel_name}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + tenant_name=tenant_name, + team_name=team_name, + channel_name=datadog_channel_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_tenant_based_handles( + context: ToolContext, + tenant_handle_name: Annotated[ + str | None, + "The name of your tenant-based handle in the Datadog Microsoft Teams integration.", + ] = None, + tenant_identifier: Annotated[ + str | None, "The ID of your tenant in Datadog to retrieve handles for MS Teams integration." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListTenantBasedHandles'."]: + """Retrieve Datadog's tenant-based handles for MS Teams integration. + + Call this tool to obtain a list of all tenant-based handles configured in the Datadog Microsoft Teams integration.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"tenant_id": tenant_identifier, "name": tenant_handle_name}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_tenant_based_handle( + context: ToolContext, + channel_id: Annotated[ + str, "ID of the Microsoft Teams channel to associate with the tenant-based handle." + ], + handle_name: Annotated[ + str, + "The name for the tenant-based handle you wish to create in the Datadog Microsoft Teams integration.", # noqa: E501 + ], + team_id: Annotated[ + str, "The ID of the Microsoft Teams team to associate with the Datadog handle." + ], + tenant_id: Annotated[ + str, "The unique identifier for the tenant in the Datadog Microsoft Teams integration." + ], + resource_type: Annotated[ + str, "Specifies the resource type as 'tenant-based-handle'." + ] = "tenant-based-handle", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateTenantBasedHandle'."]: + """Create a tenant-based handle in Datadog for Teams. + + Use this tool to create a new tenant-based handle for the Microsoft Teams integration within Datadog. It should be called when you need to configure or add a handle specific to a tenant in Datadog's Microsoft Teams integration.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "channel_id": channel_id, + "name": handle_name, + "team_id": team_id, + "tenant_id": tenant_id, + }, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_ms_teams_tenant_handle( + context: ToolContext, + tenant_handle_id: Annotated[ + str, + "The unique identifier for the tenant-based handle to be deleted from the Microsoft Teams integration.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteTenantBasedHandle'."]: + """Delete a tenant-based handle from Datadog's Microsoft Teams integration. + + Use this tool to remove a specific tenant-based handle from the Microsoft Teams integration in Datadog. This is useful for managing or updating integration settings.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), handle_id=tenant_handle_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_teams_integration_info( + context: ToolContext, + tenant_handle_id: Annotated[ + str, + "The tenant-based handle ID for the Microsoft Teams integration used to retrieve tenant, team, and channel information.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTenantBasedHandle'."]: + """Retrieve tenant, team, and channel info for a handle. + + This tool gets the tenant, team, and channel information for a specified tenant-based handle from the Datadog Microsoft Teams integration. It should be called to obtain detailed configuration data related to a specific integration handle.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), handle_id=tenant_handle_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_ms_teams_tenant_handle( + context: ToolContext, + tenant_handle_id: Annotated[ + str, "The unique ID of the tenant-based handle to update in Datadog." + ], + channel_id: Annotated[ + str | None, "The ID of the Microsoft Teams channel to update for the tenant-based handle." + ] = None, + team_id: Annotated[ + str | None, + "The Microsoft Teams Team ID for the tenant-based handle. Required for updating handle configurations.", # noqa: E501 + ] = None, + tenant_handle_name: Annotated[ + str | None, + "Tenant-based handle name for the Microsoft Teams integration in Datadog. This specifies the handle's identifier within the configuration.", # noqa: E501 + ] = None, + tenant_handle_resource_type: Annotated[ + str, + "Specifies the resource type for the tenant-based handle, usually 'tenant-based-handle'.", + ] = "tenant-based-handle", + tenant_id: Annotated[ + str | None, + "The unique identifier for the tenant. Used to specify which tenant's handle is being updated.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateTenantBasedHandle'."]: + """Update a Microsoft Teams tenant-based handle in Datadog. + + Use this tool to update a tenant-based handle for the Datadog Microsoft Teams integration. This is useful when you need to modify existing handle configurations for tenant-based integrations.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "channel_id": channel_id, + "name": tenant_handle_name, + "team_id": team_id, + "tenant_id": tenant_id, + }, + "type": tenant_handle_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), handle_id=tenant_handle_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_ms_teams_workflow_webhooks( + context: ToolContext, + webhook_handle_name: Annotated[ + str | None, "Specifies the name of your Workflows webhook handle to filter the list." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListWorkflowsWebhookHandles'."]: + """Retrieve all Microsoft Teams workflow webhook handles from Datadog. + + Use this tool to obtain a list of all workflow webhook handles associated with the Datadog Microsoft Teams integration. It helps in managing and monitoring webhook configurations efficiently.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"name": webhook_handle_name}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_workflow_webhook_handle( + context: ToolContext, + webhook_handle_name: Annotated[ + str, "Name of the Workflows Webhook handle for Datadog Microsoft Teams integration." + ], + webhook_url: Annotated[ + str, "The URL for the Workflows Webhook in the Datadog Microsoft Teams integration." + ], + webhook_handle_resource_type: Annotated[ + str, + "Specifies the resource type for the Workflows webhook handle. Must be 'workflows-webhook-handle'.", # noqa: E501 + ] = "workflows-webhook-handle", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateWorkflowsWebhookHandle'."]: + """Create a webhook handle for Datadog Microsoft Teams integration. + + Use this tool to create a Workflows webhook handle within the Datadog Microsoft Teams integration. It is useful when setting up or managing integrations between Datadog workflows and Microsoft Teams for real-time alerts and notifications.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"name": webhook_handle_name, "url": webhook_url}, + "type": webhook_handle_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_workflow_webhook_handle( + context: ToolContext, + webhook_handle_id: Annotated[ + str, "The unique identifier of the Workflows webhook handle to delete." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteWorkflowsWebhookHandle'."]: + """Delete a Workflows webhook handle in Datadog. + + Use this tool to delete a specific Workflows webhook handle from the Datadog Microsoft Teams integration. This should be called when you need to remove an existing webhook handle.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), handle_id=webhook_handle_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_ms_teams_workflow_webhook_name( + context: ToolContext, + workflow_webhook_handle_id: Annotated[ + str, + "The ID of the Workflows webhook handle to retrieve the name for. This is specific to the Datadog Microsoft Teams integration.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetWorkflowsWebhookHandle'."]: + """Retrieve the name of a MS Teams workflow webhook handle. + + Use this tool to get the name of a Microsoft Teams Workflows webhook handle using the Datadog integration. Useful for managing or verifying webhook configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + handle_id=workflow_webhook_handle_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_workflows_webhook_handle( + context: ToolContext, + webhook_handle_id: Annotated[ + str, "The unique identifier for the Workflows webhook handle to be updated." + ], + webhook_handle_name: Annotated[ + str | None, + "The name of the Workflows Webhook handle to be updated. This should be a descriptive string identifying the webhook.", # noqa: E501 + ] = None, + webhook_handle_resource_type: Annotated[ + str, "Specifies the Workflows webhook handle resource type. Use 'workflows-webhook-handle'." + ] = "workflows-webhook-handle", + workflows_webhook_url: Annotated[ + str | None, "The URL for the Workflows Webhook. Specify the endpoint to send requests to." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateWorkflowsWebhookHandle'."]: + """Update a webhook handle in Datadog's Microsoft Teams integration. + + This tool updates a Workflows webhook handle for the Datadog Microsoft Teams integration. Use it to modify existing webhook configurations.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"name": webhook_handle_name, "url": workflows_webhook_url}, + "type": webhook_handle_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), handle_id=webhook_handle_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_opsgenie_services( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListOpsgenieServices'."]: + """Retrieve all services from Datadog Opsgenie integration. + + Call this tool to get a comprehensive list of services integrated with Datadog's Opsgenie. Useful for managing or reviewing service integrations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/opsgenie/services".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_opsgenie_service( + context: ToolContext, + opsgenie_api_key: Annotated[ + str, + "The API key required to authenticate your Opsgenie service within Datadog. This key must be a valid string associated with your Opsgenie account.", # noqa: E501 + ], + opsgenie_service_name: Annotated[ + str, "The name for the Opsgenie service to be created in the Datadog integration." + ], + opsgenie_service_region: Annotated[ + str, "The region for the Opsgenie service. Choose from 'us', 'eu', or 'custom'." + ], + custom_region_url: Annotated[ + str | None, + "The custom URL for a specific Opsgenie region. Used to connect to a custom region.", + ] = None, + opsgenie_service_resource_type: Annotated[ + str, "Specify the Opsgenie service resource type, which must be 'opsgenie-service'." + ] = "opsgenie-service", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateOpsgenieService'."]: + """Create a new Opsgenie service in Datadog integration. + + This tool is used to create a new service object within the Opsgenie integration on Datadog. It should be called when you need to set up or add a new Opsgenie service to monitor and manage incidents or alerts.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "custom_url": custom_region_url, + "name": opsgenie_service_name, + "opsgenie_api_key": opsgenie_api_key, + "region": opsgenie_service_region, + }, + "type": opsgenie_service_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/opsgenie/services".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_opsgenie_service( + context: ToolContext, + service_uuid: Annotated[ + str, "The UUID of the service to be deleted in the Datadog Opsgenie integration." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteOpsgenieService'."]: + """Delete a service in Datadog's Opsgenie integration. + + Use this tool to remove a specific service from the Datadog Opsgenie integration. Call this when you need to delete an Opsgenie service using its integration service ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/opsgenie/services/{integration_service_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + integration_service_id=service_uuid, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_opsgenie_service( + context: ToolContext, + service_uuid: Annotated[str, "The UUID of the Datadog Opsgenie service to retrieve."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetOpsgenieService'."]: + """Retrieve a single Opsgenie service from Datadog. + + This tool retrieves details about a specific service integrated with Datadog's Opsgenie. Use it to access information about service configurations or to manage operational alerts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/opsgenie/services/{integration_service_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + integration_service_id=service_uuid, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_opsgenie_service( + context: ToolContext, + opsgenie_service_id: Annotated[ + str, "The unique identifier of the Opsgenie service to be updated." + ], + service_uuid: Annotated[ + str, "The UUID of the service to be updated in the Datadog Opsgenie integration." + ], + custom_region_url: Annotated[ + str | None, + "The custom URL for a specific Opsgenie region. Specify if using a custom region.", + ] = None, + opsgenie_api_key: Annotated[ + str | None, + "The API key for your Opsgenie service, needed to authenticate the update request.", + ] = None, + opsgenie_service_name: Annotated[ + str | None, + "The name for the Opsgenie service to update. It should uniquely identify the service within your Opsgenie account.", # noqa: E501 + ] = None, + opsgenie_service_region: Annotated[ + str | None, + "Specify the region for the Opsgenie service. Allowed values are 'us', 'eu', or 'custom'.", + ] = None, + opsgenie_service_resource_type: Annotated[ + str, "Specify as 'opsgenie-service' to denote the Opsgenie service resource type." + ] = "opsgenie-service", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateOpsgenieService'."]: + """Update a service in the Datadog Opsgenie integration. + + This tool updates a specified service object within the Datadog Opsgenie integration. It should be called when you need to modify an existing Opsgenie service.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "custom_url": custom_region_url, + "name": opsgenie_service_name, + "opsgenie_api_key": opsgenie_api_key, + "region": opsgenie_service_region, + }, + "id": opsgenie_service_id, + "type": opsgenie_service_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integration/opsgenie/services/{integration_service_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + integration_service_id=service_uuid, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_cloudflare_accounts( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCloudflareAccounts'."]: + """Retrieve a list of Cloudflare accounts from Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_cloudflare_account( + context: ToolContext, + cloudflare_account_name: Annotated[str, "The name for the Cloudflare account to be created."], + cloudflare_api_key: Annotated[ + str, + "The API key or token for the Cloudflare account required to authenticate and connect with the Cloudflare service.", # noqa: E501 + ], + cloudflare_account_email: Annotated[ + str | None, + "The email associated with the Cloudflare account. Required if using an API key instead of a token.", # noqa: E501 + ] = None, + json_api_type: Annotated[ + str, "Specifies the JSON:API type, must be 'cloudflare-accounts'." + ] = "cloudflare-accounts", + resources_allowlist: Annotated[ + list[str] | None, + "List of resources such as 'web', 'dns', 'lb', or 'worker' to restrict metric pulling.", + ] = None, + zone_allowlist: Annotated[ + list[str] | None, "A list of zones for restricting metric data collection." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCloudflareAccount'."]: + """Create a Cloudflare account through Datadog integration. + + This tool is used to create a Cloudflare account using Datadog's integration API. It should be called when you wish to initiate a new Cloudflare account while leveraging Datadog services.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "api_key": cloudflare_api_key, + "email": cloudflare_account_email, + "name": cloudflare_account_name, + "resources": resources_allowlist, + "zones": zone_allowlist, + }, + "type": json_api_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_cloudflare_account( + context: ToolContext, + cloudflare_account_id: Annotated[ + str, + "The ID of the Cloudflare account to delete from Datadog. This should be a string matching the account ID format.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCloudflareAccount'."]: + """Delete a Cloudflare account via Datadog integration. + + Use this tool to delete a specified Cloudflare account from Datadog's integrations. Call this tool when you need to remove an account linked to Cloudflare within the Datadog platform.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=cloudflare_account_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_cloudflare_account( + context: ToolContext, + cloudflare_account_id: Annotated[ + str, + "The unique identifier for the Cloudflare account to retrieve details from. This is required to access account-specific information.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCloudflareAccount'."]: + """Retrieve details of a Cloudflare account via Datadog. + + Call this tool to get information about a specific Cloudflare account linked to Datadog. Use it when you need to access account details for management or monitoring purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=cloudflare_account_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_cloudflare_account( + context: ToolContext, + cloudflare_account_id: Annotated[ + str, "The unique identifier for the Cloudflare account to be updated." + ], + allowed_resource_types_for_metrics: Annotated[ + list[str] | None, + "An array of resource types ('web', 'dns', 'lb', 'worker') to allow for metrics collection.", # noqa: E501 + ] = None, + cloudflare_account_email: Annotated[ + str | None, + "The email associated with the Cloudflare account. Required if using an API key instead of a token.", # noqa: E501 + ] = None, + cloudflare_account_name: Annotated[ + str | None, "The name of the Cloudflare account to be updated." + ] = None, + cloudflare_api_key: Annotated[ + str | None, "The API key for the Cloudflare account, required for authentication." + ] = None, + json_api_type: Annotated[ + str | None, "The JSON:API type for this API. Always use `cloudflare-accounts`." + ] = "cloudflare-accounts", + zone_allowlist: Annotated[ + list[str] | None, + "A list of zone identifiers to restrict which metrics can be pulled for Cloudflare.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCloudflareAccount'."]: + """Update details of a Cloudflare account. + + Use this tool to update the information of an existing Cloudflare account linked with Datadog. It should be called whenever modifications to a Cloudflare account are required.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "api_key": cloudflare_api_key, + "email": cloudflare_account_email, + "name": cloudflare_account_name, + "resources": allowed_resource_types_for_metrics, + "zones": zone_allowlist, + }, + "type": json_api_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=cloudflare_account_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_confluent_accounts( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListConfluentAccount'."]: + """Retrieve a list of Confluent accounts. + + Use this tool to get a list of Confluent accounts that are integrated with Datadog. It helps in managing and monitoring Confluent Cloud integrations efficiently.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_confluent_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateConfluentAccount'."]: + """Create a Confluent account on Datadog. + + Use this tool to create a new Confluent account within the Datadog platform. Ideal for setting up new Confluent integrations. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECONFLUENTACCOUNT_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECONFLUENTACCOUNT_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["CREATECONFLUENTACCOUNT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECONFLUENTACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_confluent_account( + context: ToolContext, + confluent_account_id: Annotated[ + str, "The unique identifier for the Confluent Account to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteConfluentAccount'."]: + """Delete a Confluent account using the account ID. + + This tool deletes a specified Confluent account by account ID in Datadog's system. It should be used when a user wants to remove a Confluent Cloud integration account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=confluent_account_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_confluent_account_info( + context: ToolContext, + confluent_account_id: Annotated[ + str, "The unique identifier for the Confluent account to retrieve details from." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetConfluentAccount'."]: + """Retrieve Confluent account information by account ID. + + Use this tool to obtain details for a Confluent account using its account ID. Useful for accessing specific account configurations or status within Datadog's Confluent integrations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=confluent_account_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_confluent_account( + context: ToolContext, + confluent_account_id: Annotated[str, "The unique ID of the Confluent account to be updated."], + confluent_api_key: Annotated[ + str, "Provide the API key associated with your Confluent account." + ], + confluent_api_secret: Annotated[ + str, + "The API secret for the Confluent account. Required to authenticate and update the account details.", # noqa: E501 + ], + api_type: Annotated[ + str, + "Set this to `confluent-cloud-accounts` to specify the JSON:API type for the update request.", # noqa: E501 + ] = "confluent-cloud-accounts", + tags_list: Annotated[ + list[str] | None, + "A list of tag strings for the account. Use single keys or key-value pairs separated by a colon.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateConfluentAccount'."]: + """Updates the Confluent account details. + + Use this tool to update the details of a Confluent account by providing the account ID. It ensures the account information is current and accurately reflects any required changes.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "api_key": confluent_api_key, + "api_secret": confluent_api_secret, + "tags": tags_list, + }, + "type": api_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=confluent_account_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_confluent_resource( + context: ToolContext, + confluent_account_id: Annotated[ + str, + "Enter the Confluent Account ID to retrieve the resource details linked to this account.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListConfluentResource'."]: + """Retrieve Confluent resource details for a specific account ID. + + Use this tool to get information about a Confluent resource linked to a specific account using the account ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=confluent_account_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_confluent_resource( + context: ToolContext, + confluent_account_id: Annotated[ + str, "The ID of the Confluent account for which to create the resource." + ], + confluent_resource_id: Annotated[ + str, "The unique ID for the Confluent resource to be created or managed." + ], + resource_type: Annotated[ + str, + "The type of Confluent resource to create: `kafka`, `connector`, `ksql`, or `schema_registry`.", # noqa: E501 + ], + enable_custom_metrics: Annotated[ + bool | None, + "Set to true to enable the `custom.consumer_lag_offset` metric with extra tags, false to disable.", # noqa: E501 + ] = False, + json_api_request_type: Annotated[ + str, "The JSON:API type for this request. Must be 'confluent-cloud-resources'." + ] = "confluent-cloud-resources", + resource_tags: Annotated[ + list[str] | None, + "A list of tag strings for the Confluent resource. Use key-value pairs separated by colons or single keys.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateConfluentResource'."]: + """Create a Confluent resource for a specified account. + + Use this tool to create a Confluent resource within a specific account using its ID. It's useful for managing Confluent resources in Datadog integrations.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "enable_custom_metrics": enable_custom_metrics, + "resource_type": resource_type, + "tags": resource_tags, + }, + "id": confluent_resource_id, + "type": json_api_request_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=confluent_account_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_confluent_resource( + context: ToolContext, + confluent_account_id: Annotated[ + str, "The unique identifier for the Confluent account linked to the resource to be deleted." + ], + confluent_resource_id: Annotated[ + str, "A string representing the unique ID of the Confluent resource to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteConfluentResource'."]: + """Deletes a specified Confluent resource in a Datadog account. + + Use this tool to delete a Confluent resource associated with a specific account in Datadog by providing the account ID and resource ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=confluent_account_id, + resource_id=confluent_resource_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_confluent_resource( + context: ToolContext, + confluent_account_id: Annotated[ + str, + "The ID of the Confluent account to retrieve the resource for. This should be a string value representing the account identifier.", # noqa: E501 + ], + confluent_resource_id: Annotated[ + str, + "The ID of the Confluent resource associated with the specified account. Provide this to retrieve the resource details.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetConfluentResource'."]: + """Retrieve a Confluent resource using account and resource IDs. + + Use this tool to obtain information about a specific Confluent resource linked to a particular account by providing the account and resource IDs.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=confluent_account_id, + resource_id=confluent_resource_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_confluent_resource( + context: ToolContext, + confluent_account_id: Annotated[ + str, "The ID of the Confluent account associated with the resource to be updated." + ], + confluent_resource_id: Annotated[ + str, "The unique identifier for the Confluent resource to be updated." + ], + resource_id: Annotated[str, "The ID of the Confluent account resource to update."], + resource_type: Annotated[ + str, + "Specifies the resource type of the Confluent resource. Valid values are 'kafka', 'connector', 'ksql', or 'schema_registry'.", # noqa: E501 + ], + enable_custom_metrics: Annotated[ + bool | None, + "Set to true to enable the `custom.consumer_lag_offset` metric which includes extra metric tags.", # noqa: E501 + ] = False, + resource_data_type: Annotated[ + str, "The JSON:API type for this request. Must be 'confluent-cloud-resources'." + ] = "confluent-cloud-resources", + tags_list: Annotated[ + list[str] | None, + "A list of tags for the resource. Each tag can be a single key or a key-value pair separated by a colon.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateConfluentResource'."]: + """Update a Confluent resource linked to a specified account. + + Use this tool to update a Confluent resource associated with a given account by specifying the resource and account IDs.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "enable_custom_metrics": enable_custom_metrics, + "resource_type": resource_type, + "tags": tags_list, + }, + "id": confluent_resource_id, + "type": resource_data_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=confluent_account_id, + resource_id=resource_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_fastly_accounts( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListFastlyAccounts'."]: + """Retrieve a list of Fastly accounts integrated with Datadog. + + Call this tool to obtain a list of Fastly accounts that are currently integrated with your Datadog instance. This can help in managing, auditing, or configuring integrations between Datadog and Fastly.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_fastly_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateFastlyAccount'."]: + """Create a new Fastly account through Datadog integration. + + Use this tool to create a new Fastly account using Datadog's integration service. Ideal for setting up Fastly accounts quickly and efficiently. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEFASTLYACCOUNT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEFASTLYACCOUNT_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["CREATEFASTLYACCOUNT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEFASTLYACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_fastly_account( + context: ToolContext, + fastly_account_id: Annotated[ + str, + "The unique identifier of the Fastly account to delete. Required for the deletion process.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteFastlyAccount'."]: + """Deletes a specified Fastly account integration. + + Use this tool to delete a Fastly account integration from Datadog. Ideal when an integration is no longer needed or requires removal.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=fastly_account_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_fastly_account_info( + context: ToolContext, + fastly_account_id: Annotated[ + str, "The unique identifier for the Fastly account to retrieve information about." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetFastlyAccount'."]: + """Retrieves detailed information for a specific Fastly account. + + Use this tool to obtain details about a specific Fastly account integrated with Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=fastly_account_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_fastly_account( + context: ToolContext, + fastly_account_id: Annotated[str, "The unique identifier for the Fastly account to update."], + fastly_account_name: Annotated[str | None, "The name of the Fastly account to update."] = None, + fastly_api_key: Annotated[ + str | None, "The API key for the Fastly account to be updated." + ] = None, + json_api_type: Annotated[ + str | None, "Specifies the type for the Fastly account API. Must be 'fastly-accounts'." + ] = "fastly-accounts", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateFastlyAccount'."]: + """Updates a Fastly account via Datadog integration. + + Call this tool to update details of a Fastly account through the Datadog API. Useful for managing Fastly integration settings.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"api_key": fastly_api_key, "name": fastly_account_name}, + "type": json_api_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=fastly_account_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_fastly_services( + context: ToolContext, + fastly_account_id: Annotated[ + str, "The unique identifier for a Fastly account to retrieve its services." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListFastlyServices'."]: + """Retrieve Fastly services for a specific account. + + Use this tool to get a list of all Fastly services associated with a particular account in Datadog. Ideal for checking service configurations or integrations linked to your Fastly account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=fastly_account_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_fastly_service( + context: ToolContext, + fastly_account_id: Annotated[str, "Provide the Fastly Account ID to create the service under."], + fastly_service_id: Annotated[ + str, "The ID of the Fastly service to create. Provide a valid Fastly service ID." + ], + fastly_service_tags: Annotated[ + list[str] | None, + "A list of tags for the Fastly service to help categorize and organize the service.", + ] = None, + jsonapi_type_for_fastly_service: Annotated[ + str, "The JSON:API type, always set to 'fastly-services', for creating a Fastly service." + ] = "fastly-services", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateFastlyService'."]: + """Create a Fastly service for a specific account in Datadog. + + Use this tool to create a Fastly service associated with a given account within Datadog. Ideal when setting up or expanding Fastly integrations.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"tags": fastly_service_tags}, + "id": fastly_service_id, + "type": jsonapi_type_for_fastly_service, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=fastly_account_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_fastly_service( + context: ToolContext, + fastly_account_id: Annotated[ + str, "The ID of the Fastly account associated with the service to be deleted." + ], + fastly_service_id: Annotated[ + str, + "The unique identifier for the Fastly service to delete. Required to specify the exact service.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteFastlyService'."]: + """Delete a Fastly service for an account. + + Use this tool to delete a specific Fastly service associated with an account in Datadog. Call this tool when you need to remove an existing service configured through the Fastly integration.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=fastly_account_id, + service_id=fastly_service_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_fastly_service_info( + context: ToolContext, + fastly_account_id: Annotated[ + str, "The unique ID of the Fastly account for which to retrieve service details." + ], + fastly_service_id: Annotated[ + str, + "The ID of the Fastly service to retrieve details for, linked to the specified account.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetFastlyService'."]: + """Retrieve Fastly service details for a specific account. + + Call this tool to get information about a Fastly service linked to a Datadog account using the account ID and the service ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=fastly_account_id, + service_id=fastly_service_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_fastly_service( + context: ToolContext, + fastly_account_id: Annotated[str, "The unique ID of the Fastly account to be updated."], + fastly_service_id: Annotated[ + str, "Provide the Fastly Service ID to specify which service to update." + ], + fastly_service_identifier: Annotated[str, "The ID of the Fastly service to be updated."], + fastly_service_json_api_type: Annotated[ + str, "The JSON:API type for this API, which should always be `fastly-services`." + ] = "fastly-services", + fastly_service_tags: Annotated[ + list[str] | None, + "A list of tags to update the Fastly service with. Each tag should be a string.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateFastlyService'."]: + """Update a Fastly service for an account in Datadog. + + Use this tool to update specific details of a Fastly service associated with an account in Datadog. Useful for modifying service configurations.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"tags": fastly_service_tags}, + "id": fastly_service_identifier, + "type": fastly_service_json_api_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + account_id=fastly_account_id, + service_id=fastly_service_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_okta_accounts( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListOktaAccounts'."]: + """Retrieve a list of Okta accounts linked to Datadog. + + Use this tool to obtain information about Okta accounts that are integrated with Datadog, allowing for management and analysis of these linked accounts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/okta/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_okta_account( + context: ToolContext, + okta_account_domain: Annotated[str, "The domain of the Okta account to be created."], + okta_account_name: Annotated[ + str, "The name of the Okta account to be created via Datadog API integration." + ], + okta_auth_method: Annotated[str, "Specify the authorization method for the Okta account."], + client_secret: Annotated[ + str | None, + "The client secret associated with the Okta app integration. This is required for authentication.", # noqa: E501 + ] = None, + okta_account_id: Annotated[ + str | None, "The ID of the Okta account, which is a UUID hash of the account name." + ] = None, + okta_account_type: Annotated[ + str, + "Specifies the type of account for the Okta account. The value should be 'okta-accounts'.", + ] = "okta-accounts", + okta_api_key: Annotated[ + str | None, + "The API key for the Okta account integration. This key is used for authenticating the account with Datadog.", # noqa: E501 + ] = None, + okta_client_id: Annotated[ + str | None, "The Client ID for the Okta app integration, necessary for the account setup." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateOktaAccount'."]: + """Create an Okta account via Datadog integration. + + Use this tool to create a new Okta account through Datadog's API integration. This is useful when setting up user accounts for Okta within the Datadog platform.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "api_key": okta_api_key, + "auth_method": okta_auth_method, + "client_id": okta_client_id, + "client_secret": client_secret, + "domain": okta_account_domain, + "name": okta_account_name, + }, + "id": okta_account_id, + "type": okta_account_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/okta/accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_okta_account( + context: ToolContext, + okta_account_id: Annotated[ + str, "A string representing the ID of the Okta account to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteOktaAccount'."]: + """Delete an Okta account from Datadog integration. + + Use this tool to delete an Okta account integrated with Datadog. Call this tool when an Okta account needs to be removed from Datadog's integration platform.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/okta/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=okta_account_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_okta_account_info( + context: ToolContext, + okta_account_id: Annotated[ + str, "The unique identifier for the Okta account to retrieve information for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetOktaAccount'."]: + """Retrieve detailed information about a specific Okta account. + + This tool fetches details of an Okta account using the given account ID. It should be called when detailed information about an Okta account is required.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/okta/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=okta_account_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_okta_account( + context: ToolContext, + account_id: Annotated[str, "The unique identifier for the Okta account to be updated."], + account_type: Annotated[ + str | None, "Specify the type of the Okta account. Must be 'okta-accounts'." + ] = "okta-accounts", + authorization_method: Annotated[ + str | None, + "Specify the authorization method for the Okta account. This is a required string value.", + ] = None, + okta_account_api_key: Annotated[ + str | None, "The API key for authenticating the Okta account." + ] = None, + okta_client_id: Annotated[ + str | None, "The Client ID of the Okta app integration to update." + ] = None, + okta_client_secret: Annotated[ + str | None, + "The client secret for the Okta app integration to be updated. Ensure this is kept secure.", + ] = None, + okta_domain: Annotated[ + str | None, "The domain associated with the Okta account to update." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateOktaAccount'."]: + """Update details of an existing Okta account. + + Call this tool to update information for a specific Okta account using its account ID.""" + request_data = remove_none_values({ + "data": { + "attributes": { + "api_key": okta_account_api_key, + "auth_method": authorization_method, + "client_id": okta_client_id, + "client_secret": okta_client_secret, + "domain": okta_domain, + }, + "type": account_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/integrations/okta/accounts/{account_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), account_id=account_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_ip_allowlist( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetIPAllowlist'."]: + """Retrieve the IP allowlist and its status. + + Use this tool to obtain the current IP allowlist and check whether it is enabled or disabled.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ip_allowlist".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_ip_allowlist( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateIPAllowlist'."]: + """Edit and toggle the IP allowlist settings in Datadog. + + This tool updates the entries in the Datadog IP allowlist, enabling or disabling it as needed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEIPALLOWLIST_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEIPALLOWLIST_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["UPDATEIPALLOWLIST_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/ip_allowlist".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEIPALLOWLIST_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def aggregate_logs( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AggregateLogs'."]: + """Aggregate logs to compute metrics and timeseries. + + This tool aggregates log events into buckets to compute relevant metrics and timeseries. It's useful for analyzing large volumes of log data to extract meaningful insights. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["AGGREGATELOGS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["AGGREGATELOGS_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["AGGREGATELOGS_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/logs/analytics/aggregate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["AGGREGATELOGS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_current_archive_order( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetLogsArchiveOrder'."]: + """Retrieve the current order of logs archives. + + This tool retrieves the current order of your logs archives from Datadog. Use this tool when you need to understand how archives are currently organized.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archive-order".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_logs_archive_order( + context: ToolContext, + archive_ids_order: Annotated[ + list[str] | None, + "An ordered list of `` strings to define the new archives order in Datadog.", + ] = None, + archive_order_type: Annotated[ + str | None, "Specifies the type for the archive order definition. Must be 'archive_order'." + ] = "archive_order", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateLogsArchiveOrder'."]: + """Updates the order of log archives in Datadog. + + This tool updates the sequence in which log archives are processed within Datadog. Reordering them may impact the structure and content of logs processed by other archives. Use this when you need to change how logs are archived.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"archive_ids": archive_ids_order}, "type": archive_order_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archive-order".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PUT", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_logs_archives( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListLogsArchives'."]: + """Get the list of configured logs archives. + + Retrieve the definitions of all logs archives configured in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archives".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_logs_archive( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateLogsArchive'."]: + """Create an archive of logs in your organization. + + Use this tool to create a new archive for logs within your organization through Datadog. This is useful for organizing and storing logs for compliance or analysis purposes. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATELOGSARCHIVE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATELOGSARCHIVE_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["CREATELOGSARCHIVE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/logs/config/archives".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATELOGSARCHIVE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_logs_archive( + context: ToolContext, + archive_id: Annotated[str, "The unique identifier for the archive to be deleted from Datadog."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteLogsArchive'."]: + """Delete a specific logs archive from your organization. + + Use this tool to permanently delete a specified logs archive in your Datadog organization. The tool should be called when you need to remove an unnecessary or outdated archive.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), archive_id=archive_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_specific_logs_archive( + context: ToolContext, + archive_id: Annotated[ + str, "The unique identifier for the logs archive to retrieve from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetLogsArchive'."]: + """Retrieve a specific logs archive from Datadog. + + Use this tool to get a specific archive of logs from your Datadog organization by providing the archive ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), archive_id=archive_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_archive_configuration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + archive_identifier: Annotated[ + str | None, + "The unique identifier for the archive you wish to update in Datadog. 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 'UpdateLogsArchive'."]: + """Replace an existing archive configuration in Datadog. + + Use this tool to update an archive configuration by replacing the current settings with new ones for a specified archive in your Datadog organization. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEARCHIVECONFIGURATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not archive_identifier: + missing_params.append(("archive_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEARCHIVECONFIGURATION_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["UPDATEARCHIVECONFIGURATION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), archive_id=archive_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEARCHIVECONFIGURATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_role_from_archive( + context: ToolContext, + archive_id: Annotated[str, "The ID of the archive from which the role will be removed."], + role_type: Annotated[ + str | None, "The type of role to be removed, typically set to 'roles'." + ] = "roles", + role_unique_identifier: Annotated[ + str | None, "The unique identifier of the role to be removed from the archive." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'RemoveRoleFromArchive'."]: + """Removes a role from a specified archive in Datadog. + + This tool should be called to remove a user role from a specific archive in Datadog. It helps revoke access permissions associated with that role for the archive.""" # noqa: E501 + request_data = remove_none_values({"data": {"id": role_unique_identifier, "type": role_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}/readers".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), archive_id=archive_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_archive_read_roles( + context: ToolContext, + archive_identifier: Annotated[ + str, "The unique identifier for the archive to retrieve read access roles from." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListArchiveReadRoles'."]: + """Retrieve roles with read access to a specific archive. + + Use this tool to obtain a list of all roles that have read access to a specified archive in Datadog. It helps manage and review access control for archive data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}/readers".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), archive_id=archive_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_read_role_to_archive( + context: ToolContext, + archive_id: Annotated[ + str, + "The unique identifier for the archive to which a read role will be added. This is required to specify the target archive for access management.", # noqa: E501 + ], + role_type: Annotated[str | None, "The type of role to be added. Must be 'roles'."] = "roles", + role_unique_identifier: Annotated[ + str | None, "The unique identifier for the role to be added to the archive." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AddReadRoleToArchive'."]: + """Adds a read role to a specified archive. + + Use this tool to grant read access to a specific archive by adding a read role. Ideal for managing permissions and ensuring the right users or groups have access to log data archives.""" # noqa: E501 + request_data = remove_none_values({"data": {"id": role_unique_identifier, "type": role_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}/readers".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), archive_id=archive_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_custom_log_destinations( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListLogsCustomDestinations'."]: + """Retrieve configured custom log destinations from Datadog. + + Use this tool to get a list of custom log destinations configured in your Datadog organization, including their definitions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/custom-destinations".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_custom_log_destination( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateLogsCustomDestination'."]: + """Create a custom log destination in Datadog. + + This tool creates a custom destination for logs in your Datadog organization. Use it to configure where your logs should be sent. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECUSTOMLOGDESTINATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATECUSTOMLOGDESTINATION_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["CREATECUSTOMLOGDESTINATION_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/logs/config/custom-destinations".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECUSTOMLOGDESTINATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_custom_log_destination( + context: ToolContext, + custom_destination_id: Annotated[ + str, "The unique identifier for the custom log destination to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteLogsCustomDestination'."]: + """Delete a specific custom log destination. + + Call this tool to delete a specific custom log destination within your organization on Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/custom-destinations/{custom_destination_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + custom_destination_id=custom_destination_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_custom_destination( + context: ToolContext, + custom_destination_id: Annotated[ + str, "The ID of the custom destination to retrieve details from your organization." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetLogsCustomDestination'."]: + """Retrieve details of a specific custom log destination. + + Use this tool to get information about a specific custom destination for logs in your organization. Useful for managing and configuring log destinations effectively.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/custom-destinations/{custom_destination_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + custom_destination_id=custom_destination_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_logs_custom_destination( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + custom_destination_id: Annotated[ + str | None, + "The unique identifier for the custom logs destination 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 'UpdateLogsCustomDestination'."]: + """Update specific fields of a custom logs destination. + + Use this tool to update the selected fields of a specific custom logs destination within your organization. This is useful for modifying destination configurations in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATELOGSCUSTOMDESTINATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not custom_destination_id: + missing_params.append(("custom_destination_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATELOGSCUSTOMDESTINATION_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["UPDATELOGSCUSTOMDESTINATION_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/logs/config/custom-destinations/{custom_destination_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + custom_destination_id=custom_destination_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATELOGSCUSTOMDESTINATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_logs_metrics_list( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListLogsMetrics'."]: + """Retrieve a list of log-based metrics and their definitions. + + Use this tool to obtain the list of configured log-based metrics from Datadog, along with their definitions. This can be helpful for monitoring and analyzing log data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/metrics".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_log_based_metric( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateLogsMetric'."]: + """Create a metric from your ingested logs. + + Use this tool to create a metric based on the logs ingested in your Datadog organization. It returns the log-based metric object when the request is successful. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATELOGBASEDMETRIC_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["CREATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/logs/config/metrics".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_log_metric( + context: ToolContext, + log_metric_name: Annotated[str, "The name of the log-based metric you want to delete."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteLogsMetric'."]: + """Delete a specific log-based metric from your organization. + + Call this tool to remove a specific log-based metric from your Datadog organization by specifying the metric ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=log_metric_name + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_log_based_metric( + context: ToolContext, + log_based_metric_name: Annotated[ + str, "The name of the log-based metric to retrieve from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetLogsMetric'."]: + """Retrieve a specific log-based metric from Datadog. + + Use this tool to access detailed information about a specific log-based metric from your Datadog account. This is useful for monitoring and analyzing your organization's log metrics.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=log_based_metric_name + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_log_based_metric( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + log_metric_name: Annotated[ + str | None, + "The name of the log-based metric to be updated. It specifies which metric to modify in your 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 'UpdateLogsMetric'."]: + """Update a specific log-based metric in your organization. + + Call this tool to update a particular log-based metric within your organization using Datadog's API. Ideal for modifying metrics configurations to refine log analysis and monitoring. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not log_metric_name: + missing_params.append(("log_metric_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATELOGBASEDMETRIC_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["UPDATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/logs/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=log_metric_name + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_restriction_queries( + context: ToolContext, + page_number: Annotated[ + int | None, + "The specific page number of results to return. Useful for paginating through result sets.", + ] = 0, + page_size: Annotated[ + int | None, "The number of results to return per page. Maximum value is 100." + ] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRestrictionQueries'."]: + """Retrieve all restriction queries with their details. + + This tool retrieves all restriction queries from Datadog, including their names and IDs. Use it when you need to review or manage restriction queries within your Datadog configuration.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"page[size]": page_size, "page[number]": page_number}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_datadog_restriction_query( + context: ToolContext, + restriction_query: Annotated[ + str | None, + "A string representing the restriction query to manage log access and configurations.", + ] = None, + restriction_query_resource_type: Annotated[ + str | None, + "Specifies the type of restriction query resource. Must be 'logs_restriction_queries'.", + ] = "logs_restriction_queries", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateRestrictionQuery'."]: + """Create a new restriction query in Datadog. + + This tool creates a restriction query for your organization in Datadog. Use it to manage log access and configurations.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"restriction_query": restriction_query}, + "type": restriction_query_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_role_restriction_query( + context: ToolContext, + role_id: Annotated[ + str, "The unique identifier for the role whose restriction query you want to retrieve." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRoleRestrictionQuery'."]: + """Retrieve the restriction query for a specific role. + + Use this tool to get the restriction query details associated with a specific role in Datadog. The tool fetches information relevant to access restrictions for the role identified.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/role/{role_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_user_restriction_queries( + context: ToolContext, + user_identifier: Annotated[ + str, "The unique ID of the user for retrieving restriction queries." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListUserRestrictionQueries'."]: + """Retrieve restriction queries for a specific user. + + Use this tool to get all restriction queries associated with a specified user in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/user/{user_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), user_id=user_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_restriction_query( + context: ToolContext, + restriction_query_id: Annotated[ + str, "The unique ID of the restriction query to be deleted from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteRestrictionQuery'."]: + """Deletes a restriction query from Datadog logs configuration. + + Use this tool to delete a specific restriction query within Datadog's logs configuration. It should be called when you need to remove a restriction query by its unique ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + restriction_query_id=restriction_query_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_restriction_query( + context: ToolContext, + restriction_query_id: Annotated[ + str, "The unique identifier for the restriction query to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRestrictionQuery'."]: + """Retrieve a restriction query by its ID within Datadog. + + Use this tool to access the details of a specific restriction query in your Datadog organization by providing the `restriction_query_id`.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + restriction_query_id=restriction_query_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_restriction_query( + context: ToolContext, + restriction_query_id: Annotated[str, "The ID of the restriction query to be edited."], + restriction_query_resource_type: Annotated[ + str | None, "The type of restriction query resource. Must be 'logs_restriction_queries'." + ] = "logs_restriction_queries", + restriction_query_string: Annotated[ + str | None, "The restriction query string to update for the restriction query in Datadog." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateRestrictionQuery'."]: + """Edit an existing restriction query in Datadog. + + Use this tool to modify restriction queries in Datadog's log configuration. Call this when you need to update specific restriction parameters for log queries.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"restriction_query": restriction_query_string}, + "type": restriction_query_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + restriction_query_id=restriction_query_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_role_from_restriction_query( + context: ToolContext, + restriction_query_id: Annotated[ + str, "The ID of the restriction query to remove the role from." + ], + role_type: Annotated[str | None, "The type of the role, must be 'roles'."] = "roles", + role_unique_identifier: Annotated[ + str | None, "The unique identifier of the role to be removed from the restriction query." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'RemoveRoleFromRestrictionQuery'."]: + """Removes a role from a Datadog restriction query. + + Use this tool to delete a specific role from a restriction query in Datadog. Appropriate for situations where you need to manage access by modifying restriction queries.""" # noqa: E501 + request_data = remove_none_values({"data": {"id": role_unique_identifier, "type": role_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + restriction_query_id=restriction_query_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_restriction_query_roles( + context: ToolContext, + restriction_query_id: Annotated[ + str, "The unique identifier of the restriction query to fetch associated roles." + ], + page_number: Annotated[ + int | None, + "The specific page number to return in the response. Use this to navigate through paginated results.", # noqa: E501 + ] = 0, + page_size: Annotated[ + int | None, "Specify the number of results per page. The maximum allowed value is 100." + ] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRestrictionQueryRoles'."]: + """Retrieve roles associated with a specific restriction query. + + This tool fetches all roles that are linked to a specified restriction query within Datadog. Use this when you need to identify which roles have permissions based on a specific restriction query.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + restriction_query_id=restriction_query_id, + ), + method="GET", + params=remove_none_values({"page[size]": page_size, "page[number]": page_number}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_role_to_restriction_query( + context: ToolContext, + restriction_query_id: Annotated[ + str, "The ID of the restriction query to which a role will be added." + ], + role_type: Annotated[str | None, "The type of the role, expected to be 'roles'."] = "roles", + role_unique_identifier: Annotated[ + str | None, "The unique identifier of the role to be added to the restriction query." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AddRoleToRestrictionQuery'."]: + """Adds a role to a restriction query for logs configuration. + + This tool is used to add a specific role to an existing restriction query in Datadog's logs configuration. Call this tool when you need to update restriction queries by including additional roles.""" # noqa: E501 + request_data = remove_none_values({"data": {"id": role_unique_identifier, "type": role_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + restriction_query_id=restriction_query_id, + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_logs_matching_query( + context: ToolContext, + max_timestamp_for_logs: Annotated[ + str | None, + "Specify the maximum timestamp for the requested logs. This represents the latest time point for log retrieval.", # noqa: E501 + ] = None, + maximum_logs_in_response: Annotated[ + int | None, "Maximum number of logs to include in the response. Specify an integer value." + ] = 10, + minimum_timestamp_for_logs: Annotated[ + str | None, + "Specify the earliest timestamp for the logs to be retrieved. Use ISO 8601 format for the timestamp.", # noqa: E501 + ] = None, + pagination_cursor: Annotated[ + str | None, + "Cursor for pagination to retrieve the next set of log results. Use the cursor from the previous query to continue fetching results.", # noqa: E501 + ] = None, + search_indexes: Annotated[ + list[str] | None, "Specify the indexes to search. Defaults to '*' for all indexes." + ] = None, + search_query: Annotated[ + str | None, "Search query using logs syntax to filter specific logs from Datadog." + ] = None, + sort_order: Annotated[ + str | None, + "Specify the order of logs in results: 'timestamp' for ascending or '-timestamp' for descending.", # noqa: E501 + ] = None, + storage_type: Annotated[ + str | None, + "Specifies the storage type. Options are 'indexes', 'online-archives', or 'flex'.", + ] = "indexes", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListLogsGet'."]: + """Retrieve logs that match a search query with pagination. + + Use this tool to search and filter logs in Datadog based on a specified query. It's ideal for retrieving specific log data for analysis or monitoring purposes. For extensive archiving, consider Datadog's archive features instead.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/events".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": search_query, + "filter[indexes]": search_indexes, + "filter[from]": minimum_timestamp_for_logs, + "filter[to]": max_timestamp_for_logs, + "filter[storage_tier]": storage_type, + "sort": sort_order, + "page[cursor]": pagination_cursor, + "page[limit]": maximum_logs_in_response, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_logs( + context: ToolContext, + indexes_to_search: Annotated[ + list[str] | None, "Specify the indexes to search. Defaults to ['*'] for all indexes." + ] = None, + max_log_time: Annotated[ + str | None, + "The maximum time for the requested logs. Supports date math and regular timestamps (milliseconds).", # noqa: E501 + ] = "now", + maximum_logs_in_response: Annotated[ + int | None, + "Specifies the maximum number of logs to return in the response, allowing control over pagination size.", # noqa: E501 + ] = 10, + minimum_time: Annotated[ + str | None, + "The minimum time for the requested logs, supports date math and regular timestamps (milliseconds).", # noqa: E501 + ] = "now-15m", + pagination_cursor: Annotated[ + str | None, + "Cursor for retrieving the next set of paginated log results from a previous query.", + ] = None, + query_timezone: Annotated[ + str | None, + "Specify the timezone as GMT, UTC, an offset (e.g., UTC+1), or a Timezone Database ID (e.g., America/New_York).", # noqa: E501 + ] = "UTC", + search_query: Annotated[ + str | None, "The search query following Datadog's log search syntax to filter logs." + ] = "*", + sort_order: Annotated[ + str | None, + "Defines how logs are sorted: 'timestamp' for ascending order and '-timestamp' for descending order.", # noqa: E501 + ] = None, + storage_type: Annotated[ + str | None, 'Specify the storage type: "indexes", "online-archives", or "flex".' + ] = "indexes", + time_offset_seconds: Annotated[ + int | None, "The time offset in seconds to apply to the log search query." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListLogs'."]: + """Retrieve logs based on a search query with pagination. + + Use this tool to search and filter logs according to specified criteria. Note that results are paginated. Consider Datadog's archive capabilities for organizational log archiving needs.""" # noqa: E501 + request_data = remove_none_values({ + "filter": { + "from": minimum_time, + "indexes": indexes_to_search, + "query": search_query, + "storage_tier": storage_type, + "to": max_log_time, + }, + "options": {"timeOffset": time_offset_seconds, "timezone": query_timezone}, + "page": {"cursor": pagination_cursor, "limit": maximum_logs_in_response}, + "sort": sort_order, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/logs/events/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_metric_tag_configurations( + context: ToolContext, + filter_by_query_status: Annotated[ + bool | None, + "Filter custom metrics that have or have not been queried within the specified time window.", # noqa: E501 + ] = None, + filter_metrics_by_tags: Annotated[ + str | None, + "Filter metrics by tags using boolean/wildcard expressions; combine with queried filter only.", # noqa: E501 + ] = None, + filter_metrics_used_in_assets: Annotated[ + bool | None, "Boolean to filter metrics used in dashboards, monitors, notebooks, and SLOs." + ] = None, + filter_tag_configurations: Annotated[ + str | None, + "Filter tag configurations by specified configured tags. Use string values representing specific criteria for filtering.", # noqa: E501 + ] = None, + include_metrics_with_configured_tags: Annotated[ + bool | None, "Set to true to filter and include only custom metrics with configured tags." + ] = None, + include_percentile_aggregations: Annotated[ + bool | None, + "Set to true to include distributions with additional percentile aggregations enabled. Set to false to exclude them.", # noqa: E501 + ] = None, + look_back_seconds: Annotated[ + int | None, + "The number of seconds to look back for applying a filter on tags or queried metrics. Defaults to 3600 seconds (1 hour) with a max of 2,592,000 seconds (30 days).", # noqa: E501 + ] = None, + max_results_per_page: Annotated[ + int | None, "Maximum number of metric configurations to return per page." + ] = 10000, + metric_type_filter: Annotated[ + str | None, "Filter metrics by type. Options are 'non_distribution' or 'distribution'." + ] = "distribution", + pagination_cursor: Annotated[ + str | None, + "String to query the next page of metric results. Use 'next_cursor' from the previous response. Null when all pages are retrieved.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListTagConfigurations'."]: + """Retrieve all metrics configurable in Datadog's Metrics Summary. + + Use this tool to get a list of all metrics that can be configured on the Metrics Summary page or with Metrics without Limits™. It supports pagination through cursor-based navigation.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[configured]": include_metrics_with_configured_tags, + "filter[tags_configured]": filter_tag_configurations, + "filter[metric_type]": metric_type_filter, + "filter[include_percentiles]": include_percentile_aggregations, + "filter[queried]": filter_by_query_status, + "filter[tags]": filter_metrics_by_tags, + "filter[related_assets]": filter_metrics_used_in_assets, + "window[seconds]": look_back_seconds, + "page[size]": max_results_per_page, + "page[cursor]": pagination_cursor, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_bulk_tags_metrics( + context: ToolContext, + metric_name_prefix: Annotated[ + str, "A text prefix to match against metric names for tag deletion." + ], + metric_bulk_configure_tags_resource: Annotated[ + str, + "The identifier for the metric bulk configure tags resource, which should be 'metric_bulk_configure_tags'.", # noqa: E501 + ] = "metric_bulk_configure_tags", + notification_emails: Annotated[ + list[str] | None, "A list of account emails to notify when the configuration is applied." + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'DeleteBulkTagsMetricsConfiguration'." +]: + """Delete custom lists of queryable tag keys for metrics. + + This tool deletes all custom queryable tag keys for a given set of metrics identified by a name prefix. It is used with application keys that have 'Manage Tags for Metrics' permission and can notify specified account emails on completion.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"emails": notification_emails}, + "id": metric_name_prefix, + "type": metric_bulk_configure_tags_resource, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/config/bulk-tags".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def configure_bulk_tags_for_metrics( + context: ToolContext, + metric_name_prefix: Annotated[ + str, "A text prefix used to match against metric names for bulk tags configuration." + ], + actively_queried_tags_window_seconds: Annotated[ + float | None, + "Time window in seconds for configuring actively queried tags for matching metrics. Minimum is 1 second, maximum is 7,776,000 seconds (90 days).", # noqa: E501 + ] = None, + exclude_configured_tags: Annotated[ + bool | None, + "Set to true to exclude configured tags and include all other tags. Defaults to false.", + ] = None, + metric_bulk_configure_tags_resource: Annotated[ + str, + "The resource identifier for configuring bulk tags for metrics. Must be set to 'metric_bulk_configure_tags'.", # noqa: E501 + ] = "metric_bulk_configure_tags", + notification_emails: Annotated[ + list[str] | None, "A list of account emails to notify when the configuration is applied." + ] = None, + override_existing_configurations: Annotated[ + bool | None, + "Set to true to override any existing configurations for the metric with the new tags. Defaults to true.", # noqa: E501 + ] = None, + tags_to_apply: Annotated[ + list[str] | None, "A list of tag names to apply to the metric configuration in Datadog." + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateBulkTagsMetricsConfiguration'." +]: + """Configure bulk tags for specified metrics in Datadog. + + Use this tool to create and define queryable tag keys for existing count, gauge, rate, and distribution metrics in Datadog by specifying a metric name prefix. It manages tags configurations and sends results to account email addresses. Suitable for users with 'Manage Tags for Metrics' permission.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "emails": notification_emails, + "exclude_tags_mode": exclude_configured_tags, + "include_actively_queried_tags_window": actively_queried_tags_window_seconds, + "override_existing_configurations": override_existing_configurations, + "tags": tags_to_apply, + }, + "id": metric_name_prefix, + "type": metric_bulk_configure_tags_resource, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/config/bulk-tags".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_active_metric_configurations( + context: ToolContext, + metric_name: Annotated[ + str, "Specify the name of the metric to retrieve active tags and aggregations for." + ], + lookback_seconds: Annotated[ + int | None, + "Number of seconds to look back from the current time. Defaults to 604800 seconds (1 week). Minimum is 7200 seconds (2 hours), and maximum is 2630000 seconds (1 month).", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListActiveMetricConfigurations'."]: + """Retrieve active metric tags and aggregations for a given metric name. + + Use this tool to get the currently active tags and aggregations for dashboards, monitors, and APIs associated with a specified metric name. It helps to understand how metrics are being actively used across various platforms.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/active-configurations".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="GET", + params=remove_none_values({"window[seconds]": lookback_seconds}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_metric_tags( + context: ToolContext, + metric_name: Annotated[ + str, + "The name of the metric to retrieve indexed tag key-value pairs from over the past hour.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListTagsByMetricName'."]: + """Retrieve indexed tags for a metric over the last hour. + + Use this tool to get the indexed tag key-value pairs for a specific metric name within the past hour. Useful for analyzing and viewing metric-related tag data from Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/all-tags".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_metric_assets( + context: ToolContext, + metric_name: Annotated[ + str, + "The specific name of the metric to retrieve associated assets for. This is essential for querying the correct data.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListMetricAssets'."]: + """Retrieve assets associated with a specific metric. + + This tool returns a list of dashboards, monitors, notebooks, and SLOs where a specific metric is used. Useful for tracking where a metric appears across Datadog's tools, updated every 24 hours.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/assets".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def estimate_metrics_output( + context: ToolContext, + metric_name: Annotated[ + str, "Specifies the name of the metric for which to estimate cardinality." + ], + filtered_tag_keys: Annotated[ + str | None, + "Filtered tag keys that the metric is configured to query with, specified as a string.", + ] = None, + ignore_num_aggregations: Annotated[ + int | None, + "This argument is deprecated and has no impact on volume estimation. It is ignored in the current tool implementation.", # noqa: E501 + ] = None, + include_percentile_aggregators: Annotated[ + bool | None, + "Boolean to estimate cardinality if distribution metrics have additional percentile aggregators.", # noqa: E501 + ] = None, + lookback_hours: Annotated[ + int | None, + "Specify the number of hours to look back from the current time to estimate cardinality. Defaults to 0 if not provided.", # noqa: E501 + ] = None, + lookback_timespan_hours: Annotated[ + int | None, + "A window, in hours, from the lookback to estimate cardinality. Minimum is 1 hour.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'EstimateMetricsOutputSeries'."]: + """Estimate cardinality of a metric with specific settings. + + Use this tool to get the estimated cardinality for a metric based on a specific tag, percentile, and number of aggregations configuration. This is useful for analyzing metric data within Datadog using Metrics without Limits™.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/estimate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="GET", + params=remove_none_values({ + "filter[groups]": filtered_tag_keys, + "filter[hours_ago]": lookback_hours, + "filter[num_aggregations]": ignore_num_aggregations, + "filter[pct]": include_percentile_aggregators, + "filter[timespan_h]": lookback_timespan_hours, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_metric_tag_cardinality( + context: ToolContext, + metric_name: Annotated[ + str, "The name of the metric for which cardinality details of tags are to be retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetMetricTagCardinalityDetails'."]: + """Retrieve cardinality details of tags for a specific metric. + + This tool is used to get the cardinality details of tags associated with a specific metric in Datadog. It's useful for understanding the distribution and uniqueness of tags related to the specified metric.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/tag-cardinalities".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_metric_tag_configuration( + context: ToolContext, + metric_name: Annotated[ + str, + "The name of the metric whose tag configuration is to be deleted. Ensure the application key has the necessary permissions.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteTagConfiguration'."]: + """Delete a metric's tag configuration. + + Use this tool to delete the tag configuration for a specific metric in Datadog. Ensure the application key has 'Manage Tags for Metrics' permission.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_metric_tag_configuration( + context: ToolContext, + metric_name: Annotated[ + str, "The name of the metric for which to retrieve the tag configuration in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListTagConfigurationByName'."]: + """Retrieve the tag configuration for a specific metric. + + Use this tool to fetch the tag configuration associated with a specific metric name in Datadog. This is helpful for accessing detailed tagging information for metrics.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_metric_tag_configuration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + metric_name: Annotated[ + str | None, + "Specify the name of the metric whose tag configuration you wish 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 'UpdateTagConfiguration'."]: + """Update the tag configuration of a metric in Datadog. + + This tool updates the tag configuration for a specific metric in Datadog. It supports updating percentile or custom aggregations, and changing tag exclusion modes. Use it when you need to manage or modify metric tags, especially to switch from an allow-list to a deny-list. Requires specific permissions and an existing configuration. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not metric_name: + missing_params.append(("metric_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEMETRICTAGCONFIGURATION_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["UPDATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_metric_tag_configuration( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + metric_name: Annotated[ + str | None, + "The name of the existing metric for which the tag configuration is to be created. This is required to identify the specific metric in Datadog. 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 'CreateTagConfiguration'."]: + """Create queryable tag configurations for metrics. + + This tool is used to create and define a list of queryable tag keys for an existing metric in Datadog, such as count, gauge, rate, or distribution metrics. It allows for optional percentile aggregations on distribution metrics. By setting the 'exclude_tags_mode' to true, users can switch from an allow-list to a deny-list mode, where defined tags are not queryable. This tool requires the `Manage Tags for Metrics` permission. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not metric_name: + missing_params.append(("metric_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEMETRICTAGCONFIGURATION_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["CREATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_metric_volumes( + context: ToolContext, + metric_name: Annotated[str, "The name of the metric to retrieve volumes for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListVolumesByMetricName'."]: + """Retrieve distinct metric volumes by name. + + Use this tool to view distinct volumes for a specified metric name. Note that custom metrics generated in-app may return `null` for ingested volumes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/metrics/{metric_name}/volumes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_name=metric_name + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_monitor_notification_rules( + context: ToolContext, + filter_criteria: Annotated[ + str | None, + "JSON string to filter rules by text, tags, or recipients. Use keys: `text`, `tags`, `recipients`.", # noqa: E501 + ] = None, + include_related_resources: Annotated[ + str | None, + "Specify related resources to include in the response, such as `created_by`. Use a comma-separated list.", # noqa: E501 + ] = None, + number_of_rules_per_page: Annotated[ + int | None, "The number of rules to return per page. Defaults to 100 if not specified." + ] = None, + sort_order: Annotated[ + str | None, + "String for sort order. Example: `name:asc`. Directions: `asc`, `desc`. Fields: `name`, `created_at`.", # noqa: E501 + ] = None, + starting_page_number: Annotated[ + int | None, + "The page number to begin pagination. Defaults to the first page if not specified.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetMonitorNotificationRules'."]: + """Retrieve all monitor notification rules from Datadog. + + Call this tool to get a comprehensive list of all monitor notification rules configured in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/notification_rule".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page": starting_page_number, + "per_page": number_of_rules_per_page, + "sort": sort_order, + "filters": filter_criteria, + "include": include_related_resources, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_monitor_notification_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateMonitorNotificationRule'."]: + """Creates a monitor notification rule in Datadog. + + Use this tool to set up a notification rule for a specific monitor in Datadog. This allows for alerting based on monitor condition changes. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEMONITORNOTIFICATIONRULE_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["CREATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/notification_rule".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_monitor_notification_rule( + context: ToolContext, + monitor_notification_rule_id: Annotated[ + str, "The unique identifier for the monitor notification rule to delete in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteMonitorNotificationRule'."]: + """Delete a monitor notification rule by ID. + + Use this tool to delete a specific monitor notification rule in Datadog by providing the rule ID. Useful for managing and cleaning up notification rules 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="https://{datadog_base_url}/api/v2/monitor/notification_rule/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + rule_id=monitor_notification_rule_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_monitor_notification_rule( + context: ToolContext, + monitor_rule_id: Annotated[ + str, + "ID of the monitor notification rule to fetch. This is required to retrieve specific rule details.", # noqa: E501 + ], + include_related_resources: Annotated[ + str | None, + "Comma-separated list of related resource paths to include in the response, such as `created_by`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetMonitorNotificationRule'."]: + """Retrieve a monitor notification rule by its ID. + + Use this tool to fetch details of a specific monitor notification rule in Datadog by providing the rule ID. It can be useful for checking the configuration of alerting and notification rules.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/notification_rule/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=monitor_rule_id + ), + method="GET", + params=remove_none_values({"include": include_related_resources}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_monitor_notification_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + monitor_notification_rule_id: Annotated[ + str | None, + "ID of the monitor notification rule 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 'UpdateMonitorNotificationRule'."]: + """Updates a Datadog monitor notification rule. + + Use this tool to update a notification rule for a monitor in Datadog by specifying the `rule_id`. It should be called when you need to change the settings or behavior of an existing monitor notification rule. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not monitor_notification_rule_id: + missing_params.append(("monitor_notification_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEMONITORNOTIFICATIONRULE_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["UPDATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/notification_rule/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + rule_id=monitor_notification_rule_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_monitor_config_policies( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListMonitorConfigPolicies'."]: + """Retrieve all monitor configuration policies. + + Use this tool to get a comprehensive list of monitor configuration policies from Datadog. This can be useful for managing and understanding monitoring setups.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/policy".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_monitor_config_policy( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateMonitorConfigPolicy'."]: + """Create a new monitor configuration policy in Datadog. + + Use this tool to create monitor configuration policies within Datadog, specifying the desired configurations and parameters. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEMONITORCONFIGPOLICY_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["CREATEMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/policy".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_monitor_policy( + context: ToolContext, + monitor_policy_id: Annotated[str, "ID of the monitor configuration policy to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteMonitorConfigPolicy'."]: + """Deletes a specific monitor configuration policy.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/policy/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=monitor_policy_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_monitor_configuration_policy( + context: ToolContext, + monitor_policy_id: Annotated[ + str, "ID of the monitor configuration policy to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetMonitorConfigPolicy'."]: + """Retrieve a monitor's configuration policy using its ID. + + This tool fetches detailed information about a specific monitor configuration policy from Datadog using the policy ID. It should be called when you need to access the configuration details of a monitor policy.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/policy/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=monitor_policy_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_monitor_config_policy( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + monitor_policy_id: Annotated[ + str | None, + "The ID of the monitor configuration policy 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 'UpdateMonitorConfigPolicy'."]: + """Edit an existing monitor configuration policy in Datadog. + + This tool allows you to update the configuration of an existing monitor policy in Datadog by specifying the policy ID. Use it when changes to monitor policies are required. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "EDITMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not monitor_policy_id: + missing_params.append(("monitor_policy_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["EDITMONITORCONFIGPOLICY_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["EDITMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/policy/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=monitor_policy_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EDITMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_all_monitor_user_templates( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListMonitorUserTemplates'."]: + """Retrieve all monitor user templates from Datadog. + + Use this tool to get a list of all monitor user templates available in Datadog. It can help in managing and reviewing template configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/template".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_monitor_user_template( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateMonitorUserTemplate'."]: + """Create a new monitor user template in Datadog. + + This tool should be called to create a new user template for monitoring within Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEMONITORUSERTEMPLATE_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["CREATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/template".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def validate_monitor_user_template( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ValidateMonitorUserTemplate'."]: + """Validate the structure and content of a monitor user template. + + Use this tool to ensure that a monitor user template in Datadog meets the required structural and content standards. This is essential for verifying templates before implementation. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "VALIDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["VALIDATEMONITORUSERTEMPLATE_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["VALIDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/template/validate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["VALIDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_monitor_user_template( + context: ToolContext, + monitor_user_template_id: Annotated[ + str, "ID of the monitor user template to be deleted in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteMonitorUserTemplate'."]: + """Deletes a monitor user template by its ID on Datadog. + + Use this tool to delete an existing monitor user template in Datadog by specifying the template's ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/template/{template_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + template_id=monitor_user_template_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_monitor_user_template( + context: ToolContext, + template_id: Annotated[ + str, "The unique identifier for the specific monitor user template to retrieve." + ], + include_all_versions: Annotated[ + bool | None, "Include all versions of the template in the response if true." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetMonitorUserTemplate'."]: + """Retrieve a monitor user template by ID from Datadog. + + Use this tool to get detailed information about a specific monitor user template in Datadog by providing 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="https://{datadog_base_url}/api/v2/monitor/template/{template_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), template_id=template_id + ), + method="GET", + params=remove_none_values({"with_all_versions": include_all_versions}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_monitor_user_template( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + monitor_user_template_id: Annotated[ + str | None, + "ID of the monitor user template to update with a new version. 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 'UpdateMonitorUserTemplate'."]: + """Creates a new version of a monitor user template in Datadog. + + Use this tool to create a new version of an existing monitor user template in Datadog when updates or changes are needed to a monitor's settings. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not monitor_user_template_id: + missing_params.append(("monitor_user_template_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEMONITORUSERTEMPLATE_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["UPDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/template/{template_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + template_id=monitor_user_template_id, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def validate_monitor_template( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + monitor_template_id: Annotated[ + str | None, + "ID of the monitor user template to be validated. 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 'ValidateExistingMonitorUserTemplate'." +]: + """Validate the structure and content of a monitor template update. + + This tool is used to validate the structure and content of an existing monitor user template being updated to a new version. It ensures that the changes align with the required format and content guidelines. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "VALIDATEMONITORTEMPLATE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not monitor_template_id: + missing_params.append(("monitor_template_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["VALIDATEMONITORTEMPLATE_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["VALIDATEMONITORTEMPLATE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/monitor/template/{template_id}/validate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), template_id=monitor_template_id + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["VALIDATEMONITORTEMPLATE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_monitor_downtimes( + context: ToolContext, + monitor_id: Annotated[ + int, + "The ID of the monitor for which to retrieve active downtimes. This should be provided as an integer.", # noqa: E501 + ], + maximum_downtime_count: Annotated[ + int | None, "Specifies the maximum number of downtime entries to return in the response." + ] = 30, + pagination_offset: Annotated[ + int | None, + "Specify the offset for the beginning of the returned page, to manage pagination.", + ] = 0, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListMonitorDowntimes'."]: + """Retrieve active downtimes for a specified monitor. + + Use this tool to get all active downtimes associated with a specific monitor ID in Datadog. It should be called when you need to check the downtime status of a monitor.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/monitor/{monitor_id}/downtime_matches".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), monitor_id=monitor_id + ), + method="GET", + params=remove_none_values({ + "page[offset]": pagination_offset, + "page[limit]": maximum_downtime_count, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_device_list( + context: ToolContext, + filter_by_tag: Annotated[str | None, "Filter devices by a specified tag."] = None, + page_number: Annotated[ + int | None, "Specific page number to return when fetching the devices list." + ] = 0, + page_size: Annotated[ + int | None, "Specify the size for a given page, with a maximum allowed value of 100." + ] = 10, + sort_devices_by: Annotated[ + str | None, "Specify the field by which to sort the devices list." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListDevices'."]: + """Retrieve a list of devices from Datadog. + + Use this tool to get a comprehensive list of all devices managed by the Datadog service. It retrieves data from the specified API endpoint and provides an overview of available devices.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ndm/devices".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_devices_by, + "filter[tag]": filter_by_tag, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_device_details( + context: ToolContext, + device_id: Annotated[str, "The unique identifier of the device to retrieve details for."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetDevice'."]: + """Retrieve specific device details. + + Call this tool to obtain detailed information about a specified device using its device ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ndm/devices/{device_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), device_id=device_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_device_interfaces( + context: ToolContext, + device_identifier: Annotated[ + str, "The unique ID of the device to retrieve interfaces for. Expected to be a string." + ], + include_ip_addresses: Annotated[ + bool | None, + "Specify true to include IP addresses of the interfaces, or false to exclude them.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetInterfaces'."]: + """Fetches the list of interfaces for a given device. + + Use this tool to obtain the list of interfaces associated with a particular device from Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ndm/interfaces".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "device_id": device_identifier, + "get_ip_addresses": include_ip_addresses, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_device_user_tags( + context: ToolContext, + device_identifier: Annotated[ + str, "The unique identifier of the device to fetch tags for from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListDeviceUserTags'."]: + """Retrieve the list of tags for a specific device. + + This tool calls the Datadog API to fetch user tags for a given device, identified by its ID. Use this when you need to understand or manage tags associated with a device for tracking or organizational purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ndm/tags/devices/{device_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), device_id=device_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_device_tags( + context: ToolContext, + device_identifier: Annotated[str, "The ID of the device for which tags are being updated."], + device_id_for_tags: Annotated[ + str | None, "The ID of the device for which the tags will be updated." + ] = None, + device_tags: Annotated[ + list[str] | None, "A list of tags to update for the device. Each tag should be a string." + ] = None, + resource_type: Annotated[str | None, "The type of resource, always set to 'tags'."] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateDeviceUserTags'."]: + """Update the tags for a specified device. + + Use this tool to modify the tags associated with a device in Datadog. It's called when there's a need to update or change the tags for device management. The tool confirms the modifications made to the device tags.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"tags": device_tags}, + "id": device_id_for_tags, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/ndm/tags/devices/{device_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), device_id=device_identifier + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aggregated_connections( + context: ToolContext, + connection_limit: Annotated[ + int | None, "Set the number of connections to be returned, maximum 7500, default 100." + ] = 100, + end_query_window: Annotated[ + int | None, + "Unix timestamp for the end of the query window. Defaults to current time if not provided.", + ] = None, + filter_by_tags: Annotated[ + str | None, + "Comma-separated list of tags to filter connections by for more targeted querying.", + ] = None, + group_by_fields: Annotated[ + str | None, + "Comma-separated list of fields to group connections by, with a maximum of 10 fields.", + ] = None, + start_time_unix_timestamp: Annotated[ + int | None, + "Unix timestamp for the start of the query window. Defaults to 15 minutes before `end_time_unix_timestamp` if not provided.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAggregatedConnections'."]: + """Retrieve all aggregated network connections from Datadog. + + This tool is used to get a comprehensive view of all aggregated network connections. It's ideal for monitoring and analyzing network activity.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/network/connections/aggregate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "from": start_time_unix_timestamp, + "to": end_query_window, + "group_by": group_by_fields, + "tags": filter_by_tags, + "limit": connection_limit, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_aggregated_dns_traffic( + context: ToolContext, + end_timestamp: Annotated[ + int | None, + "Unix timestamp (seconds since epoch) for the end of the query window. Defaults to current time if not provided.", # noqa: E501 + ] = None, + filter_dns_traffic_by_tags: Annotated[ + str | None, "Comma-separated list of tags to filter the DNS traffic data within the query." + ] = None, + group_dns_traffic_by_fields: Annotated[ + str | None, + "Comma-separated list of fields to group DNS traffic by. Defaults to `network.dns_query` if unspecified. Use `server_ungrouped` to avoid grouping. Maximum of 10 fields.", # noqa: E501 + ] = None, + max_dns_entries: Annotated[ + int | None, + "Number of aggregated DNS entries to return, up to a maximum of 7500. Default is 100.", + ] = 100, + start_query_timestamp: Annotated[ + int | None, + "Unix timestamp for the query window start. Defaults to 15 min before `to` timestamp if not specified.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetAggregatedDns'."]: + """Retrieve all aggregated DNS traffic data. + + This tool fetches all the aggregated DNS traffic data using Datadog's API. It should be called when you need information about DNS traffic patterns or metrics.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/network/dns/aggregate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "from": start_query_timestamp, + "to": end_timestamp, + "group_by": group_dns_traffic_by_fields, + "tags": filter_dns_traffic_by_tags, + "limit": max_dns_entries, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_on_call_escalation_policy( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + include_relationships: Annotated[ + str | None, + "Comma-separated list of included relationships to return. Allowed values: teams, steps, steps.targets. 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 'CreateOnCallEscalationPolicy'."]: + """Create a new On-Call escalation policy in Datadog. + + This tool is used to create a new On-Call escalation policy in Datadog. Call this tool when you need to set up or adjust escalation protocols within your team for handling alerts. + + 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[ + "CREATEONCALLESCALATIONPOLICY_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEONCALLESCALATIONPOLICY_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["CREATEONCALLESCALATIONPOLICY_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/on-call/escalation-policies".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEONCALLESCALATIONPOLICY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_escalation_policy( + context: ToolContext, + escalation_policy_id: Annotated[str, "The unique ID of the escalation policy to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteOnCallEscalationPolicy'."]: + """Delete an On-Call escalation policy. + + Use this tool to delete an existing On-Call escalation policy by providing its policy ID. This is useful for managing or updating your escalation policies within the Datadog platform.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/escalation-policies/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=escalation_policy_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_on_call_escalation_policy( + context: ToolContext, + escalation_policy_id: Annotated[ + str, "The unique identifier for the on-call escalation policy to retrieve." + ], + include_relationships: Annotated[ + str | None, + "A comma-separated list of relationships to include in the response. Allowed values: `teams`, `steps`, `steps.targets`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetOnCallEscalationPolicy'."]: + """Retrieve details of an On-Call escalation policy. + + This tool is used to retrieve information about a specific on-call escalation policy from Datadog. It should be called when there's a need to understand the configuration or details of an on-call policy by providing the policy ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/escalation-policies/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=escalation_policy_id + ), + method="GET", + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_on_call_escalation_policy( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + escalation_policy_id: Annotated[ + str | None, + "The unique identifier of the escalation policy to be updated. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to be returned. Options: `teams`, `steps`, `steps.targets`. 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 'UpdateOnCallEscalationPolicy'."]: + """Update an On-Call escalation policy in Datadog. + + This tool allows updating an existing On-Call escalation policy in Datadog. Use it to modify the details of a specific policy by providing the necessary updates. + + 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[ + "UPDATEONCALLESCALATIONPOLICY_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 escalation_policy_id: + missing_params.append(("escalation_policy_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEONCALLESCALATIONPOLICY_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["UPDATEONCALLESCALATIONPOLICY_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/on-call/escalation-policies/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=escalation_policy_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEONCALLESCALATIONPOLICY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def trigger_on_call_page( + context: ToolContext, + issue_summary: Annotated[ + str | None, "A short summary of the issue or context for the On-Call Page." + ] = None, + on_call_page_urgency_level: Annotated[ + str | None, "Specifies the urgency level of the On-Call Page. Accepts 'low' or 'high'." + ] = "high", + page_title: Annotated[ + str | None, + "The title of the On-Call Page. Provide a concise and clear title to identify the issue or alert.", # noqa: E501 + ] = None, + resource_type_for_on_call: Annotated[ + str | None, "Specify the type of resource for creating an On-Call Page. Use `pages`." + ] = "pages", + tags_for_categorization: Annotated[ + list[str] | None, "An array of tags for categorizing or filtering the On-Call page." + ] = None, + target_identifier: Annotated[ + str | None, + "Identifier for the target, such as a team handle or user ID, used to specify the intended recipient of the On-Call Page.", # noqa: E501 + ] = None, + target_type: Annotated[ + str | None, "Specify the kind of target: 'team_id', 'team_handle', or 'user_id'." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateOnCallPage'."]: + """Triggers a new On-Call Page in Datadog. + + Use this tool to trigger a new On-Call Page in Datadog whenever immediate attention is required. Ideal for alerting on-call team members.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "description": issue_summary, + "tags": tags_for_categorization, + "target": {"identifier": target_identifier, "type": target_type}, + "title": page_title, + "urgency": on_call_page_urgency_level, + }, + "type": resource_type_for_on_call, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/pages".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def acknowledge_on_call_page( + context: ToolContext, + on_call_page_id: Annotated[str, "The unique identifier for the On-Call Page to acknowledge."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AcknowledgeOnCallPage'."]: + """Acknowledge an On-Call Page alert in Datadog. + + Use this tool to acknowledge an On-Call Page alert for a specified page in Datadog. This can be used to indicate that an alert is being addressed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/pages/{page_id}/acknowledge".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), page_id=on_call_page_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def escalate_on_call_page( + context: ToolContext, + on_call_page_id: Annotated[str, "The unique identifier for the on-call page to be escalated."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'EscalateOnCallPage'."]: + """Escalate an on-call page to notify the responsible team. + + Use this tool to escalate an on-call page when immediate attention is needed from the responsible team.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/pages/{page_id}/escalate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), page_id=on_call_page_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def resolve_on_call_page( + context: ToolContext, + on_call_page_id: Annotated[ + str, "The unique identifier of the on-call page to resolve in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ResolveOnCallPage'."]: + """Resolves an On-Call Page in Datadog. + + This tool resolves an open on-call page in Datadog, which is useful for indicating that an incident or issue has been addressed. Use it when you need to confirm the resolution of a specific on-call incident.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/pages/{page_id}/resolve".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), page_id=on_call_page_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_on_call_schedule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to return with the schedule. Options: `teams`, `layers`, `layers.members`, `layers.members.user`. 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 'CreateOnCallSchedule'."]: + """Create a new on-call schedule in Datadog. + + This tool is used to create a new on-call schedule in Datadog. It should be called when there is a need to set up a schedule for on-call duties, allowing teams to manage availability and response times. The tool returns a confirmation of the schedule created along with its 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["CREATEONCALLSCHEDULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEONCALLSCHEDULE_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["CREATEONCALLSCHEDULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/on-call/schedules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEONCALLSCHEDULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_on_call_schedule( + context: ToolContext, + schedule_id: Annotated[ + str, + "The unique identifier for the on-call schedule you wish to delete in Datadog. This is a required field.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteOnCallSchedule'."]: + """Delete an On-Call schedule in Datadog. + + Use this tool to delete a specific on-call schedule identified by its schedule ID in Datadog when managing schedules.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), schedule_id=schedule_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_on_call_schedule( + context: ToolContext, + schedule_id: Annotated[str, "The unique ID of the on-call schedule to be retrieved."], + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to include in the response. Options: `teams`, `layers`, `layers.members`, `layers.members.user`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetOnCallSchedule'."]: + """Retrieve an On-Call schedule from Datadog. + + Use this tool to access detailed information regarding a specific On-Call schedule in Datadog by providing the schedule ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), schedule_id=schedule_id + ), + method="GET", + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_on_call_schedule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + schedule_id: Annotated[ + str | None, + "The unique identifier for the on-call schedule to update in Datadog. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + relationships_to_include: Annotated[ + str | None, + "Comma-separated relationships to return, e.g., `teams`, `layers`. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`. 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 'UpdateOnCallSchedule'."]: + """Update an existing on-call schedule in Datadog. + + Use this tool to update the details of an existing on-call schedule in Datadog. It should be called when there is a need to modify the configuration or timing of an on-call schedule. + + 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["UPDATEONCALLSCHEDULE_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 schedule_id: + missing_params.append(("schedule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEONCALLSCHEDULE_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["UPDATEONCALLSCHEDULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), schedule_id=schedule_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEONCALLSCHEDULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": relationships_to_include}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_on_call_user( + context: ToolContext, + schedule_id: Annotated[str, "The unique ID of the schedule to retrieve the on-call user from."], + include_related_resources: Annotated[ + str | None, + "Specifies related resources to include in the response. Use 'user' to include user details.", # noqa: E501 + ] = None, + timestamp_for_on_call_user: Annotated[ + str | None, + "Retrieves the on-call user at the specified timestamp (ISO-8601). Defaults to current time if omitted.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetScheduleOnCallUser'."]: + """Retrieve the current on-call user for a specific schedule. + + Use this tool to find out which user is currently on-call for a given schedule. It is helpful for monitoring and response teams to know who is available at any given moment.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}/on-call".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), schedule_id=schedule_id + ), + method="GET", + params=remove_none_values({ + "include": include_related_resources, + "filter[at_ts]": timestamp_for_on_call_user, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_team_on_call_users( + context: ToolContext, + team_id: Annotated[ + str, "The unique identifier for the team whose on-call users are being retrieved." + ], + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to include in the response: `responders`, `escalations`, `escalations.responders`.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTeamOnCallUsers'."]: + """Retrieve on-call users for a specific team. + + Fetch the list of users who are on-call for a specified team at a given time using Datadog's API.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/teams/{team_id}/on-call".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_id + ), + method="GET", + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_team_on_call_routing_rules( + context: ToolContext, + team_identifier: Annotated[ + str, "The unique identifier for the team whose on-call routing rules are to be retrieved." + ], + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to return, such as `rules` or `rules.policy`.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetOnCallTeamRoutingRules'."]: + """Retrieve a team's on-call routing rules from Datadog. + + Use this tool to obtain the on-call routing rules for a specific team in Datadog by providing the team ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/on-call/teams/{team_id}/routing-rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_identifier + ), + method="GET", + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def set_on_call_team_routing_rules( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The unique identifier for the team whose routing rules are being set. It should be a string. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + include_relationships: Annotated[ + str | None, + "Comma-separated list of relationships to include in the response. Allowed: `rules`, `rules.policy`. 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 'SetOnCallTeamRoutingRules'."]: + """Set or update a team's On-Call routing rules in Datadog. + + Use this tool to configure or modify the On-Call routing rules for a specific team in Datadog. + + 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[ + "SETONCALLTEAMROUTINGRULES_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path, query parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not team_identifier: + missing_params.append(("team_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SETONCALLTEAMROUTINGRULES_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["SETONCALLTEAMROUTINGRULES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/on-call/teams/{team_id}/routing-rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_identifier + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SETONCALLTEAMROUTINGRULES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"include": include_relationships}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_org_configs( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListOrgConfigs'."]: + """Retrieve all organization configurations. + + Call this tool to get a list of all organization configurations, providing details like name, description, and value.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/org_configs".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_organization_config_details( + context: ToolContext, + organization_config_name: Annotated[ + str, "The name of the organization configuration to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetOrgConfig'."]: + """Retrieve organization configuration details by name. + + Fetches the name, description, and value of a specific organization configuration from Datadog, identified 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="https://{datadog_base_url}/api/v2/org_configs/{org_config_name}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + org_config_name=organization_config_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_org_config( + context: ToolContext, + org_config_data_type: Annotated[ + str, "The data type of the organization configuration, which should be 'org_configs'." + ], + org_config_value: Annotated[ + str, + "The new value for the organization configuration. Provide the desired value to update the specific Org Config.", # noqa: E501 + ], + organization_configuration_name: Annotated[ + str, "The name of the organization configuration to update in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateOrgConfig'."]: + """Update a specified organization configuration in Datadog. + + Use this tool to update the value of a specific organization configuration in Datadog. Suitable for changing settings like feature toggles or other organizational configurations.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"value": org_config_value}, "type": org_config_data_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/org_configs/{org_config_name}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + org_config_name=organization_configuration_name, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_org_connections( + context: ToolContext, + entry_limit: Annotated[ + int | None, "Specifies the maximum number of entries to return. Default is 1000." + ] = None, + pagination_offset: Annotated[ + int | None, + "The pagination offset to start querying from, with a default of 0. Use this for paginated results.", # noqa: E501 + ] = None, + sink_organization_id: Annotated[ + str | None, + "The organization ID of the sink org. It identifies the destination organization in the connections list.", # noqa: E501 + ] = None, + source_organization_id: Annotated[ + str | None, "The ID of the source organization to query connections from." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListOrgConnections'."]: + """Retrieve a list of organization connections from Datadog. + + Use this tool to get a comprehensive list of all organization connections within Datadog. This can be useful for managing and analyzing connected organizations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/org_connections".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "sink_org_id": sink_organization_id, + "source_org_id": source_organization_id, + "limit": entry_limit, + "offset": pagination_offset, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_org_connection( + context: ToolContext, + connection_types: Annotated[ + list[str], "List of connection types to establish between the organizations." + ], + organization_connection_type: Annotated[ + str, "Specify the type of the organization connection. Must be 'org_connection'." + ], + organization_relationship_type: Annotated[ + str | None, "Specifies the type of the organization relationship. Must be 'orgs'." + ] = None, + target_org_name: Annotated[ + str | None, "The name of the target organization to connect with." + ] = None, + target_org_uuid: Annotated[ + str | None, "The UUID of the target organization to connect to." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateOrgConnections'."]: + """Creates a new organization connection in Datadog. + + Use this tool to create a connection between the current organization and a target organization within Datadog. Ideal for linking organizational resources and sharing data across teams.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"connection_types": connection_types}, + "relationships": { + "sink_org": { + "data": { + "id": target_org_uuid, + "name": target_org_name, + "type": organization_relationship_type, + } + } + }, + "type": organization_connection_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/org_connections".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_org_connection( + context: ToolContext, + connection_id: Annotated[ + str, "The unique identifier of the organization connection to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteOrgConnections'."]: + """Delete an existing organization connection. + + Call this tool to delete a specified organization connection. Use it when you need to remove a link between organizations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/org_connections/{connection_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), connection_id=connection_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_org_connection( + context: ToolContext, + org_connection_id: Annotated[ + str, "The unique identifier of the organization connection in Datadog." + ], + org_connection_type: Annotated[ + str, "Specifies the type of organization connection. Must be 'org_connection'." + ], + organization_connection_id: Annotated[ + str, "The unique identifier of the organization connection to be updated." + ], + updated_connection_types: Annotated[ + list[str], "A list of updated connection types for the organization connection." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateOrgConnections'."]: + """Update an existing organization connection in Datadog. + + Use this tool to update details of an existing organization connection in Datadog. Useful for modifying connection configurations or settings.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"connection_types": updated_connection_types}, + "id": organization_connection_id, + "type": org_connection_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/org_connections/{connection_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), connection_id=org_connection_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_permissions( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListPermissions'."]: + """Retrieve all permissions from Datadog. + + Use this tool to get a comprehensive list of all available permissions, including their names, descriptions, and IDs, from Datadog's system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/permissions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_findings( + context: ToolContext, + filter_by_evaluation_change_date: Annotated[ + str | None, + "Specify a date (Unix ms) or date range (using comparison operators) to find results altered from pass to fail or vice versa.", # noqa: E501 + ] = None, + filter_by_resource_id: Annotated[ + str | None, "Return only findings for the specified resource ID." + ] = None, + filter_by_resource_type: Annotated[ + str | None, + "Return findings only for the specified resource type. Use to narrow down results to specific resource types, such as 'aws', 'gcp', etc.", # noqa: E501 + ] = None, + filter_by_rule_id: Annotated[ + str | None, "Provide a specific rule ID to filter findings related to that rule." + ] = None, + filter_by_rule_name: Annotated[ + str | None, + "Specify the rule name to return findings associated with it. This filters findings based on the provided rule name.", # noqa: E501 + ] = None, + filter_by_tags: Annotated[ + str | None, + "Specify tags to filter findings. Use the format `tag_key:tag_value`. Supports multiple tags separated by commas.", # noqa: E501 + ] = None, + filter_discovery_timestamp: Annotated[ + str | None, + "Return findings discovered at a specific time (Unix ms) or within a date range using comparison operators (e.g., `>`, `<=`).", # noqa: E501 + ] = None, + filter_evaluation_status: Annotated[ + str | None, "Specify to return only findings that are either 'pass' or 'fail'." + ] = None, + include_detailed_findings: Annotated[ + bool | None, + "Set to true to retrieve additional fields like external ID, description, and IP addresses for some findings.", # noqa: E501 + ] = None, + max_findings_limit: Annotated[ + int | None, "Set the maximum number of findings to return, up to a limit of 1000." + ] = 100, + next_page_cursor: Annotated[ + str | None, + "Use this to return the next page of findings starting from this cursor's position.", + ] = None, + return_muted_findings: Annotated[ + bool | None, "Set to `true` to return muted findings. Set to `false` to exclude them." + ] = None, + snapshot_timestamp: Annotated[ + int | None, + "Specify the Unix timestamp (in milliseconds) to get findings for a specific snapshot of time.", # noqa: E501 + ] = None, + status_filter: Annotated[ + str | None, + "Specify the status of findings to return: critical, high, medium, low, or info.", + ] = None, + vulnerability_type_filters: Annotated[ + list[str] | None, + "A list of strings to filter findings by matching vulnerability types. Repeatable for multiple types.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListFindings'."]: + """Retrieve a list of security findings from Datadog. + + Use this tool to obtain a list of security findings, including misconfigurations and identity risks from Datadog. You can apply filters to customize the search results and include additional details by specifying parameters. The response includes summary details of each finding along with pagination metadata.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/posture_management/findings".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[limit]": max_findings_limit, + "snapshot_timestamp": snapshot_timestamp, + "page[cursor]": next_page_cursor, + "filter[tags]": filter_by_tags, + "filter[evaluation_changed_at]": filter_by_evaluation_change_date, + "filter[muted]": return_muted_findings, + "filter[rule_id]": filter_by_rule_id, + "filter[rule_name]": filter_by_rule_name, + "filter[resource_type]": filter_by_resource_type, + "filter[@resource_id]": filter_by_resource_id, + "filter[discovery_timestamp]": filter_discovery_timestamp, + "filter[evaluation]": filter_evaluation_status, + "filter[status]": status_filter, + "filter[vulnerability_type]": vulnerability_type_filters, + "detailed_findings": include_detailed_findings, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_security_finding( + context: ToolContext, + finding_id: Annotated[str, "The unique ID of the security finding to retrieve details for."], + snapshot_unix_timestamp: Annotated[ + int | None, + "Return the finding for a specific snapshot in time, given in Unix milliseconds.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetFinding'."]: + """Retrieve details of a specific security finding for analysis. + + This tool retrieves the message and resource configuration details of a specified security finding, helping in security analysis and incident response.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/posture_management/findings/{finding_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), finding_id=finding_id + ), + method="GET", + params=remove_none_values({"snapshot_timestamp": snapshot_unix_timestamp}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_powerpacks( + context: ToolContext, + max_powerpacks_limit: Annotated[ + int | None, "Maximum number of powerpacks to include in the response." + ] = 25, + page_offset: Annotated[ + int | None, + "The specific offset to start returning powerpacks from, allowing for pagination.", + ] = 0, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListPowerpacks'."]: + """Retrieve a list of all powerpacks from Datadog. + + Use this tool to get the complete list of powerpacks available in Datadog. It should be called when you need to access or display all the powerpacks.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/powerpacks".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[limit]": max_powerpacks_limit, + "page[offset]": page_offset, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_powerpack( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreatePowerpack'."]: + """Creates a new powerpack in Datadog. + + Use this tool to initiate a powerpack creation in Datadog when managing monitoring configurations is required. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEPOWERPACK_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEPOWERPACK_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["CREATEPOWERPACK_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/powerpacks".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEPOWERPACK_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_powerpack( + context: ToolContext, + powerpack_id: Annotated[str, "The unique identifier for the powerpack to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeletePowerpack'."]: + """Delete a specified powerpack from Datadog. + + This tool deletes a powerpack in Datadog using the specified powerpack ID. Call this tool when you need to remove a powerpack from your Datadog account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/powerpacks/{powerpack_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), powerpack_id=powerpack_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_powerpack( + context: ToolContext, + powerpack_identifier: Annotated[ + str, "The unique identifier for the desired powerpack, used to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetPowerpack'."]: + """Retrieve details of a specific powerpack. + + This tool should be called to obtain detailed information about a specific powerpack 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="https://{datadog_base_url}/api/v2/powerpacks/{powerpack_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + powerpack_id=powerpack_identifier, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_powerpack( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + powerpack_id: Annotated[ + str | None, + "The unique identifier for the powerpack to update in Datadog. 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 'UpdatePowerpack'."]: + """Update the details of a specific powerpack in Datadog. + + Use this tool to modify the properties of an existing powerpack in Datadog by providing the specific powerpack ID. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEPOWERPACK_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not powerpack_id: + missing_params.append(("powerpack_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEPOWERPACK_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["UPDATEPOWERPACK_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/powerpacks/{powerpack_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), powerpack_id=powerpack_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPOWERPACK_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_all_organization_processes( + context: ToolContext, + filter_by_tags: Annotated[ + str | None, + "A comma-separated list of tags to filter the processes by. Use specific tags relevant to your organization's processes for targeted results.", # noqa: E501 + ] = None, + max_results_per_page: Annotated[ + int | None, "Maximum number of process results to return in one page." + ] = 1000, + pagination_cursor: Annotated[ + str | None, + "String token to retrieve the next page of process results. Use the value from `meta.page.after` provided in the previous API response.", # noqa: E501 + ] = None, + query_window_end_timestamp: Annotated[ + int | None, + "Unix timestamp (seconds since epoch) marking the end of the query window. Defaults to 15 minutes after 'from' if not provided. If 'from' and 'to' are omitted, defaults to 15 minutes from current time.", # noqa: E501 + ] = None, + query_window_start_timestamp: Annotated[ + int | None, + "Unix timestamp marking the start of the query window. Defaults to 15 minutes before the end of the window if not provided.", # noqa: E501 + ] = None, + search_string_for_processes: Annotated[ + str | None, "String used to search and filter processes by specific criteria." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListProcesses'."]: + """Retrieve all processes for your organization from Datadog. + + This tool is used to fetch a list of all processes associated with your organization in Datadog. It should be called when you need detailed information about the processes running across your organization's systems.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/processes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "search": search_string_for_processes, + "tags": filter_by_tags, + "from": query_window_start_timestamp, + "to": query_window_end_timestamp, + "page[limit]": max_results_per_page, + "page[cursor]": pagination_cursor, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def query_scalar_data( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'QueryScalarData'."]: + """Query scalar values from diverse data sources. + + Use this tool to query scalar values from various data sources, with options to apply formulas and functions, ideal for insights in widgets like Query Value, Table, and Toplist. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["QUERYSCALARDATA_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["QUERYSCALARDATA_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["QUERYSCALARDATA_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/query/scalar".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["QUERYSCALARDATA_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def query_timeseries_data( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'QueryTimeseriesData'."]: + """Query and process timeseries data from multiple sources. + + This tool queries timeseries data across various data sources and processes it by applying specified formulas and functions. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["QUERYTIMESERIESDATA_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["QUERYTIMESERIESDATA_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["QUERYTIMESERIESDATA_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/query/timeseries".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["QUERYTIMESERIESDATA_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_reference_tables( + context: ToolContext, + exact_table_name_filter: Annotated[ + str | None, "Filter by an exact table name match to retrieve specific reference tables." + ] = None, + filter_by_table_status: Annotated[ + str | None, + "Filter tables by their status. Accepts status as a string, such as 'active', 'inactive', etc.", # noqa: E501 + ] = None, + filter_table_name_contains: Annotated[ + str | None, "Filter tables by name containing this substring." + ] = None, + number_of_tables_to_return: Annotated[ + int | None, "Specify the number of tables to return in the response. Use an integer value." + ] = 15, + pagination_offset: Annotated[int | None, "Number of tables to skip for pagination."] = 0, + sort_field_and_direction: Annotated[ + str | None, + 'Specify the field to sort by and the direction. Use a field name for ascending, prefix with "-" for descending. Options include: updated_at, table_name, status, and their descending counterparts.', # noqa: E501 + ] = "-updated_at", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListTables'."]: + """Retrieve all reference tables in the organization. + + Use this tool to fetch a list of all reference tables available in the current organization. It provides an overview of the reference tables configured in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/reference-tables/tables".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "limit": number_of_tables_to_return, + "offset": pagination_offset, + "sort": sort_field_and_direction, + "filter[status]": filter_by_table_status, + "filter[table_name][exact]": exact_table_name_filter, + "filter[table_name][contains]": filter_table_name_contains, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_reference_table( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateReferenceTable'."]: + """Create a new reference table in Datadog. + + This tool creates a new reference table in Datadog. It can be called by either uploading CSV data to get an upload ID or by providing cloud storage access details. Use this when you need to set up a reference table with data from CSV files. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEREFERENCETABLE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEREFERENCETABLE_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["CREATEREFERENCETABLE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/reference-tables/tables".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEREFERENCETABLE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_reference_table( + context: ToolContext, + reference_table_id: Annotated[ + str, "The unique identifier of the reference table to be deleted." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteTable'."]: + """Delete a reference table by ID. + + Use this tool to delete a specific reference table by providing its ID. Useful for managing and cleaning up reference data in your Datadog environment.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/reference-tables/tables/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=reference_table_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_reference_table( + context: ToolContext, + reference_table_id: Annotated[ + str, "The unique ID of the reference table to retrieve details from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTable'."]: + """Retrieve details of a reference table by its ID. + + Use this tool to fetch information about a specific reference table in Datadog using its unique ID. This is helpful for accessing configuration or metadata details related to the table.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/reference-tables/tables/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=reference_table_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_reference_table( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + reference_table_id: Annotated[ + str | None, + "The ID of the reference table 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 'UpdateReferenceTable'."]: + """Update data, description, and tags of a reference table. + + This tool updates a reference table by its ID, allowing changes to the data, description, or tags. It is useful when modifications are needed for existing reference tables, including those with different source types like LOCAL_FILE, S3, GCS, or AZURE. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEREFERENCETABLE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not reference_table_id: + missing_params.append(("reference_table_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEREFERENCETABLE_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["UPDATEREFERENCETABLE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/reference-tables/tables/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=reference_table_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEREFERENCETABLE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_table_rows_by_id( + context: ToolContext, + reference_table_id: Annotated[ + str, "The unique ID of the reference table to retrieve rows from." + ], + row_ids_to_retrieve: Annotated[ + list[str], + "List of primary key values to specify which rows to retrieve from the reference table.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRowsByID'."]: + """Retrieve reference table rows using primary key values. + + Call this tool to access rows from a Datadog reference table by specifying their primary key values. It's useful for obtaining specific entries in the table.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/reference-tables/tables/{id}/rows".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=reference_table_id + ), + method="GET", + params=remove_none_values({"row_id": row_ids_to_retrieve}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_reference_table_upload( + context: ToolContext, + file_upload_headers: Annotated[ + list[str] | None, + "An array of strings representing the headers of the file to upload for the reference table.", # noqa: E501 + ] = None, + part_size_bytes: Annotated[ + int | None, + "The size of each part in the upload in bytes. For multipart uploads (part_count > 1), all parts except the last one must be at least 5,000,000 bytes. For single-part uploads, any size is allowed.", # noqa: E501 + ] = None, + reference_table_name: Annotated[ + str | None, "The name of the reference table for the upload." + ] = None, + upload_id: Annotated[str | None, "The unique ID for the upload process in Datadog."] = None, + upload_part_count: Annotated[ + int | None, "Specify the number of parts in the upload. Used for multipart uploads." + ] = None, + upload_resource_type: Annotated[ + str | None, "Specifies the resource type for the upload. Must be set to 'upload'." + ] = "upload", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateReferenceTableUpload'."]: + """Create a reference table upload for bulk data ingestion. + + Use this tool to initiate the creation of a reference table upload in Datadog, facilitating bulk data ingestion for analytics or monitoring purposes.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "headers": file_upload_headers, + "part_count": upload_part_count, + "part_size": part_size_bytes, + "table_name": reference_table_name, + }, + "id": upload_id, + "type": upload_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/reference-tables/uploads".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_waf_custom_rules( + context: ToolContext, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ListApplicationSecurityWAFCustomRules'." +]: + """Retrieve a list of WAF custom rules. + + Use this tool to get a list of custom rules for the Web Application Firewall (WAF) in Datadog. It's useful for monitoring and managing security configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_waf_custom_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateApplicationSecurityWafCustomRule'." +]: + """Create a new web application firewall custom rule. + + Use this tool to define a new custom rule for the web application firewall, enhancing security configurations. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEWAFCUSTOMRULE_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["CREATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_waf_custom_rule( + context: ToolContext, + custom_rule_id: Annotated[ + str, + "The unique identifier for the WAF custom rule to be deleted. Required for identifying the specific rule.", # noqa: E501 + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'DeleteApplicationSecurityWafCustomRule'." +]: + """Delete a specific WAF custom rule by ID. + + Use this tool to delete a WAF custom rule using its unique identifier. Applicable when managing application security or modifying WAF configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), custom_rule_id=custom_rule_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_waf_custom_rule_by_id( + context: ToolContext, + custom_rule_id: Annotated[ + str, "The unique identifier for the WAF custom rule to retrieve from Datadog." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetApplicationSecurityWafCustomRule'." +]: + """Retrieve a WAF custom rule by ID from Datadog. + + Use this tool to obtain details of a specific Web Application Firewall (WAF) custom rule from Datadog by providing the rule's ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), custom_rule_id=custom_rule_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_waf_custom_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + custom_rule_id: Annotated[ + str | None, + "Specify the ID of the custom WAF rule 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 'UpdateApplicationSecurityWafCustomRule'." +]: + """Update a specific WAF custom rule in Datadog. + + Use this tool to update a specific Web Application Firewall (WAF) custom rule in Datadog. It returns the updated custom rule object upon successful execution. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not custom_rule_id: + missing_params.append(("custom_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEWAFCUSTOMRULE_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["UPDATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), custom_rule_id=custom_rule_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_waf_exclusion_filters( + context: ToolContext, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ListApplicationSecurityWafExclusionFilters'." +]: + """Retrieve a list of WAF exclusion filters.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_waf_exclusion_filter( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateApplicationSecurityWafExclusionFilter'." +]: + """Create a new WAF exclusion filter in Datadog. + + Use this tool to create a new Web Application Firewall (WAF) exclusion filter in Datadog. Exclusion filters help in preventing certain requests from being processed by the WAF, acting as passlist entries. Ideal for managing application security settings. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEWAFEXCLUSIONFILTER_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["CREATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_waf_exclusion_filter( + context: ToolContext, + waf_exclusion_filter_id: Annotated[ + str, + "The unique identifier of the WAF exclusion filter to be deleted. Use this ID to specify which filter to remove.", # noqa: E501 + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'DeleteApplicationSecurityWafExclusionFilter'." +]: + """Delete a WAF exclusion filter using its ID. + + Use this tool to delete a specific Web Application Firewall (WAF) exclusion filter by providing its identifier. Call this tool when you need to remove an unnecessary or outdated exclusion filter from the configuration.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + exclusion_filter_id=waf_exclusion_filter_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_waf_exclusion_filter( + context: ToolContext, + waf_exclusion_filter_id: Annotated[ + str, "The unique identifier of the WAF exclusion filter to retrieve." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetApplicationSecurityWafExclusionFilter'." +]: + """Retrieve a specific WAF exclusion filter by ID. + + Use this tool to obtain details about a specific Web Application Firewall (WAF) exclusion filter by providing its unique identifier.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + exclusion_filter_id=waf_exclusion_filter_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_waf_exclusion_filter( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + waf_exclusion_filter_identifier: Annotated[ + str | None, + "The unique identifier of the WAF exclusion filter 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 'UpdateApplicationSecurityWafExclusionFilter'." +]: + """Updates a WAF exclusion filter by its identifier. + + Use this tool to update a specific Web Application Firewall (WAF) exclusion filter using its ID. It returns the updated exclusion filter object upon a successful request. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not waf_exclusion_filter_identifier: + missing_params.append(("waf_exclusion_filter_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEWAFEXCLUSIONFILTER_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["UPDATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + exclusion_filter_id=waf_exclusion_filter_identifier, + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_workload_protection_agent_rules( + context: ToolContext, + agent_policy_id: Annotated[ + str | None, + "The ID of the Agent policy to retrieve the list of workload protection agent rules.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCSMThreatsAgentRules'."]: + """Retrieve the list of Workload Protection agent rules. + + Use this tool to get the current list of agent rules for workload protection from Datadog. This is not available for the Government (US1-FED) site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"policy_id": agent_policy_id}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_workload_protection_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCSMThreatsAgentRule'."]: + """Create a new Workload Protection agent rule. + + Use this tool to create a new Workload Protection agent rule with specified parameters. Note that this endpoint is not available for the Government (US1-FED) site. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEWORKLOADPROTECTIONRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEWORKLOADPROTECTIONRULE_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["CREATEWORKLOADPROTECTIONRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEWORKLOADPROTECTIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_workload_protection_agent_rule( + context: ToolContext, + agent_rule_identifier: Annotated[ + str, "The unique identifier for the Agent rule to be deleted." + ], + agent_policy_id: Annotated[ + str | None, "The unique identifier of the Workload Protection agent policy to delete." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCSMThreatsAgentRule'."]: + """Delete a specific Workload Protection agent rule. + + This tool deletes a specified Workload Protection agent rule in Datadog, excluding the Government (US1-FED) site. Use this when needing to remove an existing agent rule by its unique identifier.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + agent_rule_id=agent_rule_identifier, + ), + method="DELETE", + params=remove_none_values({"policy_id": agent_policy_id}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_threat_protection_agent_rule( + context: ToolContext, + agent_rule_id: Annotated[ + str, "The unique identifier for the specific Agent rule to retrieve details for." + ], + agent_policy_id: Annotated[ + str | None, "The ID of the agent policy to retrieve the specific rule for." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCSMThreatsAgentRule'."]: + """Retrieve details of a specific Workload Protection agent rule. + + Use this tool to get information about a particular Workload Protection agent rule in Datadog. Note: This functionality is unavailable for the US1-FED site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), agent_rule_id=agent_rule_id + ), + method="GET", + params=remove_none_values({"policy_id": agent_policy_id}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_workload_protection_agent_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + agent_rule_id: Annotated[ + str | None, + "The unique identifier of the specific Agent rule to update. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + agent_policy_id: Annotated[ + str | None, + "The ID of the Agent policy to be updated in the Workload Protection Agent rule. 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 'UpdateCSMThreatsAgentRule'."]: + """Update a specific Workload Protection Agent rule. + + Use this tool to update a specific Workload Protection Agent rule. This is helpful when you need to modify existing rules for workload protection. Please note that this endpoint is not available for the Government (US1-FED) site. + + 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[ + "UPDATEWORKLOADPROTECTIONAGENTRULE_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 agent_rule_id: + missing_params.append(("agent_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEWORKLOADPROTECTIONAGENTRULE_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["UPDATEWORKLOADPROTECTIONAGENTRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), agent_rule_id=agent_rule_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEWORKLOADPROTECTIONAGENTRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"policy_id": agent_policy_id}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_workload_protection_policies( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListCSMThreatsAgentPolicies'."]: + """Retrieve a list of Workload Protection policies from Datadog. + + This tool calls the Datadog API to retrieve a list of Workload Protection policies. It is used to obtain information about the configurations for workload security. Note: This endpoint is not available for the US1-FED site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/policy".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_workload_protection_policy( + context: ToolContext, + policy_name: Annotated[str, "The name of the workload protection policy to be created."], + host_tags_configuration: Annotated[ + list[dict[str, str]] | None, + "Host tags for policy deployment: inner values linked with AND, outer with OR.", + ] = None, + host_tags_for_policy_deployment: Annotated[ + list[str] | None, + "List of host tags to define where the policy is deployed. Each tag must be a string.", + ] = None, + policy_description: Annotated[ + str | None, "Provide a description for the new workload protection policy." + ] = None, + policy_enabled: Annotated[ + bool | None, "Set to true to enable the workload protection policy." + ] = None, + resource_type: Annotated[ + str, "Specifies the type of the resource. Must always be set to 'policy'." + ] = "policy", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateCSMThreatsAgentPolicy'."]: + """Create a new Workload Protection policy for cloud workloads. + + This tool allows you to create a new Workload Protection policy using specified parameters. It is used to enhance security for cloud workloads by defining protection policies. Note: This endpoint is not available for the Government (US1-FED) site.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "description": policy_description, + "enabled": policy_enabled, + "hostTags": host_tags_for_policy_deployment, + "hostTagsLists": host_tags_configuration, + "name": policy_name, + }, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/policy".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def download_csm_threats_policy( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DownloadCSMThreatsPolicy'."]: + """Generate and download Workload Protection policy file. + + This tool generates a Workload Protection policy file based on active agent rules and downloads it as a `.policy` file. It is used to update the policy running in your environment. Note that this is not available for US1-FED site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/download".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_workload_protection_policy( + context: ToolContext, + agent_policy_id: Annotated[str, "The unique ID of the agent policy to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteCSMThreatsAgentPolicy'."]: + """Delete a specific Workload Protection policy. + + Use this tool to remove a specified Workload Protection policy from Datadog. Note: Not available for the Government (US1-FED) site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=agent_policy_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_workload_protection_policy_details( + context: ToolContext, + agent_policy_id: Annotated[ + str, "The unique ID of the Workload Protection Agent policy to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetCSMThreatsAgentPolicy'."]: + """Get details of a specific Workload Protection policy. + + Fetches information about a specific Workload Protection policy from Datadog. Note that this endpoint is not available for the Government (US1-FED) site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=agent_policy_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_workload_protection_policy( + context: ToolContext, + agent_policy_id: Annotated[str, "The unique identifier for the Agent policy to update."], + host_tags_conditions: Annotated[ + list[dict[str, str]] | None, + "Array of host tags specifying policy deployment conditions. Inner values use AND logic, outer values use OR logic.", # noqa: E501 + ] = None, + host_tags_for_policy_deployment: Annotated[ + list[str] | None, + "An array of strings representing the host tags defining where this policy is deployed.", + ] = None, + policy_description: Annotated[ + str | None, + "A string that provides the description of the Workload Protection policy. This should explain the policy's purpose or key features.", # noqa: E501 + ] = None, + policy_enabled: Annotated[ + bool | None, "Indicates if the policy is enabled. Use true for enabled, false for disabled." + ] = None, + policy_id: Annotated[ + str | None, "The unique identifier of the Agent policy to be updated." + ] = None, + policy_name: Annotated[ + str | None, "The name of the Workload Protection policy to be updated." + ] = None, + resource_type: Annotated[str, "The type of the resource, always set to 'policy'."] = "policy", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateCSMThreatsAgentPolicy'."]: + """Update a specific Workload Protection policy in Datadog. + + This tool updates a specified Workload Protection policy using the Datadog API. It should be called when modifications to security policies are needed. Note that the endpoint is not available for the Government (US1-FED) site.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "description": policy_description, + "enabled": policy_enabled, + "hostTags": host_tags_for_policy_deployment, + "hostTagsLists": host_tags_conditions, + "name": policy_name, + }, + "id": policy_id, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/{policy_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), policy_id=agent_policy_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_pipelines( + context: ToolContext, + page_number: Annotated[ + int | None, + "Specify the page number of pipelines to retrieve. Use this to navigate through the pages of results returned by the API.", # noqa: E501 + ] = 0, + page_size: Annotated[ + int | None, "Number of pipelines to return per page, up to a maximum of 100." + ] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListPipelines'."]: + """Retrieve a list of pipelines from Datadog. + + Use this tool to get a list of all pipelines available in the Datadog system. It should be called whenever you need information on existing pipelines.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"page[size]": page_size, "page[number]": page_number}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_pipeline( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreatePipeline'."]: + """Create a new pipeline in Datadog's system. + + Use this tool to create a new pipeline within the Datadog service. It should be called when a user needs to set up or initialize a new data pipeline in their Datadog environment. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEPIPELINE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEPIPELINE_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["CREATEPIPELINE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEPIPELINE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def validate_pipeline_config( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ValidatePipeline'."]: + """Validate a pipeline configuration without making changes. + + Use this tool to check the correctness of a pipeline configuration in Datadog. It helps identify any potential errors without altering existing resources. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "VALIDATEPIPELINECONFIG_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["VALIDATEPIPELINECONFIG_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["VALIDATEPIPELINECONFIG_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/validate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["VALIDATEPIPELINECONFIG_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_data_pipeline( + context: ToolContext, + pipeline_identifier: Annotated[ + str, "The unique ID of the pipeline that you want to delete from Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeletePipeline'."]: + """Deletes a data pipeline from the Datadog configuration. + + Use this tool to remove a specific data pipeline by its ID from the Datadog configuration. Useful for managing and maintaining pipeline configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/{pipeline_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), pipeline_id=pipeline_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_specific_pipeline_by_id( + context: ToolContext, + pipeline_id: Annotated[str, "The unique ID of the pipeline to retrieve from Datadog."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetPipeline'."]: + """Retrieve specific pipeline details by ID. + + Use this tool to get details of a specific pipeline by providing its ID. It fetches the configuration and status of the pipeline from Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/{pipeline_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), pipeline_id=pipeline_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_pipeline( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + pipeline_id: Annotated[ + str | None, + "The unique ID of the pipeline to update in Datadog. 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 'UpdatePipeline'."]: + """Update a pipeline in Datadog's remote config. + + Use this tool to update specific pipelines in Datadog's remote configuration system using the pipeline ID. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEPIPELINE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not pipeline_id: + missing_params.append(("pipeline_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATEPIPELINE_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["UPDATEPIPELINE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/{pipeline_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), pipeline_id=pipeline_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEPIPELINE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_restriction_policy( + context: ToolContext, + resource_identifier: Annotated[ + str, + "Identifier formatted as `type:id` for the resource. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, and more.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteRestrictionPolicy'."]: + """Delete a restriction policy for a specified resource. + + Use this tool to delete the restriction policy associated with a specific resource by providing its ID. It should be called when a policy needs to be removed.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/restriction_policy/{resource_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), resource_id=resource_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def retrieve_resource_restriction_policy( + context: ToolContext, + resource_identifier: Annotated[ + str, + "The ID of the resource, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules`.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRestrictionPolicy'."]: + """Retrieve restriction policy for a specific resource. + + This tool is used to obtain the restriction policy linked to a particular resource by providing the resource ID. It should be called when you need to understand access restrictions or permissions associated with the resource.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/restriction_policy/{resource_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), resource_id=resource_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_restriction_policy( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + resource_identifier: Annotated[ + str | None, + "Identifier of the resource, formatted as `type:id`. Includes supported types like `dashboard`, `integration-service`, `notebook`, and others. Required when mode is 'execute', ignored when mode is 'get_request_schema'.", # noqa: E501 + ] = None, + allow_self_lockout: Annotated[ + bool | None, + "Set to true to allow admins to remove their own access from the resource. Default is false, preventing self-lockout. 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 'UpdateRestrictionPolicy'."]: + """Update the restriction policy for a Datadog resource. + + Use this tool to update the restriction policy associated with various Datadog resources, such as dashboards, integration services, notebooks, and more. You can specify the resource type and the new access permissions like viewer, editor, or others depending on the resource. + + 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[ + "UPDATERESTRICTIONPOLICY_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 resource_identifier: + missing_params.append(("resource_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATERESTRICTIONPOLICY_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["UPDATERESTRICTIONPOLICY_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/restriction_policy/{resource_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), resource_id=resource_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERESTRICTIONPOLICY_REQUEST_BODY_SCHEMA"], + params=remove_none_values({"allow_self_lockout": allow_self_lockout}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_user_roles( + context: ToolContext, + page_number: Annotated[int | None, "Specific page number to return."] = 0, + page_size: Annotated[ + int | None, "The number of roles to return per page, with a maximum of 100." + ] = 10, + role_filter_string: Annotated[ + str | None, "Filter roles using a specific string to match their details." + ] = None, + role_id_filter: Annotated[ + str | None, "List of role IDs to filter roles by, supporting comma-separated values." + ] = None, + sort_roles_by: Annotated[ + str | None, + "Sort roles based on a specified field. Use prefixes to set ascending or descending order, e.g., '-name' for descending by name.", # noqa: E501 + ] = "name", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRoles'."]: + """Retrieve all roles from Datadog. + + This tool fetches all roles from Datadog, providing their names and unique identifiers. It should be called when there's a need to view or manage role information.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_roles_by, + "filter": role_filter_string, + "filter[id]": role_id_filter, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_role( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateRole'."]: + """Create a new role for your organization in Datadog. + + This tool should be called when you need to create a new organizational role within the Datadog system. It returns details about the newly created role, helping to manage access and permissions for users. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATEROLE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATEROLE_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["CREATEROLE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/roles".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEROLE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_role_templates( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRoleTemplates'."]: + """Retrieve all role templates from Datadog. + + This tool retrieves a list of all role templates from Datadog. It should be called when you need to access or review the role templates defined within Datadog's system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/templates".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def disable_role( + context: ToolContext, + role_identifier: Annotated[ + str, "The unique identifier for the role to be disabled in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteRole'."]: + """Disables a specified role within Datadog. + + Call this tool to disable a specific role in Datadog by providing its role ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_organization_role( + context: ToolContext, + role_id: Annotated[str, "The unique identifier of the role in the organization."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRole'."]: + """Retrieve details of a role using its role ID in the organization. + + This tool gets details of a specific role within an organization by using the role's unique ID. It is useful for obtaining role-specific information needed for organizational management or role auditing.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_role( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + role_identifier: Annotated[ + str | None, + "The unique identifier for the role to be edited. 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 'UpdateRole'."]: + """Edit a role with administrator application keys. + + Use this tool to edit an existing role in Datadog. It's designed for administrators using application keys to make updates to specified roles. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["EDITROLE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not role_identifier: + missing_params.append(("role_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["EDITROLE_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["EDITROLE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/roles/{role_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_identifier + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EDITROLE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def clone_existing_role( + context: ToolContext, + new_role_name: Annotated[str, "Name of the new role that is cloned from an existing role."], + role_unique_identifier: Annotated[str, "The unique identifier of the role to be cloned."], + role_type: Annotated[ + str, "Specifies the type of role for the clone operation. Must be 'roles'." + ] = "roles", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CloneRole'."]: + """Clone an existing role based on role ID. + + This tool allows cloning of an existing role by using its unique role ID. It should be called when you need to create a duplicate of an existing role with identical permissions.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"name": new_role_name}, "type": role_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}/clone".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_unique_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_permission_from_role( + context: ToolContext, + role_identifier: Annotated[ + str, "The unique identifier for the role from which a permission will be removed." + ], + permission_id: Annotated[ + str | None, "ID of the permission to be removed from the specified role." + ] = None, + permission_resource_type: Annotated[ + str | None, "This should be set to 'permissions' to specify the permissions resource type." + ] = "permissions", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'RemovePermissionFromRole'."]: + """Removes a permission from a specified role in Datadog. + + Use this tool to remove a specific permission from a role in Datadog's system. Ideal for managing role permissions and access control.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"id": permission_id, "type": permission_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}/permissions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_role_permissions( + context: ToolContext, + role_identifier: Annotated[ + str, "The unique identifier for the role whose permissions need to be retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRolePermissions'."]: + """Retrieve all permissions for a specific role. + + Call this tool to get a list of all permissions associated with a particular role in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}/permissions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_permission_to_role( + context: ToolContext, + role_identifier: Annotated[ + str, "The unique identifier of the role to which the permission will be added." + ], + permission_id: Annotated[str | None, "ID of the permission to be added to the role."] = None, + permissions_resource_type: Annotated[ + str | None, "The resource type for the permission, should be 'permissions'." + ] = "permissions", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AddPermissionToRole'."]: + """Assigns a specific permission to a given role. + + Use this tool to add a permission to a specific role within Datadog. It should be called when you need to assign new permissions to a role to adjust user access and capabilities.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"id": permission_id, "type": permissions_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}/permissions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_user_from_role( + context: ToolContext, + role_identifier: Annotated[str, "The unique identifier of the role to remove the user from."], + user_identifier: Annotated[ + str, "The unique identifier representing the user to be removed from the role." + ], + user_resource_type: Annotated[ + str, "Specifies the resource type, which should be set as 'users'." + ] = "users", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'RemoveUserFromRole'."]: + """Remove a user from a specified role in Datadog. + + Use this tool to remove a specified user from a role in Datadog when updating user permissions or cleaning up role assignments.""" # noqa: E501 + request_data = remove_none_values({"data": {"id": user_identifier, "type": user_resource_type}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}/users".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_role_users( + context: ToolContext, + role_identifier: Annotated[ + str, "The unique identifier of the role to list its associated users." + ], + page_number: Annotated[ + int | None, "The specific page number to return in the list of users." + ] = 0, + page_size: Annotated[int | None, "Size for a given page, with a maximum value of 100."] = 10, + user_filter_string: Annotated[ + str | None, "Filter users by a specific string. Defaults to no filtering." + ] = None, + user_sort_order: Annotated[ + str | None, + "Attribute to sort users by. Prefix with '-' for descending. Options: 'name', 'email', 'status'.", # noqa: E501 + ] = "name", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRoleUsers'."]: + """Retrieve all users belonging to a specific role. + + Call this tool to obtain a list of users assigned to a particular role in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}/users".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_identifier + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": user_sort_order, + "filter": user_filter_string, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_user_to_role( + context: ToolContext, + role_unique_identifier: Annotated[ + str, "The unique identifier for the role you want to assign the user to." + ], + user_unique_identifier: Annotated[ + str, "A unique identifier representing the user to be added to the role." + ], + users_resource_type: Annotated[ + str, "Specifies the type of resource as 'users'. Always use 'users'." + ] = "users", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AddUserToRole'."]: + """Adds a user to a specific role in Datadog. + + Use this tool to add a user to a specific role in Datadog's system. It is called when you need to assign user permissions via roles.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"id": user_unique_identifier, "type": users_resource_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/roles/{role_id}/users".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), role_id=role_unique_identifier + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def aggregate_rum_events( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AggregateRUMEvents'."]: + """Aggregate RUM events into computed metrics and timeseries. + + This tool aggregates Real User Monitoring (RUM) events into buckets of computed metrics and timeseries. It is used when there is a need to analyze and visualize RUM data effectively. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["AGGREGATERUMEVENTS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["AGGREGATERUMEVENTS_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["AGGREGATERUMEVENTS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/rum/analytics/aggregate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["AGGREGATERUMEVENTS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_rum_applications( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRUMApplications'."]: + """Retrieve all RUM applications within your organization from Datadog. + + This tool is used to list all the Real User Monitoring (RUM) applications configured in your organization to help monitor and analyze user interactions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_rum_application( + context: ToolContext, + rum_application_name: Annotated[str, "The name of the RUM application to be created."], + product_analytics_retention_state: Annotated[ + str | None, + "Set the retention policy for Product Analytics data from RUM events. Options are 'MAX' or 'NONE'.", # noqa: E501 + ] = None, + rum_application_creation_type: Annotated[ + str, "Specifies the type for creating a RUM application. Use `rum_application_create`." + ] = "rum_application_create", + rum_application_type: Annotated[ + str | None, + "Specifies the type of the RUM application. Expected values: `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", # noqa: E501 + ] = None, + rum_event_processing_state: Annotated[ + str | None, + "Configures which RUM events are processed and stored for the application. Accepted values are 'ALL', 'ERROR_FOCUSED_MODE', or 'NONE'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateRUMApplication'."]: + """Create a new RUM application within your organization. + + This tool is used to create a new RUM (Real User Monitoring) application in your organization using Datadog's API.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "name": rum_application_name, + "product_analytics_retention_state": product_analytics_retention_state, + "rum_event_processing_state": rum_event_processing_state, + "type": rum_application_type, + }, + "type": rum_application_creation_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def order_rum_retention_filters( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + rum_application_id: Annotated[ + str | None, + "The ID of the RUM application for which to order retention filters. 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 'OrderRetentionFilters'."]: + """Order RUM retention filters for a RUM application. + + Use this tool to reorder the RUM retention filters for a specified RUM application. It returns the updated RUM retention filter objects without attributes when successful. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "ORDERRUMRETENTIONFILTERS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not rum_application_id: + missing_params.append(("rum_application_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["ORDERRUMRETENTIONFILTERS_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["ORDERRUMRETENTIONFILTERS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/rum/applications/{app_id}/relationships/retention_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=rum_application_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["ORDERRUMRETENTIONFILTERS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_rum_retention_filters( + context: ToolContext, + rum_application_id: Annotated[ + str, "The unique identifier for the RUM application to retrieve retention filters." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRetentionFilters'."]: + """Retrieve RUM retention filters for a specific application. + + Use this tool to obtain the list of RUM retention filters for a given RUM application by specifying its application ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=rum_application_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_rum_retention_filter( + context: ToolContext, + rum_application_id: Annotated[ + str, "RUM application ID for which the retention filter is to be created." + ], + rum_event_type_filter: Annotated[ + str, + "Specify the type of RUM events to filter. Options include: session, view, action, error, resource, long_task, vital.", # noqa: E501 + ], + rum_retention_filter_name: Annotated[ + str, "The name assigned to the RUM retention filter, used for identification." + ], + rum_retention_filter_sample_rate: Annotated[ + int, "The sample rate for a RUM retention filter, an integer between 0 and 100." + ], + enable_retention_filter: Annotated[ + bool | None, "Set true to enable the retention filter, false to disable it." + ] = None, + resource_type_for_retention: Annotated[ + str, + "Specifies the resource type as 'retention_filters'. This value should always be 'retention_filters'.", # noqa: E501 + ] = "retention_filters", + rum_retention_filter_query: Annotated[ + str | None, + "The query string that defines the filtering criteria for the RUM retention filter.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateRetentionFilter'."]: + """Create a RUM retention filter for a RUM application. + + Use this tool to create a data retention filter for an RUM application, which controls the retention rules of your application's RUM data.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "enabled": enable_retention_filter, + "event_type": rum_event_type_filter, + "name": rum_retention_filter_name, + "query": rum_retention_filter_query, + "sample_rate": rum_retention_filter_sample_rate, + }, + "type": resource_type_for_retention, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), app_id=rum_application_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_rum_retention_filter( + context: ToolContext, + retention_filter_id: Annotated[ + str, "The ID of the retention filter to delete from the RUM application." + ], + rum_application_id: Annotated[ + str, "The ID of the RUM application from which to delete the retention filter." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteRetentionFilter'."]: + """Deletes a RUM retention filter for a specific application. + + This tool deletes a specified RUM retention filter for a given application in Datadog. It should be called when you need to remove a retention filter from a RUM application to stop retaining specific types of data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + app_id=rum_application_id, + rf_id=retention_filter_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_rum_retention_filter( + context: ToolContext, + retention_filter_id: Annotated[ + str, "The ID of the retention filter to retrieve for a RUM application." + ], + rum_application_id: Annotated[ + str, + "The unique identifier for the RUM application. Required to fetch the retention filter.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRetentionFilter'."]: + """Retrieve a RUM retention filter for a RUM application. + + Fetches details of a specific RUM retention filter for a given RUM application based on its ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + app_id=rum_application_id, + rf_id=retention_filter_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_rum_retention_filter( + context: ToolContext, + filter_id: Annotated[str, "UUID of the retention filter to be updated."], + retention_filter_id: Annotated[str, "The unique ID of the retention filter to be updated."], + rum_application_id: Annotated[ + str, + "The ID of the RUM application to update the retention filter. Required for identifying the application.", # noqa: E501 + ], + enable_retention_filter: Annotated[ + bool | None, "Set to true to enable the retention filter. Set to false to disable it." + ] = None, + filter_name: Annotated[str | None, "The name of the RUM retention filter to update."] = None, + resource_type: Annotated[ + str, "Specifies the resource type for the retention filter. Must be 'retention_filters'." + ] = "retention_filters", + rum_event_type_filter: Annotated[ + str | None, + "Specifies the type of RUM events to filter on, such as 'session', 'view', 'action', etc.", + ] = None, + rum_retention_filter_query: Annotated[ + str | None, "The query string used to define criteria for the RUM retention filter." + ] = None, + sample_rate: Annotated[ + int | None, + "The sample rate for a RUM retention filter, an integer between 0 and 100, specifying the percentage of data to sample.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateRetentionFilter'."]: + """Update a RUM retention filter for a RUM application. + + Use this tool to modify the retention filter settings of a RUM application. It returns the updated RUM retention filter details if the request succeeds.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "enabled": enable_retention_filter, + "event_type": rum_event_type_filter, + "name": filter_name, + "query": rum_retention_filter_query, + "sample_rate": sample_rate, + }, + "id": filter_id, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + app_id=rum_application_id, + rf_id=retention_filter_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_rum_application( + context: ToolContext, + rum_application_id: Annotated[ + str, "The unique identifier for the RUM application you wish to delete." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteRUMApplication'."]: + """Deletes an existing RUM application in your organization. + + Use this tool to delete an existing Real User Monitoring (RUM) application. Called when you need to remove a RUM application from your Datadog organization.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=rum_application_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_rum_application_by_id( + context: ToolContext, + rum_application_id: Annotated[ + str, + "The ID of the RUM application to retrieve details for. This is a required string value.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRUMApplication'."]: + """Retrieve RUM application details by ID. + + Use this tool to obtain details about a RUM application within your organization 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="https://{datadog_base_url}/api/v2/rum/applications/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=rum_application_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_rum_application( + context: ToolContext, + rum_app_id: Annotated[str, "The unique ID of the RUM application to update."], + rum_application_id: Annotated[str, "The ID of the RUM application to update."], + product_analytics_retention_state: Annotated[ + str | None, + "Set the retention policy for Product Analytics data derived from RUM events. Accepted values: 'MAX', 'NONE'.", # noqa: E501 + ] = None, + rum_application_name: Annotated[ + str | None, "The name of the RUM application to be updated." + ] = None, + rum_application_type: Annotated[ + str | None, + "Specify the type of RUM application. Valid options: `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", # noqa: E501 + ] = None, + rum_application_update_type: Annotated[ + str, "Specifies the RUM application update type. Allowed value is 'rum_application_update'." + ] = "rum_application_update", + rum_event_processing_state: Annotated[ + str | None, + "Configures which RUM events are processed and stored. Accepts 'ALL', 'ERROR_FOCUSED_MODE', or 'NONE'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateRUMApplication'."]: + """Update settings of a specific RUM application by ID. + + Use this tool to modify the configuration or details of a RUM (Real User Monitoring) application within your organization by providing its ID.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "name": rum_application_name, + "product_analytics_retention_state": product_analytics_retention_state, + "rum_event_processing_state": rum_event_processing_state, + "type": rum_application_type, + }, + "id": rum_app_id, + "type": rum_application_update_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/applications/{id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), id=rum_application_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_rum_metrics( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRumMetrics'."]: + """Retrieve configured RUM-based metrics and their definitions. + + Use this tool to obtain a detailed list of metrics related to real user monitoring (RUM), including their configurations and definitions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/config/metrics".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_rum_metric( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateRumMetric'."]: + """Create a metric based on RUM data. + + Use this tool to create a metric using your organization's RUM data via Datadog. It returns the metric object if successful. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATERUMMETRIC_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATERUMMETRIC_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["CREATERUMMETRIC_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/rum/config/metrics".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATERUMMETRIC_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_rum_metric( + context: ToolContext, + rum_metric_id: Annotated[ + str, "The ID of the RUM-based metric to be deleted from your Datadog organization." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteRumMetric'."]: + """Delete a specific RUM-based metric from your organization. + + Call this tool to remove a specific RUM-based metric using its ID from your Datadog organization.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=rum_metric_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_rum_metric( + context: ToolContext, + metric_identifier: Annotated[ + str, + "The unique identifier for the RUM-based metric you want to retrieve from your organization.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRumMetric'."]: + """Retrieve a specific RUM-based metric for your organization. + + Call this tool to get detailed data about a specific Real User Monitoring (RUM) metric identified by its metric ID from your organization on Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=metric_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_rum_metric( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + metric_name: Annotated[ + str | None, + "The name of the rum-based metric 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 'UpdateRumMetric'."]: + """Update a specific rum-based metric in your organization. + + Use this tool to update details of a specific rum-based metric within your organization's Datadog settings. Ideal for modifying existing metrics to adjust configurations. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATERUMMETRIC_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not metric_name: + missing_params.append(("metric_name", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATERUMMETRIC_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["UPDATERUMMETRIC_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/rum/config/metrics/{metric_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), metric_id=metric_name + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATERUMMETRIC_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_rum_events( + context: ToolContext, + event_sort_order: Annotated[ + str | None, + "Specify the order of events: 'timestamp' for ascending or '-timestamp' for descending.", + ] = None, + maximum_event_count: Annotated[ + int | None, "Specify the maximum number of events to retrieve in a single response." + ] = 10, + maximum_timestamp: Annotated[ + str | None, "Maximum timestamp for requested events in ISO 8601 format." + ] = None, + minimum_timestamp: Annotated[ + str | None, + "The starting timestamp for the requested RUM events. Use a string format compatible with the API.", # noqa: E501 + ] = None, + pagination_cursor: Annotated[ + str | None, + "Cursor for fetching the next set of paginated results in the queried RUM events.", + ] = None, + rum_search_query: Annotated[ + str | None, "Search query following RUM syntax for filtering events." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListRUMEvents'."]: + """Retrieve RUM events matching a search query. + + This tool is used to list RUM (Real User Monitoring) events that match a specific search query. It's useful for retrieving your latest RUM events, and results are paginated to handle large datasets.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/events".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": rum_search_query, + "filter[from]": minimum_timestamp, + "filter[to]": maximum_timestamp, + "sort": event_sort_order, + "page[cursor]": pagination_cursor, + "page[limit]": maximum_event_count, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_rum_events( + context: ToolContext, + filter_max_time: Annotated[ + str | None, + "Specify the maximum event time in ISO 8601 format, mathematical expressions, or milliseconds.", # noqa: E501 + ] = "now", + maximum_events_in_response: Annotated[ + int | None, "Specifies the maximum number of RUM events to return in the response." + ] = 10, + minimum_event_time: Annotated[ + str | None, + "The minimum time for events in ISO 8601 format, math expressions, or milliseconds.", + ] = "now-15m", + pagination_cursor: Annotated[ + str | None, "Provide the cursor to fetch the next set of results from a previous query." + ] = None, + rum_search_query: Annotated[ + str | None, "The search query following the RUM search syntax to filter events." + ] = "*", + sort_order: Annotated[ + str | None, + "Specify the sort order for events by timestamp. Use 'timestamp' for ascending order and '-timestamp' for descending order.", # noqa: E501 + ] = None, + time_offset_seconds: Annotated[ + int | None, "The time offset in seconds to apply to the query." + ] = None, + timezone: Annotated[ + str | None, + "Specify the timezone as GMT, UTC, an offset (like UTC+1), or a Timezone Database identifier (like America/New_York).", # noqa: E501 + ] = "UTC", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchRUMEvents'."]: + """Search and filter RUM events based on a query. + + This tool retrieves RUM events that match a specified search query. It's useful for building complex filtering and search operations on RUM events. Results are paginated for easy navigation.""" # noqa: E501 + request_data = remove_none_values({ + "filter": {"from": minimum_event_time, "query": rum_search_query, "to": filter_max_time}, + "options": {"time_offset": time_offset_seconds, "timezone": timezone}, + "page": {"cursor": pagination_cursor, "limit": maximum_events_in_response}, + "sort": sort_order, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/rum/events/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_all_scorecard_outcomes( + context: ToolContext, + filter_by_rule_id: Annotated[str | None, "Filter outcomes based on specific rule ID."] = None, + filter_by_rule_name: Annotated[ + str | None, "Filter outcomes based on a specific rule name." + ] = None, + filter_outcomes_by_service_name: Annotated[ + str | None, + "Filter outcomes based on a specific service name. Provide the service name as a string.", + ] = None, + filter_rule_enabled: Annotated[ + bool | None, + "Filter outcomes based on whether a rule is enabled (true) or disabled (false).", + ] = None, + include_rule_details: Annotated[ + str | None, "Specify if related rule details should be included in the response." + ] = None, + outcome_state_filter: Annotated[ + str | None, + "Filter the scorecard outcomes by a specific state. Accepts a state value as a string.", + ] = None, + page_offset: Annotated[ + int | None, + "Specific offset to use as the beginning of the returned page, represented as an integer.", + ] = 0, + page_size: Annotated[int | None, "The number of results per page, with a maximum of 100."] = 10, + rule_fields_to_return: Annotated[ + str | None, "Specify which fields to return in the included rule details." + ] = None, + specified_outcome_values: Annotated[ + str | None, + "Comma-separated list of specific outcome attributes to return. Limits the response to these attributes.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListScorecardOutcomes'."]: + """Retrieve all rule outcomes from scorecards. + + Use this tool to fetch all outcomes from scorecards in Datadog. It's useful for obtaining detailed results of applied rules.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/scorecard/outcomes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[offset]": page_offset, + "include": include_rule_details, + "fields[outcome]": specified_outcome_values, + "fields[rule]": rule_fields_to_return, + "filter[outcome][service_name]": filter_outcomes_by_service_name, + "filter[outcome][state]": outcome_state_filter, + "filter[rule][enabled]": filter_rule_enabled, + "filter[rule][id]": filter_by_rule_id, + "filter[rule][name]": filter_by_rule_name, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_scorecard_outcomes( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateScorecardOutcomesAsync'."]: + """Update multiple scorecard rule outcomes in Datadog. + + Use this tool to update several scorecard rule outcomes in Datadog with a single request. Ideal for synchronizing or modifying multiple outcomes efficiently. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATESCORECARDOUTCOMES_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESCORECARDOUTCOMES_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["UPDATESCORECARDOUTCOMES_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/scorecard/outcomes".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESCORECARDOUTCOMES_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def set_service_rule_outcomes_batch( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateScorecardOutcomesBatch'."]: + """Batch set multiple service-rule outcomes. + + This tool is used to set multiple service-rule outcomes in a single batched request to Datadog, making it efficient for updating multiple outcomes simultaneously. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "SETSERVICERULEOUTCOMESBATCH_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["SETSERVICERULEOUTCOMESBATCH_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["SETSERVICERULEOUTCOMESBATCH_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/scorecard/outcomes/batch".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SETSERVICERULEOUTCOMESBATCH_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def fetch_scorecard_rules( + context: ToolContext, + filter_custom_rules_only: Annotated[ + bool | None, "Set to true to include only custom rules in the results." + ] = None, + filter_for_enabled_rules: Annotated[ + bool | None, "Set to true to filter for enabled rules only." + ] = None, + filter_rule_by_id: Annotated[ + str | None, "Filter the rules based on a specific rule ID." + ] = None, + filter_rule_description: Annotated[ + str | None, + "Filter rules based on their description. Provide a string to match against the rule descriptions.", # noqa: E501 + ] = None, + filter_rules_by_name: Annotated[ + str | None, "Specify a rule name to filter the scorecard rules." + ] = None, + include_scorecard_details: Annotated[ + str | None, "Specify related scorecard details to include in the response." + ] = None, + page_offset: Annotated[ + int | None, + "Specific offset to use as the beginning of the returned page for fetching scorecard rules.", # noqa: E501 + ] = 0, + page_size: Annotated[ + int | None, "Number of rules to return per page. Maximum value is 100." + ] = 10, + specific_rule_fields: Annotated[ + str | None, + "Specify which rule fields to include in the response. Provide a comma-separated list of field names.", # noqa: E501 + ] = None, + specific_scorecard_fields: Annotated[ + str | None, + "Specify which fields to include in the response for scorecard attributes. Use comma-separated values.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListScorecardRules'."]: + """Fetch all scorecard rules from Datadog. + + Use this tool to retrieve a list of all scorecard rules from Datadog's API. This is useful for managing and reviewing rules related to scorecards.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/scorecard/rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[offset]": page_offset, + "include": include_scorecard_details, + "filter[rule][id]": filter_rule_by_id, + "filter[rule][enabled]": filter_for_enabled_rules, + "filter[rule][custom]": filter_custom_rules_only, + "filter[rule][name]": filter_rules_by_name, + "filter[rule][description]": filter_rule_description, + "fields[rule]": specific_rule_fields, + "fields[scorecard]": specific_scorecard_fields, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_scorecard_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateScorecardRule'."]: + """Create a new scorecard rule in Datadog. + + Use this tool to create a new scorecard rule in Datadog when you need to automate monitoring tasks or enforce policies. Ideal for setting up performance metrics or compliance checks. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESCORECARDRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATESCORECARDRULE_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["CREATESCORECARDRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/scorecard/rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESCORECARDRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_scorecard_rule( + context: ToolContext, + rule_id: Annotated[str, "The ID of the scorecard rule to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteScorecardRule'."]: + """Deletes a scorecard rule by its ID. + + Use this tool to delete a specific rule in a scorecard by providing its ID. This is useful for managing and updating scorecard configurations by removing obsolete or incorrect rules.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/scorecard/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=rule_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_scorecard_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + rule_id: Annotated[ + str | None, + "A unique identifier for the scorecard rule to be updated in Datadog. 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 'UpdateScorecardRule'."]: + """Updates an existing scorecard rule in Datadog. + + Use this tool to modify an existing scorecard rule in the Datadog platform by specifying the rule ID and the new details for the rule. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATESCORECARDRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not rule_id: + missing_params.append(("rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESCORECARDRULE_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["UPDATESCORECARDRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/scorecard/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=rule_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESCORECARDRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def download_cloud_workload_policy( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DownloadCloudWorkloadPolicyFile'."]: + """Downloads a Workload Protection policy file for agents. + + Generates and downloads a Workload Protection policy file from active agent rules, specifically for the US1-FED site. This file is used to update the policy on your agents.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security/cloud_workload/policy/download".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_cloud_workload_security_agent_rules( + context: ToolContext, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ListCloudWorkloadSecurityAgentRules'." +]: + """Retrieve the list of cloud workload security agent rules. + + Use this tool to get a list of agent rules specifically for the Government (US1-FED) site.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_cloud_workload_security_agent_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateCloudWorkloadSecurityAgentRule'." +]: + """Create a new cloud workload security agent rule. + + This tool creates a new security agent rule for cloud workload monitoring. It should be called when there is a need to set up or update security rules specifically for the Government (US1-FED) site. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS[ + "CREATECLOUDWORKLOADSECURITYAGENTRULE_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[ + "CREATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA" + ], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_cloud_workload_security_agent_rule( + context: ToolContext, + agent_rule_identifier: Annotated[ + str, "The unique identifier for the specific agent rule to delete." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'DeleteCloudWorkloadSecurityAgentRule'." +]: + """Delete a specific cloud workload security agent rule. + + This tool deletes a specific cloud workload security agent rule in the Datadog system, applicable only for the Government (US1-FED) site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + agent_rule_id=agent_rule_identifier, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_cloud_workload_security_agent_rule_details( + context: ToolContext, + agent_rule_identifier: Annotated[ + str, "Unique identifier for the cloud workload security agent rule to retrieve details." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetCloudWorkloadSecurityAgentRule'." +]: + """Retrieve details of a cloud workload security agent rule. + + Use this tool to get information about a specific security agent rule in a cloud workload. It's specifically for the Datadog Government (US1-FED) site.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + agent_rule_id=agent_rule_identifier, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_cloud_workload_security_agent_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + agent_rule_identifier: Annotated[ + str | None, + "The unique identifier for the agent rule 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 'UpdateCloudWorkloadSecurityAgentRule'." +]: + """Update a specific cloud workload security agent rule. + + Use this tool to update a particular security agent rule for cloud workloads. This should only be used for the Government (US1-FED) site and returns the updated agent rule object upon success. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not agent_rule_identifier: + missing_params.append(("agent_rule_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS[ + "UPDATECLOUDWORKLOADSECURITYAGENTRULE_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[ + "UPDATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA" + ], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + agent_rule_id=agent_rule_identifier, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_security_filters( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListSecurityFilters'."]: + """Retrieve configured security filters from Datadog. + + Use this tool to get a list of all configured security filters along with their definitions. It is useful for monitoring and managing security configurations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_security_filter( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateSecurityFilter'."]: + """Create a security filter using Datadog's API. + + Use this tool to create a security filter for monitoring purposes in Datadog. Ideal for setting up security monitoring based on predefined conditions. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESECURITYFILTER_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATESECURITYFILTER_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["CREATESECURITYFILTER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESECURITYFILTER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_security_filter( + context: ToolContext, + security_filter_id: Annotated[str, "The ID of the security filter to delete in Datadog."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteSecurityFilter'."]: + """Delete a specific security filter in Datadog. + + Use this tool to delete a specified security filter by its ID in Datadog's security monitoring configuration.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + security_filter_id=security_filter_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_security_filter_details( + context: ToolContext, + security_filter_id: Annotated[ + str, "The unique identifier for the security filter to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSecurityFilter'."]: + """Retrieve the details of a specific security filter. + + Use this tool to get detailed information about a security filter in Datadog's security monitoring configuration. Ideal for understanding specific filter configurations and settings.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + security_filter_id=security_filter_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_security_filter( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + security_filter_id: Annotated[ + str | None, + "The ID of the specific security filter 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 'UpdateSecurityFilter'."]: + """Update a specific security filter's configuration. + + Use this tool to update the configuration of a specific security filter in Datadog. It returns the updated security filter object when successful. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATESECURITYFILTER_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not security_filter_id: + missing_params.append(("security_filter_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESECURITYFILTER_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["UPDATESECURITYFILTER_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + security_filter_id=security_filter_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESECURITYFILTER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_suppression_rules( + context: ToolContext, + suppression_query_string: Annotated[ + str | None, "A query string to filter suppression rules. Use to specify search criteria." + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ListSecurityMonitoringSuppressions'." +]: + """Retrieve the list of security monitoring suppression rules. + + This tool retrieves all the suppression rules configured in Datadog's security monitoring system. Use this tool to view the current set of rules that suppress certain alerts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"query": suppression_query_string}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_suppression_rule( + context: ToolContext, + enable_suppression_rule: Annotated[ + bool, "Enable the suppression rule. Use true to enable, false to disable." + ], + rule_query: Annotated[ + str, "The rule criteria for the suppression rule using detection rules syntax." + ], + suppression_rule_name: Annotated[str, "The name of the suppression rule to be created."], + data_exclusion_query: Annotated[ + str | None, + "An exclusion query for input data to ignore events in suppression rules, applicable to logs, Agent events, etc.", # noqa: E501 + ] = None, + expiration_date_unix_ms: Annotated[ + int | None, + "A Unix millisecond timestamp for rule expiration. After this date, the rule will not suppress signals.", # noqa: E501 + ] = None, + resource_type: Annotated[ + str, "The type of the resource, which should always be `suppressions`." + ] = "suppressions", + start_date_timestamp: Annotated[ + int | None, + "A Unix millisecond timestamp indicating when the suppression rule begins to suppress signals.", # noqa: E501 + ] = None, + suppression_query: Annotated[ + str | None, + "The query used to suppress signals in the security rule. Matches are not triggered.", + ] = None, + suppression_rule_description: Annotated[ + str | None, + "A description for the suppression rule. Provide a clear and concise explanation of the rule's purpose.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateSecurityMonitoringSuppression'." +]: + """Create a new security monitoring suppression rule. + + Use this tool to create a new suppression rule in Datadog's security monitoring. It should be called when you need to suppress specific security alerts.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "data_exclusion_query": data_exclusion_query, + "description": suppression_rule_description, + "enabled": enable_suppression_rule, + "expiration_date": expiration_date_unix_ms, + "name": suppression_rule_name, + "rule_query": rule_query, + "start_date": start_date_timestamp, + "suppression_query": suppression_query, + }, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_future_rule_suppressions( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetSuppressionsAffectingFutureRule'." +]: + """Retrieve suppressions affecting a future security rule. + + Use this tool to get a list of suppressions that would impact a specified security monitoring rule in the future. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "GETFUTURERULESUPPRESSIONS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["GETFUTURERULESUPPRESSIONS_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["GETFUTURERULESUPPRESSIONS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["GETFUTURERULESUPPRESSIONS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_suppressions_for_rule( + context: ToolContext, + rule_id: Annotated[ + str, "The unique identifier of the specific rule for which to retrieve suppressions." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSuppressionsAffectingRule'."]: + """Retrieve suppressions affecting a specific rule by ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=rule_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def validate_suppression_rule( + context: ToolContext, + is_suppression_rule_enabled: Annotated[ + bool, "Indicates whether the suppression rule is currently active." + ], + suppression_rule_name: Annotated[str, "The name of the suppression rule to be validated."], + suppression_rule_query: Annotated[ + str, "The rule query for the suppression rule, using detection rules search bar syntax." + ], + exclusion_query_on_input_data: Annotated[ + str | None, + "An exclusion query for input data, such as logs or events. Events matching this are ignored by detection rules in the suppression rule.", # noqa: E501 + ] = None, + resource_type: Annotated[ + str, "Defines the type of the resource. Always set to `suppressions`." + ] = "suppressions", + suppression_query: Annotated[ + str | None, + "The query for the suppression rule. Signals matching this query are suppressed, using Signals Explorer syntax.", # noqa: E501 + ] = None, + suppression_rule_description: Annotated[ + str | None, + "A text description of the suppression rule, explaining its purpose and details.", + ] = None, + suppression_rule_expiration_date: Annotated[ + int | None, + "A Unix millisecond timestamp for when the suppression rule expires and stops suppressing signals.", # noqa: E501 + ] = None, + suppression_rule_start_date: Annotated[ + int | None, + "Unix millisecond timestamp for the start date of the suppression rule, when it begins suppressing signals.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ValidateSecurityMonitoringSuppression'." +]: + """Validate a suppression rule in Datadog's monitoring system. + + This tool validates suppression rules in Datadog's security monitoring configuration. Use it to ensure rules are correctly set up and functioning as intended.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "data_exclusion_query": exclusion_query_on_input_data, + "description": suppression_rule_description, + "enabled": is_suppression_rule_enabled, + "expiration_date": suppression_rule_expiration_date, + "name": suppression_rule_name, + "rule_query": suppression_rule_query, + "start_date": suppression_rule_start_date, + "suppression_query": suppression_query, + }, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/validation".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_suppression_rule( + context: ToolContext, + suppression_rule_id: Annotated[ + str, "The unique identifier of the suppression rule to be deleted in Datadog." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'DeleteSecurityMonitoringSuppression'." +]: + """Delete a specific suppression rule in Datadog. + + Use this tool to delete a specific suppression rule from Datadog's security monitoring configuration. Call it when you need to remove an existing suppression rule using its ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/{suppression_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + suppression_id=suppression_rule_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_suppression_rule_details( + context: ToolContext, + suppression_rule_id: Annotated[ + str, "The unique ID of the suppression rule you wish to retrieve details for." + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetSecurityMonitoringSuppression'." +]: + """Get details of a specific security suppression rule. + + Fetch the details of a suppression rule by providing the suppression ID. Useful for understanding the configuration and parameters of a specific rule in the security monitoring system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/{suppression_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + suppression_id=suppression_rule_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_suppression_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + suppression_rule_id: Annotated[ + str | None, + "The unique identifier of the suppression rule 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 'UpdateSecurityMonitoringSuppression'." +]: + """Update a specific suppression rule in Datadog. + + Use this tool to modify an existing suppression rule within Datadog's security monitoring configuration. Call this when you need to change the settings of a particular suppression rule identified by its ID. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATESUPPRESSIONRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not suppression_rule_id: + missing_params.append(("suppression_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESUPPRESSIONRULE_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["UPDATESUPPRESSIONRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/{suppression_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + suppression_id=suppression_rule_id, + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESUPPRESSIONRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_security_monitoring_rules( + context: ToolContext, + page_number: Annotated[ + int | None, "The specific page number to return when listing the security monitoring rules." + ] = 0, + page_size: Annotated[ + int | None, "Size for a given page. The maximum allowed value is 100. Use an integer value." + ] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListSecurityMonitoringRules'."]: + """Retrieve a list of security monitoring rules. + + Use this tool to get a list of security monitoring rules from Datadog. Call it when you need to view or manage security monitoring rules.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({"page[size]": page_size, "page[number]": page_number}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_security_monitoring_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateSecurityMonitoringRule'."]: + """Create a detection rule for monitoring security events. + + This tool is used to create a new detection rule for monitoring security events through Datadog. It involves setting up criteria and policies to trigger alerts for specific security-related incidents. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATESECURITYMONITORINGRULE_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["CREATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def convert_rule_json_to_terraform( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], + "Response from the API endpoint 'ConvertSecurityMonitoringRuleFromJSONToTerraform'.", +]: + """Converts Datadog security rules from JSON to Terraform format. + + Use this tool to convert a Datadog security monitoring rule from JSON format to Terraform format. It is helpful when you need to transform security rules for infrastructure as code purposes. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CONVERTRULEJSONTOTERRAFORM_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CONVERTRULEJSONTOTERRAFORM_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["CONVERTRULEJSONTOTERRAFORM_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules/convert".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CONVERTRULEJSONTOTERRAFORM_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def test_security_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'TestSecurityMonitoringRule'."]: + """Test a security monitoring rule. + + Use this tool to test a security monitoring rule within Datadog's system. It should be called when you need to verify the effectiveness or functionality of a specific rule. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["TESTSECURITYRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["TESTSECURITYRULE_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["TESTSECURITYRULE_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules/test".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["TESTSECURITYRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def validate_security_monitoring_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ValidateSecurityMonitoringRule'."]: + """Validate a detection rule in Datadog. + + Use this tool to validate the configuration of a detection rule in Datadog's security monitoring. It checks if the rule meets all necessary criteria and returns whether it is valid. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "VALIDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["VALIDATESECURITYMONITORINGRULE_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["VALIDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules/validation".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["VALIDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_security_monitoring_rule( + context: ToolContext, + security_rule_id: Annotated[ + str, + "The unique identifier of the security rule to be deleted. Default rules cannot be deleted.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteSecurityMonitoringRule'."]: + """Delete an existing security monitoring rule. + + Use this tool to delete a specified security monitoring rule in Datadog. Note that default rules 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="https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=security_rule_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_security_monitoring_rule_details( + context: ToolContext, + security_rule_id: Annotated[ + str, + "The unique identifier for the security monitoring rule you want to retrieve details for.", + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSecurityMonitoringRule'."]: + """Retrieve detailed information about a specific security rule. + + Use this tool to get comprehensive details about a security monitoring rule 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="https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=security_rule_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_security_monitoring_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + security_rule_id: Annotated[ + str | None, + "The ID of the security monitoring rule 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 'UpdateSecurityMonitoringRule'."]: + """Update an existing Datadog security monitoring rule. + + Use this tool to update an existing security monitoring rule in Datadog. Ensure all 'cases', 'queries', and 'options' fields are included when making updates. Default rules can only have specific updates allowed. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not security_rule_id: + missing_params.append(("security_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESECURITYMONITORINGRULE_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["UPDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=security_rule_id + ), + method="PUT", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def convert_security_rule_to_terraform( + context: ToolContext, + rule_id: Annotated[str, "The ID of the Datadog security monitoring rule to convert."], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ConvertExistingSecurityMonitoringRule'." +]: + """Convert existing security rule from JSON to Terraform. + + This tool converts an existing Datadog security monitoring rule from its JSON format to a Terraform configuration. Use it to facilitate the integration and management of your rules using Terraform.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}/convert".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=rule_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def test_security_monitoring_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + security_monitoring_rule_id: Annotated[ + str | None, + "The ID of the existing security monitoring rule to test in Datadog. 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 'TestExistingSecurityMonitoringRule'." +]: + """Test an existing security monitoring rule in Datadog. + + Use this tool to test an existing security monitoring rule in Datadog by specifying the rule ID. It will return the results of the test, helping to ensure the rule is functioning as expected. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "TESTSECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not security_monitoring_rule_id: + missing_params.append(("security_monitoring_rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["TESTSECURITYMONITORINGRULE_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["TESTSECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}/test".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + rule_id=security_monitoring_rule_id, + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["TESTSECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_rule_version_history( + context: ToolContext, + rule_id: Annotated[ + str, "The unique identifier for the rule. Required to fetch its version history in Datadog." + ], + page_number: Annotated[int | None, "The specific page number to return in the results."] = 0, + page_size: Annotated[int | None, "Size for a given page, maximum value is 100."] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetRuleVersionHistory'."]: + """Retrieve a rule's version history. + + Use this tool to obtain the version history of a specific security monitoring rule by its ID in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}/version_history".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=rule_id + ), + method="GET", + params=remove_none_values({"page[size]": page_size, "page[number]": page_number}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_security_signals( + context: ToolContext, + cursor_based_pagination: Annotated[ + str | None, "Cursor for pagination to continue retrieving results from a previous query." + ] = None, + max_security_signals_response: Annotated[ + int | None, "Specify the maximum number of security signals to return in the response." + ] = 10, + max_timestamp_for_security_signals: Annotated[ + str | None, "Specify the maximum timestamp for retrieving security signals." + ] = None, + minimum_timestamp: Annotated[ + str | None, "The minimum timestamp to filter security signals. Format: ISO 8601 string." + ] = None, + result_sort_order: Annotated[ + str | None, + "Specify the sort order for the security signals. Use 'timestamp' for ascending order, '-timestamp' for descending order.", # noqa: E501 + ] = None, + search_query_for_security_signals: Annotated[ + str | None, "The search query string used to filter security signals from Datadog." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListSecurityMonitoringSignals'."]: + """Retrieve security signals that match a search query. + + This tool retrieves a list of security signals from Datadog based on a search query, using the GET method for the security monitoring signals endpoint.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/signals".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": search_query_for_security_signals, + "filter[from]": minimum_timestamp, + "filter[to]": max_timestamp_for_security_signals, + "sort": result_sort_order, + "page[cursor]": cursor_based_pagination, + "page[limit]": max_security_signals_response, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_security_signals( + context: ToolContext, + maximum_signals_per_response: Annotated[ + int | None, "The maximum number of security signals to return in the response." + ] = 10, + maximum_timestamp_for_signals: Annotated[ + str | None, + "The latest date and time for security signals to be included in the search results, formatted as a string.", # noqa: E501 + ] = None, + minimum_timestamp: Annotated[ + str | None, + "The minimum timestamp for requested security signals. Use ISO 8601 format, e.g., '2023-10-05T14:48:00Z'.", # noqa: E501 + ] = None, + pagination_cursor: Annotated[ + str | None, + "The cursor to continue listing results from the previous query. Use it for paginating results.", # noqa: E501 + ] = None, + search_query: Annotated[ + str | None, + "A string used to search and filter the security signals based on specific criteria.", + ] = None, + sort_order: Annotated[ + str | None, + "Specify how to sort the security signals. Use 'timestamp' for ascending and '-timestamp' for descending order.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchSecurityMonitoringSignals'."]: + """Retrieve security signals based on a search query. + + Use this tool to find security signals that match specific search criteria. Ideal for monitoring security alerts and potential threats.""" # noqa: E501 + request_data = remove_none_values({ + "filter": { + "from": minimum_timestamp, + "query": search_query, + "to": maximum_timestamp_for_signals, + }, + "page": {"cursor": pagination_cursor, "limit": maximum_signals_per_response}, + "sort": sort_order, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/signals/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_security_signal_details( + context: ToolContext, + signal_id: Annotated[ + str, + "The unique identifier for the security monitoring signal to retrieve details for. This ID is used to specify which signal's details to fetch.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSecurityMonitoringSignal'."]: + """Retrieve details of a security monitoring signal. + + This tool is used to obtain detailed information about a specific security monitoring signal in Datadog. It should be called when you need to understand the context or specifics of a particular signal identified by its unique signal ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), signal_id=signal_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_signal_assignee( + context: ToolContext, + assignee_uuid: Annotated[ + str, "UUID assigned by Datadog to identify the user account for the signal's assignee." + ], + signal_id: Annotated[ + str, "The unique identifier for the security signal to modify its assignee." + ], + assignee_gravatar_icon: Annotated[ + str | None, "URL for the Gravatar icon associated with the user account." + ] = None, + assignee_name: Annotated[ + str | None, "The name for the user account to be assigned the security signal." + ] = None, + signal_version_number: Annotated[ + int | None, + "Integer representing the version of the updated signal. If the server-side version is higher, the update will be rejected.", # noqa: E501 + ] = None, + user_account_handle: Annotated[ + str | None, "The handle for the user account to be assigned the security signal." + ] = None, + user_account_numerical_id: Annotated[ + int | None, + "Numerical ID assigned by Datadog to the user account. Required for identifying the assignee.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'EditSecurityMonitoringSignalAssignee'." +]: + """Modify the triage assignee of a security signal. + + Use this tool to change the person assigned to handle a security monitoring signal in Datadog. This is helpful when reassigning tasks to different team members for better workload distribution or expertise alignment.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "assignee": { + "handle": user_account_handle, + "icon": assignee_gravatar_icon, + "id": user_account_numerical_id, + "name": assignee_name, + "uuid": assignee_uuid, + }, + "version": signal_version_number, + } + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}/assignee".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), signal_id=signal_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_security_signal_incidents( + context: ToolContext, + incident_ids: Annotated[ + list[int], "An array of incident IDs to associate with the security signal." + ], + signal_id: Annotated[str, "The unique identifier for the security signal to modify."], + signal_version: Annotated[ + int | None, + "Version of the updated signal. Ensure the client-side version is not lower than the server-side version to avoid rejection.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'EditSecurityMonitoringSignalIncidents'." +]: + """Modify incidents linked to a security signal. + + This tool allows for updating the incidents related to a specific security monitoring signal. Use it when you need to change how a security signal is associated with incidents.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"attributes": {"incident_ids": incident_ids, "version": signal_version}} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}/incidents".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), signal_id=signal_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def change_signal_state( + context: ToolContext, + new_triage_state: Annotated[ + str, + "The new triage state of the signal. Valid options are 'open', 'archived', or 'under_review'.", # noqa: E501 + ], + signal_id: Annotated[str, "The unique identifier of the security signal to be updated."], + archive_comment: Annotated[ + str | None, + "Optional comment to display on archived signals. Useful for context or documentation.", + ] = None, + archive_reason: Annotated[ + str | None, + "Reason for archiving the signal. Options include 'none', 'false_positive', 'testing_or_maintenance', 'investigated_case_opened', or 'other'.", # noqa: E501 + ] = None, + event_type: Annotated[ + str | None, "The type of event, must be 'signal_metadata'." + ] = "signal_metadata", + security_signal_unique_id: Annotated[ + str | None, "The unique identifier for the security signal to be modified." + ] = None, + updated_signal_version: Annotated[ + int | None, + "The version number of the signal to update. The update is rejected if the server's version is higher.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'EditSecurityMonitoringSignalState'." +]: + """Change the triage state of a security signal. + + This tool is used to modify the triage state of a specific security signal in Datadog's security monitoring system. It is useful for managing signal priorities and responses.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "archive_comment": archive_comment, + "archive_reason": archive_reason, + "state": new_triage_state, + "version": updated_signal_version, + }, + "id": security_signal_unique_id, + "type": event_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}/state".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), signal_id=signal_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_scanning_groups( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListScanningGroups'."]: + """Retrieve all scanning groups in your organization with Datadog's API.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def reorder_scanning_groups( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ReorderScanningGroups'."]: + """Reorder the list of scanning groups. + + This tool is used to change the order of sensitive data scanning groups in Datadog. Call this tool when you need to reorder the existing groups. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "REORDERSCANNINGGROUPS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REORDERSCANNINGGROUPS_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["REORDERSCANNINGGROUPS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REORDERSCANNINGGROUPS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_scanning_group( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateScanningGroup'."]: + """Create a new scanning group in Datadog. + + This tool creates a new scanning group in the Datadog sensitive data scanner. It allows for the configuration relationship to be included but does not support creating rules simultaneously. The new group is added last in the configuration order. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESCANNINGGROUP_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATESCANNINGGROUP_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["CREATESCANNINGGROUP_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/groups".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESCANNINGGROUP_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_scanning_group( + context: ToolContext, + group_id: Annotated[str, "The ID of the scanning group to be deleted."], + api_version: Annotated[ + int | None, "Optional version number of the API to use for the request." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteScanningGroup'."]: + """Delete a specified scanning group in Datadog. + + Use this tool to delete a specified scanning group in Datadog's sensitive data scanner configuration. It should be called when you need to remove an existing group by its ID.""" # noqa: E501 + request_data = remove_none_values({"meta": {"version": api_version}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/groups/{group_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), group_id=group_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_scanning_group( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + group_id: Annotated[ + str | None, + "The ID of the scanning group whose rules are being updated. This is required to identify the 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 'UpdateScanningGroup'."]: + """Update a scanning group's rule order in Datadog. + + Use this tool to update and reorder the rules within a specific scanning group in Datadog. Ensure all current rules are included in the update to maintain the group integrity. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATESCANNINGGROUP_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not group_id: + missing_params.append(("group_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESCANNINGGROUP_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["UPDATESCANNINGGROUP_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/groups/{group_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), group_id=group_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESCANNINGGROUP_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_scanning_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateScanningRule'."]: + """Create a scanning rule in a sensitive data group. + + Use this tool to create a new scanning rule within a sensitive data scanner group. The rule requires a group relationship and either a standard pattern or a regex attribute, but not both. If no attributes are specified, it will scan all except excluded ones. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESCANNINGRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATESCANNINGRULE_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["CREATESCANNINGRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/rules".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESCANNINGRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_scanning_rule( + context: ToolContext, + rule_id: Annotated[str, "The unique identifier for the scanning rule to be deleted."], + api_version: Annotated[ + int | None, "Specify the API version to use for the request (optional)." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteScanningRule'."]: + """Delete a specific scanning rule by ID. + + Use this tool to remove a sensitive data scanning rule in Datadog by providing the rule's ID. It should be called when a specific scanning rule needs to be deleted.""" # noqa: E501 + request_data = remove_none_values({"meta": {"version": api_version}}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=rule_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_scanning_rule( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + rule_id: Annotated[ + str | None, + "The unique identifier for the scanning rule to be updated. This value is required. 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 'UpdateScanningRule'."]: + """Update a scanning rule in Datadog. + + Use this tool to update a scanning rule in Datadog's sensitive data scanner. It's important to note that the request must not attempt to edit the regex attribute of rules that include a standard_pattern relationship, as these are non-editable. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATESCANNINGRULE_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not rule_id: + missing_params.append(("rule_id", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATESCANNINGRULE_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["UPDATESCANNINGRULE_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/rules/{rule_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), rule_id=rule_id + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATESCANNINGRULE_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_standard_patterns( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListStandardPatterns'."]: + """Retrieve all standard patterns for sensitive data scanning. + + This tool is used to fetch a list of all standard patterns available for sensitive data scanning with Datadog. Call this tool when you need access to predefined patterns used for identifying sensitive data.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/standard-patterns".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_service_account( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateServiceAccount'."]: + """Create a service account for your organization. + + + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATESERVICEACCOUNT_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATESERVICEACCOUNT_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["CREATESERVICEACCOUNT_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/service_accounts".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATESERVICEACCOUNT_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_service_account_app_keys( + context: ToolContext, + service_account_id: Annotated[ + str, + "The unique identifier for the service account whose application keys are to be retrieved.", + ], + created_at_start_filter: Annotated[ + str | None, "Include application keys created on or after this date. Use format YYYY-MM-DD." + ] = None, + created_before_date: Annotated[ + str | None, "Include application keys created on or before this date." + ] = None, + filter_string_for_application_keys: Annotated[ + str | None, + "Specify a string to filter the application keys by. Only keys containing the string will be shown.", # noqa: E501 + ] = None, + page_number: Annotated[int | None, "Specify the page number to be returned."] = 0, + page_size: Annotated[ + int | None, + "Number of application keys to retrieve per page. The maximum allowed value is 100.", + ] = 10, + sort_order_attribute: Annotated[ + str | None, + "Attribute to sort application keys. Prefix with '-' for descending order. Options: created_at, last4, name.", # noqa: E501 + ] = "name", +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ListServiceAccountApplicationKeys'." +]: + """Retrieve all app keys for a specific service account. + + Use this tool to list all application keys available for a specified service account in Datadog. It is useful when you need to manage or audit the application keys associated with a service account.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + service_account_id=service_account_id, + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_order_attribute, + "filter": filter_string_for_application_keys, + "filter[created_at][start]": created_at_start_filter, + "filter[created_at][end]": created_before_date, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_service_account_app_key( + context: ToolContext, + application_key_name: Annotated[ + str, "The name for the application key to be created for the service account." + ], + service_account_identifier: Annotated[ + str, + "The unique identifier of the service account for which the application key will be created.", # noqa: E501 + ], + application_key_scopes: Annotated[ + list[str] | None, + "List of scopes to assign to the application key for specific permissions.", + ] = None, + application_keys_resource_type: Annotated[ + str, + "Specify the resource type for the application key. This should always be 'application_keys'.", # noqa: E501 + ] = "application_keys", +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateServiceAccountApplicationKey'." +]: + """Create an application key for a service account. + + Use this tool to create a new application key for a specified service account on Datadog. It should be called when an application key is needed for service account integration or access.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"name": application_key_name, "scopes": application_key_scopes}, + "type": application_keys_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + service_account_id=service_account_identifier, + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_service_account_app_key( + context: ToolContext, + application_key_id: Annotated[ + str, "The unique identifier for the application key to be deleted." + ], + service_account_id: Annotated[ + str, + "The unique identifier for the service account from which the application key will be deleted.", # noqa: E501 + ], +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'DeleteServiceAccountApplicationKey'." +]: + """Delete an application key from a service account. + + Call this tool to remove an application key associated with a specific service account in Datadog. This tool is useful for managing access and maintaining security by ensuring unused or compromised keys are deleted.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + service_account_id=service_account_id, + app_key_id=application_key_id, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_datadog_service_account_app_key( + context: ToolContext, + application_key_id: Annotated[ + str, "The ID of the application key for the Datadog service account." + ], + service_account_id: Annotated[ + str, + "The unique identifier for the Datadog service account to retrieve the application key from.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetServiceAccountApplicationKey'."]: + """Retrieve a specific application key for a Datadog service account. + + Use this tool to obtain details of an application key owned by a specific Datadog service account, identified by its service account ID and application key ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + service_account_id=service_account_id, + app_key_id=application_key_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def edit_service_account_key( + context: ToolContext, + app_key_identifier: Annotated[ + str, "The unique identifier of the application key to be edited." + ], + application_key_id: Annotated[ + str, "The unique identifier for the application key to be edited." + ], + service_account_id: Annotated[str, "The unique identifier for the service account."], + application_key_name: Annotated[ + str | None, "Name of the application key to be updated." + ] = None, + application_key_resource_type: Annotated[ + str, "Specify the type of resource for the application key. Must be 'application_keys'." + ] = "application_keys", + application_key_scopes: Annotated[ + list[str] | None, + "Array of scopes to grant the application key. Each scope is a string representing a permission or capability.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'UpdateServiceAccountApplicationKey'." +]: + """Edit an application key for a service account. + + Use this tool to modify the details of an existing application key owned by a specific service account. This can help in updating permissions or other key parameters as needed.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"name": application_key_name, "scopes": application_key_scopes}, + "id": app_key_identifier, + "type": application_key_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + service_account_id=service_account_id, + app_key_id=application_key_id, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_service_definitions( + context: ToolContext, + page_number: Annotated[ + int | None, "The specific page number to retrieve from the service definitions list." + ] = 0, + page_size: Annotated[ + int | None, "Specify the number of items per page. The maximum allowed value is 100." + ] = 10, + response_schema_version: Annotated[ + str | None, + "Specifies the version of the schema to be returned in the response. Acceptable values are 'v1', 'v2', 'v2.1', or 'v2.2'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListServiceDefinitions'."]: + """Retrieve all service definitions from the Datadog Service Catalog. + + Use this tool to get a comprehensive list of service definitions from Datadog's Service Catalog. Ideal for scenarios where service information retrieval is required.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/services/definitions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "schema_version": response_schema_version, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_or_update_service_definitions( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'CreateOrUpdateServiceDefinitions'." +]: + """Create or update service definitions in Datadog. + + Use this tool to create a new service definition or update an existing one in the Datadog Service Catalog. Call this when needing to manage service details within Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEORUPDATESERVICEDEFINITIONS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEORUPDATESERVICEDEFINITIONS_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["CREATEORUPDATESERVICEDEFINITIONS_REQUEST_BODY_SCHEMA"], + indent=2, + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/services/definitions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEORUPDATESERVICEDEFINITIONS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_service_definition( + context: ToolContext, + service_name: Annotated[ + str, "The name of the service to delete from the Datadog Service Catalog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteServiceDefinition'."]: + """Deletes a service definition from Datadog. + + Use this tool to remove a specific service definition from the Datadog Service Catalog. Ideal for cleaning up or managing services 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="https://{datadog_base_url}/api/v2/services/definitions/{service_name}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), service_name=service_name + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_service_definition( + context: ToolContext, + service_name: Annotated[ + str, "The exact name of the service to retrieve from Datadog's Service Catalog." + ], + desired_schema_version: Annotated[ + str | None, + "Specify the schema version for the response. Options: 'v1', 'v2', 'v2.1', 'v2.2'.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetServiceDefinition'."]: + """Retrieve a service definition from Datadog's Service Catalog. + + Call this tool to obtain specific details about a service defined in the Datadog Service Catalog. Useful for monitoring and managing services.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/services/definitions/{service_name}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), service_name=service_name + ), + method="GET", + params=remove_none_values({"schema_version": desired_schema_version}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_security_monitoring_signals( + context: ToolContext, + max_security_signals: Annotated[ + int | None, + "The maximum number of security signals to return in the response. Specify an integer value.", # noqa: E501 + ] = 10, + maximum_timestamp_for_signals: Annotated[ + str | None, "The latest timestamp to fetch security signals up to, formatted as a string." + ] = None, + minimum_timestamp: Annotated[ + str | None, "The minimum timestamp for requested security signals in ISO 8601 format." + ] = None, + results_page_cursor: Annotated[ + str | None, "Cursor for paginated results, using the cursor from the previous query." + ] = None, + search_query: Annotated[ + str | None, + "The search query to filter security signals. Use this to specify criteria for filtering the results.", # noqa: E501 + ] = None, + sort_order: Annotated[ + str | None, + "Determine the order of security signals: 'timestamp' for ascending, '-timestamp' for descending.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'ListSecurityMonitoringHistsignals'." +]: + """Retrieve a list of security monitoring hist signals. + + This tool calls the Datadog API to list historical security monitoring signals, providing insights into detected security events over time.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/histsignals".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": search_query, + "filter[from]": minimum_timestamp, + "filter[to]": maximum_timestamp_for_signals, + "sort": sort_order, + "page[cursor]": results_page_cursor, + "page[limit]": max_security_signals, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def find_security_alerts( + context: ToolContext, + max_security_signals: Annotated[ + int | None, "Specify the maximum number of security signals to retrieve in the response." + ] = 10, + maximum_timestamp_for_signals: Annotated[ + str | None, "The maximum timestamp for requested security signals, formatted as a string." + ] = None, + minimum_timestamp: Annotated[ + str | None, + "The start timestamp for filtering requested security signals. Use ISO 8601 format.", + ] = None, + pagination_cursor: Annotated[ + str | None, + "String used to fetch the next set of results based on a previous query's cursor.", + ] = None, + search_query_for_security_signals: Annotated[ + str | None, + "Search query to filter and list specific security signals. Use keywords and operators to refine results.", # noqa: E501 + ] = None, + sort_order: Annotated[ + str | None, "The criteria for sorting security signals, either 'timestamp' or '-timestamp'." + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'SearchSecurityMonitoringHistsignals'." +]: + """Retrieve historical security monitoring signals from Datadog. + + This tool is used to search and retrieve historical security monitoring signals in Datadog. Ideal for extracting past security incident data and analysis.""" # noqa: E501 + request_data = remove_none_values({ + "filter": { + "from": minimum_timestamp, + "query": search_query_for_security_signals, + "to": maximum_timestamp_for_signals, + }, + "page": {"cursor": pagination_cursor, "limit": max_security_signals}, + "sort": sort_order, + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/histsignals/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_hist_signal_details( + context: ToolContext, + historical_signal_id: Annotated[ + str, "The ID of the historical signal to retrieve details for." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSecurityMonitoringHistsignal'."]: + """Retrieve details of a specific hist signal. + + This tool fetches detailed information about a specified hist signal from Datadog's SIEM (Security Information and Event Management) service. It should be used when you need to access detailed data on a particular historical signal for security monitoring purposes.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/histsignals/{histsignal_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + histsignal_id=historical_signal_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_historical_jobs( + context: ToolContext, + filter_query: Annotated[ + str | None, + "A query string to filter items in the list of historical jobs. Use to specify criteria for narrowing down the results.", # noqa: E501 + ] = None, + page_number: Annotated[int | None, "The specific page number to return from the results."] = 0, + page_size: Annotated[ + int | None, "Specifies the number of results per page, with a maximum of 100." + ] = 10, + sort_order: Annotated[ + str | None, + "Specifies the order in which jobs are returned, such as ascending or descending.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListHistoricalJobs'."]: + """Retrieve a list of historical SIEM detection jobs from Datadog. + + Use this tool to get a list of historical jobs related to SIEM detections in Datadog. This is useful for analyzing past job executions and reviewing detection history.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/jobs".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_order, + "filter[query]": filter_query, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def run_historical_detection_job( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'RunHistoricalJob'."]: + """Initiate a historical detection job in Datadog. + + Use this tool to start a historical detection job via Datadog's SIEM API. It is called when there's a need to analyze past data using historical detections. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "RUNHISTORICALDETECTIONJOB_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["RUNHISTORICALDETECTIONJOB_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["RUNHISTORICALDETECTIONJOB_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/jobs".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["RUNHISTORICALDETECTIONJOB_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def convert_job_result_to_signal( + context: ToolContext, + job_result_ids: Annotated[ + list[str] | None, "Array of job result IDs to convert into signals." + ] = None, + notifications_sent: Annotated[ + list[str] | None, "List of notification types sent related to the signal." + ] = None, + payload_type: Annotated[ + str | None, "Type of payload, must be 'historicalDetectionsJobResultSignalConversion'." + ] = None, + request_id: Annotated[ + str | None, + "A unique identifier for the request that is used to convert the job result to a signal.", + ] = None, + signal_message: Annotated[ + str | None, "Message content of the generated signals to be converted." + ] = None, + signal_severity: Annotated[ + str | None, + "Severity level of the security signal. Accepts values: info, low, medium, high, critical.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ConvertJobResultToSignal'."]: + """Convert a job result to a signal for detection purposes. + + Use this tool to transform a job result into a signal, useful for detection and monitoring in Datadog.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "id": request_id, + "jobResultIds": job_result_ids, + "notifications": notifications_sent, + "signalMessage": signal_message, + "signalSeverity": signal_severity, + }, + "type": payload_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/signal_convert".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_historical_detection_job( + context: ToolContext, + job_id: Annotated[str, "The unique identifier for the historical job to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteHistoricalJob'."]: + """Delete an existing historical detection job in Datadog. + + Use this tool to delete a specific historical detection job in Datadog's SIEM. This is helpful when you need to manage or clean up old detection jobs by specifying the job ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), job_id=job_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_historical_job_details( + context: ToolContext, + job_id: Annotated[str, "The unique identifier for the job whose details you want to retrieve."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetHistoricalJob'."]: + """Retrieve details of a specific historical job from Datadog. + + Use this tool to get the details of a specific historical job from Datadog's SIEM historical detections by providing the job ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), job_id=job_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def cancel_historical_job( + context: ToolContext, + job_id: Annotated[ + str, "The unique identifier of the historical job to be canceled in Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CancelHistoricalJob'."]: + """Cancel a historical job in Datadog. + + Use this tool to cancel an ongoing historical job in Datadog, identified by its job ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}/cancel".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), job_id=job_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_historical_security_signals( + context: ToolContext, + job_identifier: Annotated[ + str, + "The unique identifier for the job whose historical security signals you want to retrieve.", + ], + max_security_signals: Annotated[ + int | None, "The maximum number of security signals to retrieve in the response." + ] = 10, + max_timestamp_for_signals: Annotated[ + str | None, "The latest timestamp for the requested security signals." + ] = None, + minimum_timestamp: Annotated[ + str | None, + "The earliest timestamp for retrieving security signals. Format should be ISO 8601 (e.g., '2023-10-01T00:00:00Z').", # noqa: E501 + ] = None, + pagination_cursor: Annotated[ + str | None, "Use the cursor from the previous query to paginate results." + ] = None, + security_signal_search_query: Annotated[ + str | None, "The search query to filter security signals." + ] = None, + signal_sort_order: Annotated[ + str | None, + "Specify the sort order of the security signals, either 'timestamp' for ascending or '-timestamp' for descending.", # noqa: E501 + ] = None, +) -> Annotated[ + dict[str, Any], "Response from the API endpoint 'GetSecurityMonitoringHistsignalsByJobId'." +]: + """Retrieve historical security signals by job ID. + + Use this tool to obtain historical security signals associated with a specific job ID in the Datadog system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}/histsignals".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), job_id=job_identifier + ), + method="GET", + params=remove_none_values({ + "filter[query]": security_signal_search_query, + "filter[from]": minimum_timestamp, + "filter[to]": max_timestamp_for_signals, + "sort": signal_sort_order, + "page[cursor]": pagination_cursor, + "page[limit]": max_security_signals, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_slo_report_job( + context: ToolContext, + from_timestamp_epoch_seconds: Annotated[ + int, + "The starting timestamp for the SLO report in epoch seconds. Specifies when the report should begin.", # noqa: E501 + ], + report_to_timestamp: Annotated[ + int, "The epoch timestamp representing the end time for the SLO report." + ], + slo_query_filter: Annotated[ + str, "The query string to filter SLO results, e.g., 'service:' or 'slo-name'." + ], + report_generation_frequency: Annotated[ + str | None, "The frequency for generating report data. Options: daily, weekly, monthly." + ] = None, + report_timezone: Annotated[ + str | None, + "The timezone to determine the start and end of each interval for the SLO report. It affects how intervals such as weekly start at 12am on Sunday in the specified timezone.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateSLOReportJob'."]: + """Initiate the generation of an SLO report in Datadog. + + Use this tool to start an SLO report job in Datadog. Once created, the job processes asynchronously, and a CSV report becomes available for download. Utilize the returned `report_id` to check status and access the report.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "from_ts": from_timestamp_epoch_seconds, + "interval": report_generation_frequency, + "query": slo_query_filter, + "timezone": report_timezone, + "to_ts": report_to_timestamp, + } + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/slo/report".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def download_slo_report( + context: ToolContext, + report_id: Annotated[str, "The unique identifier for the SLO report job to download."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSLOReport'."]: + """Download a completed SLO report from Datadog. + + Use this tool to download an SLO report from Datadog after the report job has completed. It is recommended to download the report as soon as it becomes available, as reports may not be stored indefinitely.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/slo/report/{report_id}/download".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), report_id=report_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_slo_report_status( + context: ToolContext, + slo_report_id: Annotated[ + str, "The unique identifier of the SLO report job to check its current status." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSLOReportJobStatus'."]: + """Retrieve the status of a specific SLO report job. + + Use this tool to check the current status of a Service Level Objective (SLO) report job by providing the report ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/slo/report/{report_id}/status".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), report_id=slo_report_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_spark_job_recommendations( + context: ToolContext, + spark_job_service_name: Annotated[ + str, "The service name for the Spark job to retrieve recommendations." + ], + spark_job_shard_identifier: Annotated[ + str, + "The shard identifier for a Spark job, differentiating jobs within the same service with distinct resource requirements.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetSPARecommendations'."]: + """Retrieve resource recommendations for a Spark job. + + Use this tool to obtain structured recommendations for Spark job driver and executor resources, based on specified service name and shard identifier.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/spa/recommendations/{service}/{shard}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + shard=spark_job_shard_identifier, + service=spark_job_service_name, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def aggregate_spans_metrics( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AggregateSpans'."]: + """Aggregate spans to compute metrics and timeseries. + + Use this tool to aggregate spans into buckets and compute metrics and timeseries data. This is useful for analyzing performance and trends in systems. Note: Limited to 300 requests per hour. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "AGGREGATESPANSMETRICS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["AGGREGATESPANSMETRICS_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["AGGREGATESPANSMETRICS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/spans/analytics/aggregate".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["AGGREGATESPANSMETRICS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_latest_spans( + context: ToolContext, + max_spans_limit: Annotated[ + int | None, + "The maximum number of spans to return in the response. Specify an integer value to limit the results.", # noqa: E501 + ] = 10, + max_timestamp_for_spans: Annotated[ + str | None, + "Maximum timestamp for requested spans. Use ISO8601, date math, or millisecond timestamps.", + ] = None, + minimum_timestamp: Annotated[ + str | None, + "Minimum timestamp for requested spans. Accepts ISO8601, date math, or timestamps in milliseconds.", # noqa: E501 + ] = None, + pagination_cursor: Annotated[ + str | None, "Cursor for paginating results, provided by the previous query execution." + ] = None, + sort_order_of_spans: Annotated[ + str | None, + "Specify the order of spans in the results. Use 'timestamp' for ascending and '-timestamp' for descending order.", # noqa: E501 + ] = None, + span_search_query: Annotated[ + str | None, + "A search query following the spans syntax to filter the spans you want to retrieve.", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListSpansGet'."]: + """Retrieve the latest spans based on a search query. + + This tool retrieves spans from Datadog that match a specified search query. Use this to see your latest spans. Note that results are paginated, and the endpoint is rate limited to 300 requests per hour.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/spans/events".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[query]": span_search_query, + "filter[from]": minimum_timestamp, + "filter[to]": max_timestamp_for_spans, + "sort": sort_order_of_spans, + "page[cursor]": pagination_cursor, + "page[limit]": max_spans_limit, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_spans( + context: ToolContext, + end_time_filter: Annotated[ + str | None, + "The maximum time for requested spans. Supports ISO8601, date math, or timestamps in milliseconds.", # noqa: E501 + ] = "now", + max_number_of_spans: Annotated[ + int | None, "Maximum number of spans to return in the response. Integer value expected." + ] = 10, + minimum_time_filter: Annotated[ + str | None, + "The minimum time for the requested spans. Supports ISO8601, date math, and timestamps (milliseconds).", # noqa: E501 + ] = "now-15m", + pagination_cursor: Annotated[ + str | None, "A string cursor to fetch the next set of results from the previous query." + ] = None, + resource_type: Annotated[ + str | None, "The type of resource; must be set to 'search_request' for the query." + ] = "search_request", + sort_order_for_spans: Annotated[ + str | None, + "Set the sort order for querying spans. Use 'timestamp' for ascending or '-timestamp' for descending.", # noqa: E501 + ] = None, + span_search_query: Annotated[ + str | None, "The search query string following the span search syntax to filter spans." + ] = "*", + time_offset_seconds: Annotated[ + int | None, "The time offset in seconds to apply to the query for adjusting the time frame." + ] = None, + timezone_option: Annotated[ + str | None, + "Specify the timezone using GMT, UTC, an offset (e.g., UTC+1), or a Timezone Database ID (e.g., America/New_York).", # noqa: E501 + ] = "UTC", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListSpans'."]: + """Fetch spans based on a search query with pagination. + + This tool retrieves spans from Datadog that match a specified search query. Use it to filter and search spans for analysis or monitoring. Note that the endpoint supports paginated results and is subject to rate limits of 300 requests per hour.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "filter": { + "from": minimum_time_filter, + "query": span_search_query, + "to": end_time_filter, + }, + "options": {"timeOffset": time_offset_seconds, "timezone": timezone_option}, + "page": {"cursor": pagination_cursor, "limit": max_number_of_spans}, + "sort": sort_order_for_spans, + }, + "type": resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/spans/events/search".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_on_demand_concurrency_cap( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetOnDemandConcurrencyCap'."]: + """Retrieve the on-demand concurrency cap value from Datadog. + + Use this tool to get the current on-demand concurrency cap configured in Datadog's synthetics settings. This information can help monitor and manage concurrency limits effectively.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/synthetics/settings/on_demand_concurrency_cap".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def set_on_demand_concurrency_cap( + context: ToolContext, + on_demand_concurrency_cap_value: Annotated[ + float | None, "Specify the new value for the on-demand concurrency cap in Datadog." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SetOnDemandConcurrencyCap'."]: + """Update the on-demand concurrency cap setting in Datadog. + + Use this tool to save a new value for the on-demand concurrency cap in the Datadog Synthetics settings. This updates the maximum number of on-demand tests that can run concurrently.""" # noqa: E501 + request_data = remove_none_values({ + "on_demand_concurrency_cap": on_demand_concurrency_cap_value + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/synthetics/settings/on_demand_concurrency_cap".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_tag_pipeline_rulesets( + context: ToolContext, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListTagPipelinesRulesets'."]: + """Retrieve all tag pipeline rulesets for the organization. + + This tool retrieves a comprehensive list of all tag pipeline rulesets associated with the organization. It should be called when you need to examine or manage these rulesets.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/tags/enrichment".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_tag_pipeline_ruleset( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateTagPipelinesRuleset'."]: + """Create a tag pipeline ruleset with specified rules. + + This tool creates a new tag pipeline ruleset using the specified rules and configurations in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATETAGPIPELINERULESET_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["CREATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/tags/enrichment".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def reorder_tag_pipeline_rulesets( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ReorderTagPipelinesRulesets'."]: + """Change the execution order of tag pipeline rulesets. + + Use this tool to modify the order in which tag pipeline rulesets are executed in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "REORDERTAGPIPELINERULESETS_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["REORDERTAGPIPELINERULESETS_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["REORDERTAGPIPELINERULESETS_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/tags/enrichment/reorder".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["REORDERTAGPIPELINERULESETS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def validate_tag_pipeline_query( + context: ToolContext, + query_attributes: Annotated[ + str | None, + "The tag pipeline query to validate. Ensure it is correctly structured and free of syntax errors.", # noqa: E501 + ] = None, + query_request_data_id: Annotated[ + str | None, "The unique identifier for the RulesValidateQueryRequestData." + ] = None, + query_resource_type: Annotated[ + str | None, + "Specify the type of resource for query validation, always use 'validate_query'.", + ] = "validate_query", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ValidateQuery'."]: + """Validate the syntax and structure of a tag pipeline query. + + Use this tool to ensure that a tag pipeline query is correctly structured and free of syntax errors.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"Query": query_attributes}, + "id": query_request_data_id, + "type": query_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/tags/enrichment/validate-query".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_tag_pipeline_ruleset( + context: ToolContext, + ruleset_id: Annotated[str, "The unique identifier for the tag pipeline ruleset to be deleted."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteTagPipelinesRuleset'."]: + """Delete an existing tag pipeline ruleset by ID. + + Use this tool to delete a specific tag pipeline ruleset in Datadog by providing its ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/tags/enrichment/{ruleset_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), ruleset_id=ruleset_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_tag_pipeline_ruleset( + context: ToolContext, + ruleset_identifier: Annotated[ + str, "The unique identifier for the tag pipeline ruleset to retrieve." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTagPipelinesRuleset'."]: + """Retrieve a specific tag pipeline ruleset by its ID. + + Use this tool to get detailed information about a specific tag pipeline ruleset within Datadog 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="https://{datadog_base_url}/api/v2/tags/enrichment/{ruleset_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), ruleset_id=ruleset_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_tag_pipeline_ruleset( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + ruleset_identifier: Annotated[ + str | None, + "A unique string identifier for the tag pipeline ruleset 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 'UpdateTagPipelinesRuleset'."]: + """Update an existing tag pipeline ruleset with new rules. + + Use this tool to modify the rules and configuration of an existing tag pipeline ruleset in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "UPDATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not ruleset_identifier: + missing_params.append(("ruleset_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATETAGPIPELINERULESET_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["UPDATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/tags/enrichment/{ruleset_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), ruleset_id=ruleset_identifier + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_teams( + context: ToolContext, + fields_to_fetch: Annotated[ + list[str] | None, "List of fields to retrieve for each team." + ] = None, + include_only_user_teams: Annotated[ + bool | None, "When true, only teams the current user belongs to are returned." + ] = None, + include_related_resources: Annotated[ + list[str] | None, + "Specify related resources to include. Options: `team_links`, `user_team_permissions`.", + ] = None, + page_number: Annotated[ + int | None, "The specific page number to return for the list of teams." + ] = 0, + page_size: Annotated[ + int | None, "Specify the number of teams to return per page, up to a maximum of 100." + ] = 10, + search_query_for_teams: Annotated[ + str | None, "Search for teams by name, handle, or team member email." + ] = None, + sort_order: Annotated[ + str | None, + "Determines the order of the returned teams. Options: 'name', '-name', 'user_count', '-user_count'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListTeams'."]: + """Retrieve all teams with optional filters. + + Fetches a list of all teams, allowing optional filters by keyword or user.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[number]": page_number, + "page[size]": page_size, + "sort": sort_order, + "include": include_related_resources, + "filter[keyword]": search_query_for_teams, + "filter[me]": include_only_user_teams, + "fields[team]": fields_to_fetch, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_new_team( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateTeam'."]: + """Create a new team and add specified members. + + This tool creates a new team and adds specified user IDs to it. Use it when you need to establish a team and assign users to it in Datadog. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["CREATENEWTEAM_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["CREATENEWTEAM_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["CREATENEWTEAM_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/team".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATENEWTEAM_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def sync_datadog_teams_with_github( + context: ToolContext, + source_platform: Annotated[ + str, + 'Specify the external source platform for team synchronization. Only "github" is supported.', # noqa: E501 + ], + synchronization_type: Annotated[ + str, + 'Type of synchronization operation. Only "link" is supported to match existing teams by name.', # noqa: E501 + ], + team_sync_bulk_type: Annotated[ + str, "Specifies the type for bulk team synchronization. Use 'team_sync_bulk'." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SyncTeams'."]: + """Link existing Datadog teams with GitHub teams by name matching. + + Synchronizes Datadog teams with GitHub teams by name, evaluating all current teams without making modifications. Requires a connected GitHub organization and appropriate permissions.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"source": source_platform, "type": synchronization_type}, + "type": team_sync_bulk_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/sync".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_all_member_teams( + context: ToolContext, + super_team_identifier: Annotated[ + str, "The unique identifier for the super team whose member teams you want to retrieve." + ], + fields_to_fetch: Annotated[ + list[str] | None, + "A list of field names to be fetched for each team. Specify the fields you need details on.", # noqa: E501 + ] = None, + page_number: Annotated[int | None, "Specific page number to return in the list of teams."] = 0, + page_size: Annotated[int | None, "Size for a given page. Must be an integer up to 100."] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListMemberTeams'."]: + """Retrieve all member teams for a super team. + + Use this tool to get a comprehensive list of all member teams associated with a specific super team in Datadog. Call this tool when you need information on team memberships within a specified structure.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{super_team_id}/member_teams".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + super_team_id=super_team_identifier, + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "fields[team]": fields_to_fetch, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_member_team_to_super_team( + context: ToolContext, + member_team_identifier: Annotated[ + str, "The unique identifier of the member team to be added to the super team." + ], + super_team_identifier: Annotated[ + str, + "The ID of the super team to which the member team will be added. It is a string value.", + ], + member_team_type: Annotated[ + str, "Specifies the type of member team to be added. Must be 'member_teams'." + ] = "member_teams", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'AddMemberTeam'."]: + """Add a member team to a super team. + + Use this tool to add a specified team as a member of an existing super team by providing the super team's ID.""" # noqa: E501 + request_data = remove_none_values({ + "data": {"id": member_team_identifier, "type": member_team_type} + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{super_team_id}/member_teams".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + super_team_id=super_team_identifier, + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_team_member( + context: ToolContext, + member_team_identifier: Annotated[ + str, "The unique ID of the member team to be removed from the super team." + ], + super_team_id: Annotated[ + str, "The unique identifier for the super team from which a member team will be removed." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'RemoveMemberTeam'."]: + """Removes a member team from a super team. + + Use this tool to remove a specific member team from a super team based on the provided member team ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{super_team_id}/member_teams/{member_team_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + super_team_id=super_team_id, + member_team_id=member_team_identifier, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_team( + context: ToolContext, + team_identifier: Annotated[str, "The unique identifier for the team to be deleted in Datadog."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteTeam'."]: + """Remove a team using its ID in Datadog. + + This tool should be called to permanently delete a team in Datadog by specifying the team's unique ID. Use this when a team is no longer needed and should be removed 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="https://{datadog_base_url}/api/v2/team/{team_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_single_team_info( + context: ToolContext, + team_id: Annotated[ + str, "The unique identifier for the team. Provide this to retrieve specific team details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTeam'."]: + """Retrieve details of a team using its ID. + + Use this tool to obtain details about a specific team by providing the team's ID. Ideal for applications needing team-specific information.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_team_info( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + team_identifier: Annotated[ + str | None, + "The unique identifier for the team to be updated. Must be a valid string representing the team's ID in Datadog. 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 'UpdateTeam'."]: + """Update and modify a team's configuration in Datadog. + + Use this tool to update a team in Datadog by modifying its configuration using the team's ID. You can adjust team links and other settings 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 parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not team_identifier: + missing_params.append(("team_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) + + # Parse JSON + try: + request_data = json.loads(request_body) + except json.JSONDecodeError as e: + raise RetryableToolError( + message=f"Invalid JSON in request body: {e!s}", + developer_message=f"JSON parsing failed: {e!s}", + additional_prompt_content=( + f"The request body contains invalid JSON. Error: {e!s}\n\n" + "Please provide a valid JSON string that matches the schema " + "below, then call this tool again in execute mode.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/team/{team_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_identifier + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATETEAMINFO_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_all_team_links( + context: ToolContext, + team_identifier: Annotated[ + str, "The unique identifier for the team whose links are to be retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTeamLinks'."]: + """Retrieve all links for a specific team. + + Use this tool to obtain all the links associated with a given team in Datadog. It is helpful when you need to gather all relevant links for team collaboration or resource management.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/links".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_team_link( + context: ToolContext, + link_label: Annotated[ + str, + "The label for the link to be added to the team. This should be a descriptive text for the link.", # noqa: E501 + ], + link_url: Annotated[ + str, "The URL to be added as a link for the team. This should be a valid web address." + ], + target_team_id: Annotated[ + str, "The unique identifier for the team to which the link will be added." + ], + link_position: Annotated[ + int | None, "The position of the link in the team's list, used for sorting links." + ] = None, + team_id_for_link: Annotated[ + str | None, + "ID of the team the link is associated with. This should be a unique identifier for the specific team to which you want to add the link.", # noqa: E501 + ] = None, + team_link_type: Annotated[ + str, "Specify the type of team link. Must be 'team_links'." + ] = "team_links", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateTeamLink'."]: + """Add a new link to a Datadog team. + + Use this tool to add a new link to a specific team's page in Datadog. Suitable for enhancing team resources or documentation by linking additional references.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "label": link_label, + "position": link_position, + "team_id": team_id_for_link, + "url": link_url, + }, + "type": team_link_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/links".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=target_team_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_team_link( + context: ToolContext, + link_identifier: Annotated[ + str, "The unique identifier of the link to be removed from the team." + ], + team_id: Annotated[ + str, + "The unique identifier of the team from which the link will be removed. Required for identifying the specific team.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteTeamLink'."]: + """Remove a link from a team. + + Use this tool to remove a specific link from a team by providing the team and link identifiers. Useful for managing team associations and cleaning up unnecessary links.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/links/{link_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + team_id=team_id, + link_id=link_identifier, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_team_link( + context: ToolContext, + link_id: Annotated[ + str, + "The unique identifier for the specific link you want to retrieve for a team in Datadog.", + ], + team_id: Annotated[str, "The unique identifier for the team whose link you want to retrieve."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTeamLink'."]: + """Retrieve a specific link for a team. + + Use this tool to get detailed information about a specific link associated with a team in Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/links/{link_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + team_id=team_id, + link_id=link_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_team_link( + context: ToolContext, + link_identifier: Annotated[str, "The unique identifier for the link you want to update."], + link_label: Annotated[ + str, + "Specify the label for the link. This is used to identify or name the link within the team's list of links.", # noqa: E501 + ], + link_url: Annotated[str, "The URL for the team link. Provide a valid, well-formed URL."], + team_identifier: Annotated[ + str, "The unique string identifier for the team related to the link." + ], + link_position: Annotated[ + int | None, "The position of the link in the list, used to sort links for the team." + ] = None, + team_id_associated_with_link: Annotated[ + str | None, "The ID of the team associated with the link to be updated." + ] = None, + team_link_type: Annotated[ + str, "Specifies the type of team link. Must be 'team_links'." + ] = "team_links", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateTeamLink'."]: + """Updates a team link in Datadog. + + Use this tool to update the details of a specific team link within the Datadog service. It's useful for modifying or adjusting link information associated with a team.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "label": link_label, + "position": link_position, + "team_id": team_id_associated_with_link, + "url": link_url, + }, + "type": team_link_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/links/{link_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + team_id=team_identifier, + link_id=link_identifier, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_team_members( + context: ToolContext, + team_id: Annotated[ + str, "The unique identifier for the team whose members are to be retrieved." + ], + page_number: Annotated[ + int | None, "The specific page number to retrieve from the list of team members." + ] = 0, + page_size: Annotated[ + int | None, "Specify the number of team members to return per page. Maximum is 100." + ] = 10, + search_query: Annotated[ + str | None, "Search query for filtering members by user email or name." + ] = None, + sort_order: Annotated[ + str | None, + "Specify the order of returned team memberships. Options include 'manager_name', '-manager_name', 'name', '-name', 'handle', '-handle', 'email', '-email'.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTeamMemberships'."]: + """Retrieve a list of team members. + + Retrieve a paginated list of members for a specified team using their team ID.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/memberships".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_id + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": sort_order, + "filter[keyword]": search_query, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def add_user_to_team( + context: ToolContext, + team_id: Annotated[ + str, + "The ID of the team to which the user will be added. This is required to specify the target team.", # noqa: E501 + ], + provisioned_user_or_service_account_id: Annotated[ + str | None, + "UUID of the User or Service Account who provisioned the team membership, or null if done via SAML mapping.", # noqa: E501 + ] = None, + provisioning_mechanism: Annotated[ + str | None, + 'Mechanism responsible for provisioning the team relationship. Possible values: null for user-added, "service_account" for service account, "saml_mapping" for SAML mapping.', # noqa: E501 + ] = None, + team_identifier: Annotated[ + str | None, "The unique ID of the team to which the user will be added." + ] = None, + team_membership_type: Annotated[ + str, "Specify the type of team membership. Use 'team_memberships'." + ] = "team_memberships", + user_id: Annotated[str | None, "The ID of the user to be added to the team in Datadog."] = None, + user_role_in_team: Annotated[ + str | None, + "Specifies the user's role within the team. Currently, only 'admin' is supported as a role.", # noqa: E501 + ] = None, + user_team_type: Annotated[ + str | None, "Specifies the type for the team relationship, fixed as 'team'." + ] = "team", + user_team_user_type: Annotated[ + str | None, "Set to 'users' as the type for the user in the team." + ] = "users", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateTeamMembership'."]: + """Add a user to a team in Datadog. + + Use this tool to add a specified user to an existing team within Datadog by providing the team ID.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "provisioned_by": provisioning_mechanism, + "provisioned_by_id": provisioned_user_or_service_account_id, + "role": user_role_in_team, + }, + "relationships": { + "team": {"data": {"id": team_identifier, "type": user_team_type}}, + "user": {"data": {"id": user_id, "type": user_team_user_type}}, + }, + "type": team_membership_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/memberships".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_id + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def remove_user_from_team( + context: ToolContext, + team_identifier: Annotated[ + str, + "A string representing the unique identifier of the team from which the user will be removed.", # noqa: E501 + ], + user_identifier_for_removal: Annotated[ + str, "The unique identifier of the user to be removed from the team." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteTeamMembership'."]: + """Remove a user from a specified team. + + Use this tool when you need to remove a user's membership from a specific team in Datadog.""" + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/memberships/{user_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + team_id=team_identifier, + user_id=user_identifier_for_removal, + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_user_team_membership( + context: ToolContext, + team_id: Annotated[ + str, "The unique identifier of the team to update the user's membership attributes." + ], + user_identifier: Annotated[ + str, + "The unique identifier for the user whose membership is being updated. This is required to specify which user's attributes will be changed.", # noqa: E501 + ], + provisioning_identifier: Annotated[ + str | None, + "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping.", # noqa: E501 + ] = None, + provisioning_mechanism: Annotated[ + str | None, + 'Specifies how the team relationship was provisioned. Options: null, "service_account", "saml_mapping".', # noqa: E501 + ] = None, + team_membership_type: Annotated[ + str, "Specify the type of team membership. The value must be 'team_memberships'." + ] = "team_memberships", + user_role_in_team: Annotated[ + str | None, "Specify the user's role within the team. Accepts 'admin'." + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateTeamMembership'."]: + """Update a user's membership attributes on a team. + + Use this tool to update specific membership attributes for a user within a team's membership in Datadog. This can be useful when user roles or permissions need modification.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "provisioned_by": provisioning_mechanism, + "provisioned_by_id": provisioning_identifier, + "role": user_role_in_team, + }, + "type": team_membership_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/memberships/{user_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + team_id=team_id, + user_id=user_identifier, + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_team_permission_settings( + context: ToolContext, + team_identifier: Annotated[ + str, "The unique identifier for the team whose permission settings are to be retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetTeamPermissionSettings'."]: + """Retrieve permission settings for a specific team. + + Call this tool to obtain all permission settings associated with a specific team in Datadog. Ideal for checking or managing team permissions.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/permission-settings".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), team_id=team_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_team_permission( + context: ToolContext, + action_to_update: Annotated[ + str, + "The specific action to update in the team's permission setting, specifying what can be performed.", # noqa: E501 + ], + team_identifier: Annotated[ + str, "The unique identifier of the team for which the permission setting will be updated." + ], + allowed_user_type_for_action: Annotated[ + str | None, + "Specify the user type permitted to perform the action. Options: admins, members, organization, user_access_manage, teams_manage.", # noqa: E501 + ] = None, + team_permission_setting_type: Annotated[ + str, "Specify the team permission setting type. Required value: 'team_permission_settings'." + ] = "team_permission_settings", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateTeamPermissionSetting'."]: + """Update a team's permission setting in Datadog. + + Use this tool to update the permission setting for a specific team in Datadog, allowing for customized access control adjustments.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"value": allowed_user_type_for_action}, + "type": team_permission_setting_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/team/{team_id}/permission-settings/{action}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + team_id=team_identifier, + action=action_to_update, + ), + method="PUT", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def search_flaky_tests( + context: ToolContext, + filter_query: Annotated[ + str | None, + "Search query for filtering flaky tests using log syntax. Keys include 'flaky_test_state', 'flaky_test_category', '@test.name', '@test.suite', '@test.module', '@test.service', '@git.repository.id_v2', '@git.branch', '@test.codeowners', 'env'.", # noqa: E501 + ] = "*", + maximum_flaky_tests_limit: Annotated[ + int | None, "Specify the maximum number of flaky tests to include in the response." + ] = 10, + pagination_cursor: Annotated[ + str | None, "A cursor from the previous request to fetch the following results." + ] = None, + request_data_type: Annotated[ + str | None, + "Defines the data structure type for the Flaky Tests Search request. Use 'search_flaky_tests_request'.", # noqa: E501 + ] = None, + sort_flaky_tests: Annotated[ + str | None, + "Sort flaky test results by specified criteria: FQN, first or last flaked, failure rate, etc. Use prefixed '-' for descending order.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SearchFlakyTests'."]: + """Retrieve a list of flaky tests with pagination support. + + Use this tool to fetch information about flaky tests from the Flaky Test Management system. Useful for identifying tests that frequently fail or are unreliable.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": { + "filter": {"query": filter_query}, + "page": {"cursor": pagination_cursor, "limit": maximum_flaky_tests_limit}, + "sort": sort_flaky_tests, + }, + "type": request_data_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/test/flaky-test-management/tests".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_billing_dimension_mapping( + context: ToolContext, + billing_dimension_view: Annotated[ + str | None, + "Specify 'active' for current contract mappings or 'all' for all mappings. Defaults to 'active'.", # noqa: E501 + ] = "active", + billing_month: Annotated[ + str | None, + "Date in ISO-8601 format (UTC) for the starting month of mappings. Defaults to the current month.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetBillingDimensionMapping'."]: + """Retrieve the mapping of billing dimensions to API keys. + + Use this tool to obtain the mapping of billing dimensions to corresponding keys for usage metering API endpoints. This information is updated monthly and accessible only to parent-level organizations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/usage/billing_dimension_mapping".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[month]": billing_month, + "filter[view]": billing_dimension_view, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_estimated_cost_datadog( + context: ToolContext, + cost_end_month: Annotated[ + str | None, + "Specify the ending month for the estimated cost in ISO-8601 format, UTC (`[YYYY-MM]`).", + ] = None, + cost_view_level: Annotated[ + str | None, + "Specify if cost is broken down at the parent-org level (summary) or sub-org level (sub-org). Defaults to summary.", # noqa: E501 + ] = None, + end_date: Annotated[ + str | None, + "Specify the end date for cost estimation in ISO-8601 format (YYYY-MM-DD). It marks the last day of the period for which you need cost data.", # noqa: E501 + ] = None, + include_connected_accounts: Annotated[ + bool | None, + "Include accounts connected as partner customers in Datadog's partner network program. Defaults to `false`.", # noqa: E501 + ] = False, + initial_cost_month: Annotated[ + str | None, + "ISO-8601 month format `[YYYY-MM]`, specifying the start month for cost data. Cannot be older than two months. Provide `end_month` for month-over-month cost.", # noqa: E501 + ] = None, + start_date_for_cost: Annotated[ + str | None, + "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost beginning this day. Either specify `start_date_for_cost` or `start_month_for_cost`, but not both. The date cannot be more than two months in the past. Use with `end_date_for_cost` for cumulative day-over-day cost.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetEstimatedCostByOrg'."]: + """Retrieve estimated cost data for multi-org Datadog accounts. + + This tool retrieves the estimated cost for the current and previous month across multi-org and single root-org Datadog accounts. The data is only available for parent-level organizations and is delayed by up to 72 hours.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/usage/estimated_cost".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "view": cost_view_level, + "start_month": initial_cost_month, + "end_month": cost_end_month, + "start_date": start_date_for_cost, + "end_date": end_date, + "include_connected_accounts": include_connected_accounts, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_historical_cost_by_org( + context: ToolContext, + start_month_utc: Annotated[ + str, + "ISO-8601 date format `[YYYY-MM]`, UTC timezone, to specify the start month for cost calculation.", # noqa: E501 + ], + cost_view_level: Annotated[ + str | None, + "Specify cost breakdown level: 'summary' for parent-org or 'sub-org' for sub-org level. Defaults to 'summary'.", # noqa: E501 + ] = None, + end_month: Annotated[ + str | None, + "Datetime in ISO-8601 format, UTC, precise to month `[YYYY-MM]` indicating the ending month for cost data.", # noqa: E501 + ] = None, + include_connected_accounts: Annotated[ + bool | None, + "Include accounts connected as partner customers in Datadog's network. Defaults to false.", + ] = False, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetHistoricalCostByOrg'."]: + """Retrieve historical cost data across different organizations. + + This tool retrieves historical cost data for multi-org and single root-org accounts from Datadog. The cost data for a given month becomes available by the 16th of the following month. Accessible only for parent-level organizations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/usage/historical_cost".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "start_month": start_month_utc, + "view": cost_view_level, + "end_month": end_month, + "include_connected_accounts": include_connected_accounts, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_hourly_usage_by_product_family( + context: ToolContext, + product_families_to_retrieve: Annotated[ + str, + "Comma-separated list of product families to retrieve usage data for. Available options include all, analyzed_logs, application_security, etc. Note: audit_logs is deprecated.", # noqa: E501 + ], + start_timestamp: Annotated[ + str, + "Datetime in ISO-8601 format, UTC, precise to hour. Specify the start of usage collection, e.g., '2023-10-05T14'.", # noqa: E501 + ], + end_timestamp: Annotated[ + str | None, + "Datetime in ISO-8601 format (UTC) for usage ending before this hour. Format: [YYYY-MM-DDThh].", # noqa: E501 + ] = None, + include_connected_accounts: Annotated[ + bool | None, + "Include accounts connected as partner customers in the response. Defaults to false.", + ] = False, + include_descendants_usage: Annotated[ + bool | None, + "Include child organization usage in the response. Set to true to include, false to exclude.", # noqa: E501 + ] = False, + include_usage_breakdown: Annotated[ + bool | None, + "Boolean to include breakdown of usage by subcategories for product family logs. Defaults to false.", # noqa: E501 + ] = False, + maximum_results_limit: Annotated[ + int | None, + "Set the maximum number of results to return per page, between 1 and 500. Defaults to 500.", + ] = 500, + next_record_id: Annotated[ + str | None, + "ID to continue listing results from the last query. Use the ID from previous queries to paginate through results.", # noqa: E501 + ] = None, + product_family_versions: Annotated[ + str | None, + "Comma-separated list of product family versions in the format `product_family:version`. Defaults to latest if not specified.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetHourlyUsage'."]: + """Fetch hourly usage data by product family from Datadog. + + Use this tool to retrieve detailed hourly usage metrics categorized by product family from Datadog. Ideal for monitoring and analysis applications that require precise usage insights.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/usage/hourly_usage".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "filter[timestamp][start]": start_timestamp, + "filter[timestamp][end]": end_timestamp, + "filter[product_families]": product_families_to_retrieve, + "filter[include_descendants]": include_descendants_usage, + "filter[include_connected_accounts]": include_connected_accounts, + "filter[include_breakdown]": include_usage_breakdown, + "filter[versions]": product_family_versions, + "page[limit]": maximum_results_limit, + "page[next_record_id]": next_record_id, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_projected_cost( + context: ToolContext, + cost_view_level: Annotated[ + str | None, + "Specify cost breakdown level: `summary` for parent-org or `sub-org` for sub-org level. Defaults to `summary`.", # noqa: E501 + ] = None, + include_connected_accounts: Annotated[ + bool | None, + "Include accounts connected as partner customers in the Datadog partner network. Defaults to `false`.", # noqa: E501 + ] = False, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetProjectedCost'."]: + """Retrieve projected cost for multi-org and single root-org accounts. + + This tool fetches projected cost data, available for the current month, for multi-org and single root-org accounts, becoming accessible around the 12th of the month. It's used for parent-level organizations.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/usage/projected_cost".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "view": cost_view_level, + "include_connected_accounts": include_connected_accounts, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def send_invitations( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'SendInvitations'."]: + """Invite users to join the organization via email. + + This tool sends invitation emails to specified users, asking them to join the organization. It should be used when you need to extend an invite to new members through email. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["SENDINVITATIONS_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["SENDINVITATIONS_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["SENDINVITATIONS_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/user_invitations".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["SENDINVITATIONS_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_user_invitation( + context: ToolContext, + user_invitation_uuid: Annotated[ + str, "The unique UUID of the user invitation required to retrieve its details." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetInvitation'."]: + """Retrieve a user invitation using its UUID. + + Use this tool to obtain details of a specific user invitation from Datadog by providing the unique identifier (UUID).""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/user_invitations/{user_invitation_uuid}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + user_invitation_uuid=user_invitation_uuid, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_all_organization_users( + context: ToolContext, + order_users_by: Annotated[ + str | None, + "Specify the user attribute to order results by. Options include `name`, `modified_at`, and `user_count`. Use a negative sign for descending order, e.g., `-name`.", # noqa: E501 + ] = "name", + page_number: Annotated[ + int | None, "The specific page number of users to return. Use for pagination." + ] = 0, + page_size: Annotated[ + int | None, + "Specifies the number of users to be returned in a single page. The maximum value allowed is 100.", # noqa: E501 + ] = 10, + sort_direction: Annotated[ + str | None, + "Direction of sort for user listing. Options: 'asc' for ascending, 'desc' for descending.", + ] = "desc", + user_filter_string: Annotated[ + str | None, "String to filter users by. Defaults to no filtering if blank or omitted." + ] = None, + user_status_filter: Annotated[ + str | None, + "Filter users by status. Comma separated values: `Active`, `Pending`, `Disabled`. Defaults to no filtering.", # noqa: E501 + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListUsers'."]: + """Retrieve all users in the organization including inactive ones. + + Use this tool to get a complete list of users within the organization, covering active, deactivated, and unverified accounts.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/users".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="GET", + params=remove_none_values({ + "page[size]": page_size, + "page[number]": page_number, + "sort": order_users_by, + "sort_dir": sort_direction, + "filter": user_filter_string, + "filter[status]": user_status_filter, + }), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_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", + ], + 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 'CreateUser'."]: + """Create a user for your organization in Datadog. + + This tool allows you to create a new user for your organization in Datadog. Use it when you need to add a team member to your Datadog account. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # 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. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["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="https://{datadog_base_url}/api/v2/users".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEORGANIZATIONUSER_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def disable_user( + context: ToolContext, + user_identifier: Annotated[str, "The unique identifier of the user to be disabled."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DisableUser'."]: + """Disable a specific user in the system. + + This tool disables a user account and should be used by administrator users to manage user access. It indicates whether the operation was successful or not.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/users/{user_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), user_id=user_identifier + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_user_details( + context: ToolContext, + user_id: Annotated[ + str, "The unique identifier for the user whose details are being retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetUser'."]: + """Retrieve details of a specific user by their user ID. + + Use this tool to access detailed information about a user in your organization by specifying their unique user ID.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/users/{user_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), user_id=user_id + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_datadog_user( + context: ToolContext, + user_id: Annotated[str, "The unique identifier for the user to be updated in Datadog."], + user_identifier: Annotated[str, "The unique ID of the user to be updated in Datadog."], + disable_user: Annotated[ + bool | None, "Boolean value to set if the user is disabled (true) or enabled (false)." + ] = None, + user_email: Annotated[ + str | None, "The email address of the user to be updated in Datadog." + ] = None, + user_name: Annotated[str | None, "The name of the user to be updated in Datadog."] = None, + user_resource_type: Annotated[ + str, "Specifies the resource type for the user. Must be set to 'users'." + ] = "users", +) -> Annotated[dict[str, Any], "Response from the API endpoint 'UpdateUser'."]: + """Update a user's information in Datadog. + + Use this tool to edit the details of a user in Datadog. It requires an admin user's application key. Ideal for managing user access or updating user profiles as needed.""" # noqa: E501 + request_data = remove_none_values({ + "data": { + "attributes": {"disabled": disable_user, "email": user_email, "name": user_name}, + "id": user_identifier, + "type": user_resource_type, + } + }) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/users/{user_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), user_id=user_id + ), + method="PATCH", + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_user_organizations( + context: ToolContext, + user_identifier: Annotated[ + str, "The unique ID of the user whose organizations and information are to be retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListUserOrganizations'."]: + """Retrieve a user's organizations and information. + + Use this tool to get information about a specific user and list all the organizations they have joined. Useful for understanding user affiliations within Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/users/{user_id}/orgs".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), user_id=user_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_user_permissions( + context: ToolContext, + user_identifier: Annotated[ + str, "The unique identifier for the Datadog user whose permissions you want to retrieve." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListUserPermissions'."]: + """Retrieve a user's permissions from Datadog. + + This tool fetches the permissions assigned to a user based on their roles in Datadog. It should be called when you need to know the specific access rights a user has.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/users/{user_id}/permissions".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), user_id=user_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_user_memberships( + context: ToolContext, + user_uuid: Annotated[ + str, "The unique identifier for the user whose memberships are to be retrieved." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetUserMemberships'."]: + """Retrieve a user's memberships from Datadog. + + This tool fetches a list of group memberships for a specified user using their UUID in Datadog's system.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/users/{user_uuid}/memberships".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), user_uuid=user_uuid + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def create_datadog_workflow( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + request_body: Annotated[ + str | None, + "Stringified JSON representing the request body. Required when " + "mode is 'execute', ignored when mode is 'get_request_schema'", + ] = None, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CreateWorkflow'."]: + """Creates a new workflow in Datadog and returns its ID. + + This tool is used to create a new workflow in Datadog, returning the workflow ID. It requires having a registered application key or configured permissions in the UI. This can be useful for automating processes and managing workflows effectively within the Datadog platform. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS[ + "CREATEDATADOGWORKFLOW_REQUEST_BODY_SCHEMA" + ], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["CREATEDATADOGWORKFLOW_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["CREATEDATADOGWORKFLOW_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/workflows".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL") + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["CREATEDATADOGWORKFLOW_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def delete_workflow( + context: ToolContext, + workflow_id: Annotated[ + str, + "The ID of the workflow to be deleted. Ensure it is a valid and existing workflow ID in Datadog.", # noqa: E501 + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'DeleteWorkflow'."]: + """Delete a specified workflow by its ID. + + Use this tool to delete an existing workflow by providing the workflow ID. Ensure you have the necessary permissions or a registered application key from Datadog before calling this tool.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/workflows/{workflow_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), workflow_id=workflow_id + ), + method="DELETE", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_workflow_by_id( + context: ToolContext, + workflow_identifier: Annotated[ + str, "The unique ID of the workflow to retrieve details for within Datadog." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetWorkflow'."]: + """Retrieve workflow details using a unique ID. + + Use this tool to get detailed information about a specific workflow by providing its unique ID. This is useful for tracking and managing workflows within Datadog.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/workflows/{workflow_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), workflow_id=workflow_identifier + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def update_workflow_by_id( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + workflow_identifier: Annotated[ + str | None, + "The unique identifier for the workflow you wish to update in Datadog. 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 'UpdateWorkflow'."]: + """Update a specific workflow by its ID. + + Use this tool to update the details of a workflow in Datadog by providing its ID. Ensure required permissions via a registered application key or configure them in the UI. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["UPDATEWORKFLOWBYID_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not workflow_identifier: + missing_params.append(("workflow_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps( + REQUEST_BODY_SCHEMAS["UPDATEWORKFLOWBYID_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["UPDATEWORKFLOWBYID_REQUEST_BODY_SCHEMA"], indent=2 + ) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/workflows/{workflow_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), workflow_id=workflow_identifier + ), + method="PATCH", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["UPDATEWORKFLOWBYID_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def list_workflow_instances( + context: ToolContext, + workflow_id: Annotated[str, "The ID of the workflow to retrieve instances for."], + page_number: Annotated[ + int | None, "The specific page number to return when listing workflow instances." + ] = 0, + page_size: Annotated[ + int | None, "Size for a given page. Must be an integer with a maximum value of 100." + ] = 10, +) -> Annotated[dict[str, Any], "Response from the API endpoint 'ListWorkflowInstances'."]: + """Retrieve all instances of a specific workflow from Datadog. + + Use this tool to get a list of all instances for a specified workflow within Datadog. Ensure you have a registered application key or the necessary permissions configured in the UI.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), workflow_id=workflow_id + ), + method="GET", + params=remove_none_values({"page[size]": page_size, "page[number]": page_number}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def execute_workflow( + context: ToolContext, + mode: Annotated[ + ToolMode, + "Operation mode: 'get_request_schema' returns the OpenAPI spec " + "for the request body, 'execute' performs the actual operation", + ], + workflow_identifier: Annotated[ + str | None, + "The unique ID of the Datadog workflow to be executed. 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 'CreateWorkflowInstance'."]: + """Execute a specified workflow in Datadog. + + Initiates the execution of a workflow in Datadog using the provided workflow ID. Ensure that a registered application key or appropriate UI configuration is used for authentication. + + Note: Understanding the request schema is necessary to properly create + the stringified JSON input object for execution.\n\nThis operation also requires path parameters. + + Modes: + - GET_REQUEST_SCHEMA: Returns the schema. Only call if you don't + already have it. Do NOT call repeatedly if you already received + the schema. + - EXECUTE: Performs the operation with the provided request body + JSON.\n Note: You must also provide the required path parameters when executing. + + If you need the schema, call with mode='get_request_schema' ONCE, then execute. + """ # noqa: E501 + if mode == ToolMode.GET_REQUEST_SCHEMA: + return { + "request_body_schema": REQUEST_BODY_SCHEMAS["EXECUTEWORKFLOW_REQUEST_BODY_SCHEMA"], + "instructions": ( + "Use the request_body_schema to construct a valid JSON object. " + "Once you have populated the object following the schema " + "structure and requirements, call this tool again with " + "mode='execute' and the stringified JSON as the " + "request_body parameter along with the required path parameters. " + "Do NOT call the schema mode again - you already have " + "the schema now." + ), + } + + # Mode is EXECUTE - validate parameters + # Validate required parameters + missing_params = [] + if not workflow_identifier: + missing_params.append(("workflow_identifier", "path")) + + if missing_params: + param_names = [p[0] for p in missing_params] + param_details = ", ".join([f"{p[0]} ({p[1]})" for p in missing_params]) + raise RetryableToolError( + message=f"Missing required parameters: {param_names}", + developer_message=(f"Required parameters validation failed: {param_details}"), + additional_prompt_content=( + f"The following required parameters are missing: " + f"{param_details}. Please call this tool again with all " + "required parameters." + ), + ) + + # Validate request body is provided (not None or empty string) + # Note: Empty objects like {} are allowed - schema validation will check if valid + if request_body is None or request_body.strip() == "": + raise RetryableToolError( + message="Request body is required when mode is 'execute'", + developer_message="The request_body parameter was null or empty string", + additional_prompt_content=( + "The request body is required to perform this operation. " + "Use the schema below to construct a valid JSON object, " + "then call this tool again in execute mode with the " + "stringified JSON as the request_body parameter.\n\n" + "Schema:\n\n" + + json.dumps(REQUEST_BODY_SCHEMAS["EXECUTEWORKFLOW_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["EXECUTEWORKFLOW_REQUEST_BODY_SCHEMA"], indent=2) + ), + ) from e + + response = await make_request_with_schema_validation( + url="https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), workflow_id=workflow_identifier + ), + method="POST", + request_data=request_data, + schema=REQUEST_BODY_SCHEMAS["EXECUTEWORKFLOW_REQUEST_BODY_SCHEMA"], + params=remove_none_values({}), + headers=remove_none_values({ + "Content-Type": "application/json", + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def get_workflow_instance( + context: ToolContext, + workflow_id: Annotated[ + str, "The unique identifier of the workflow to retrieve its specific execution details." + ], + workflow_instance_id: Annotated[str, "The ID of the specific workflow instance to retrieve."], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'GetWorkflowInstance'."]: + """Retrieve a specific workflow execution instance. + + Fetches details of a specific execution for a given Datadog workflow. Requires proper application key registration or permissions setup.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances/{instance_id}".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + workflow_id=workflow_id, + instance_id=workflow_instance_id, + ), + method="GET", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} + + +@tool(requires_secrets=["DATADOG_API_KEY", "DATADOG_APPLICATION_KEY", "DATADOG_BASE_URL"]) +async def cancel_workflow_instance( + context: ToolContext, + workflow_id: Annotated[ + str, + "The unique ID of the workflow to cancel. It must be a valid string as per the API specifications.", # noqa: E501 + ], + workflow_instance_id: Annotated[ + str, "The unique identifier of the workflow instance to be canceled." + ], +) -> Annotated[dict[str, Any], "Response from the API endpoint 'CancelWorkflowInstance'."]: + """Cancel a specific execution of a workflow. + + Use this tool to cancel a specific execution of a given workflow in Datadog. Ensure you have the necessary application key or permissions configured to perform this action.""" # noqa: E501 + request_data = remove_none_values({}) + content = json.dumps(request_data) if request_data else None + response = await make_request( + url="https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances/{instance_id}/cancel".format( + datadog_base_url=context.get_secret("DATADOG_BASE_URL"), + workflow_id=workflow_id, + instance_id=workflow_instance_id, + ), + method="PUT", + params=remove_none_values({}), + headers=remove_none_values({ + "DD-API-KEY": context.get_secret("DATADOG_API_KEY"), + "DD-APPLICATION-KEY": context.get_secret("DATADOG_APPLICATION_KEY"), + }), + content=content, + ) + try: + return {"response_json": response.json()} + except Exception: + return {"response_text": response.text} diff --git a/toolkits/datadog_api/arcade_datadog_api/tools/request_body_schemas.py b/toolkits/datadog_api/arcade_datadog_api/tools/request_body_schemas.py new file mode 100644 index 00000000..fa012a39 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/tools/request_body_schemas.py @@ -0,0 +1,95799 @@ +"""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] = { + "UPDATEDATASTOREITEM_REQUEST_BODY_SCHEMA": { + "description": "Request to update specific fields on an existing datastore item.", + "properties": { + "data": { + "description": "Data wrapper containing the item identifier " + "and the changes to apply during the update " + "operation.", + "properties": { + "attributes": { + "description": "Attributes for " + "updating a " + "datastore item, " + "including the " + "item key and " + "changes to " + "apply.", + "properties": { + "id": { + "description": "The unique identifier of the item being updated.", + "type": "string", + }, + "item_changes": { + "description": "Changes " + "to " + "apply " + "to " + "a " + "datastore " + "item " + "using " + "set " + "operations.", + "properties": { + "ops_set": { + "additionalProperties": {}, + "description": "Set " + "operation " + "that " + "contains " + "key-value " + "pairs " + "to " + "set " + "on " + "the " + "datastore " + "item.", + "type": "object", + } + }, + "type": "object", + }, + "item_key": { + "description": "The " + "primary " + "key " + "that " + "identifies " + "the " + "item " + "to " + "update. " + "Cannot " + "exceed " + "256 " + "characters.", + "example": "", + "maxLength": 256, + "type": "string", + }, + }, + "required": ["item_changes", "item_key"], + "type": "object", + }, + "id": { + "description": "The unique identifier of the datastore item.", + "type": "string", + }, + "type": { + "default": "items", + "description": "The resource type for datastore items.", + "enum": ["items"], + "example": "items", + "type": "string", + "x-enum-varnames": ["ITEMS"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "BULKUPDATEDATASTOREITEMS_REQUEST_BODY_SCHEMA": { + "description": "Request to insert multiple items into a datastore in a single operation.", + "properties": { + "data": { + "description": "Data wrapper containing the items to insert " + "and their configuration for the bulk insert " + "operation.", + "properties": { + "attributes": { + "description": "Configuration " + "for bulk " + "inserting " + "multiple items " + "into a " + "datastore.", + "properties": { + "conflict_mode": { + "description": "How " + "to " + "handle " + "conflicts " + "when " + "inserting " + "items " + "that " + "already " + "exist " + "in " + "the " + "datastore.", + "enum": ["fail_on_conflict", "overwrite_on_conflict"], + "example": "overwrite_on_conflict", + "type": "string", + "x-enum-varnames": ["FAIL_ON_CONFLICT", "OVERWRITE_ON_CONFLICT"], + }, + "values": { + "description": "An " + "array " + "of " + "items " + "to " + "add " + "to " + "the " + "datastore, " + "where " + "each " + "item " + "is " + "a " + "set " + "of " + "key-value " + "pairs " + "representing " + "the " + "item's " + "data. " + "Up " + "to " + "100 " + "items " + "can " + "be " + "updated " + "in " + "a " + "single " + "request.", + "example": [ + {"data": "example data", "key": "value"}, + {"data": "example data2", "key": "value2"}, + ], + "items": { + "additionalProperties": {}, + "description": "A " + "single " + "item's " + "data " + "as " + "key-value " + "pairs. " + "Key " + "names " + "cannot " + "exceed " + "63 " + "characters.", + "type": "object", + }, + "maxItems": 100, + "type": "array", + }, + }, + "required": ["values"], + "type": "object", + }, + "type": { + "default": "items", + "description": "The resource type for datastore items.", + "enum": ["items"], + "example": "items", + "type": "string", + "x-enum-varnames": ["ITEMS"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "CREATEACTIONCONNECTION_REQUEST_BODY_SCHEMA": { + "description": "Request used to create an action connection.", + "properties": { + "data": { + "description": "Data related to the connection.", + "properties": { + "attributes": { + "description": "The definition of `ActionConnectionAttributes` object.", + "properties": { + "integration": { + "description": "The " + "definition " + "of " + "`ActionConnectionIntegration` " + "object.", + "oneOf": [ + { + "description": "The definition of `AWSIntegration` object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "`AWSCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "`AWSAssumeRole` " + "object.", + "properties": { + "account_id": { + "description": "AWS " + "account " + "the " + "connection " + "is " + "created " + "for", + "example": "111222333444", + "pattern": "^\\d{12}$", + "type": "string", + }, + "external_id": { + "description": "External " + "ID " + "used " + "to " + "scope " + "which " + "connection " + "can " + "be " + "used " + "to " + "assume " + "the " + "role", + "example": "33a1011635c44b38a064cf14e82e1d8f", + "readOnly": True, + "type": "string", + }, + "principal_id": { + "description": "AWS " + "account " + "that " + "will " + "assume " + "the " + "role", + "example": "123456789012", + "readOnly": True, + "type": "string", + }, + "role": { + "description": "Role to assume", + "example": "my-role", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`AWSAssumeRoleType` " + "object.", + "enum": ["AWSAssumeRole"], + "example": "AWSAssumeRole", + "type": "string", + "x-enum-varnames": [ + "AWSASSUMEROLE" + ], + }, + }, + "required": ["type", "account_id", "role"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "`AWSIntegrationType` " + "object.", + "enum": ["AWS"], + "example": "AWS", + "type": "string", + "x-enum-varnames": ["AWS"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`AnthropicIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`AnthropicCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`AnthropicAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`AnthropicAPIKey` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AnthropicAPIKey` " + "object.", + "enum": ["AnthropicAPIKey"], + "example": "AnthropicAPIKey", + "type": "string", + "x-enum-varnames": [ + "ANTHROPICAPIKEY" + ], + }, + }, + "required": ["type", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AnthropicIntegrationType` " + "object.", + "enum": ["Anthropic"], + "example": "Anthropic", + "type": "string", + "x-enum-varnames": ["ANTHROPIC"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`AsanaIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`AsanaCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`AsanaAccessToken` " + "object.", + "properties": { + "access_token": { + "description": "The " + "`AsanaAccessToken` " + "`access_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AsanaAccessToken` " + "object.", + "enum": ["AsanaAccessToken"], + "example": "AsanaAccessToken", + "type": "string", + "x-enum-varnames": [ + "ASANAACCESSTOKEN" + ], + }, + }, + "required": ["type", "access_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AsanaIntegrationType` " + "object.", + "enum": ["Asana"], + "example": "Asana", + "type": "string", + "x-enum-varnames": ["ASANA"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`AzureIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`AzureCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`AzureTenant` " + "object.", + "properties": { + "app_client_id": { + "description": "The " + "Client " + "ID, " + "also " + "known " + "as " + "the " + "Application " + "ID " + "in " + "Azure, " + "is " + "a " + "unique " + "identifier " + "for " + "an " + "application. " + "It's " + "used " + "to " + "identify " + "the " + "application " + "during " + "the " + "authentication " + "process. " + "Your " + "Application " + "(client) " + "ID " + "is " + "listed " + "in " + "the " + "application's " + "overview " + "page. " + "You " + "can " + "navigate " + "to " + "your " + "application " + "via " + "the " + "Azure " + "Directory. ", + "example": "", + "type": "string", + }, + "client_secret": { + "description": "The " + "Client " + "Secret " + "is " + "a " + "confidential " + "piece " + "of " + "information " + "known " + "only " + "to " + "the " + "application " + "and " + "Azure " + "AD. " + "It's " + "used " + "to " + "prove " + "the " + "application's " + "identity. " + "Your " + "Client " + "Secret " + "is " + "available " + "from " + "the " + "application’s " + "secrets " + "page. " + "You " + "can " + "navigate " + "to " + "your " + "application " + "via " + "the " + "Azure " + "Directory.", + "example": "", + "type": "string", + }, + "custom_scopes": { + "description": "If " + "provided, " + "the " + "custom " + "scope " + "to " + "be " + "requested " + "from " + "Microsoft " + "when " + "acquiring " + "an " + "OAuth " + "2 " + "access " + "token. " + "This " + "custom " + "scope " + "is " + "used " + "only " + "in " + "conjunction " + "with " + "the " + "HTTP " + "action. " + "A " + "resource's " + "scope " + "is " + "constructed " + "by " + "using " + "the " + "identifier " + "URI " + "for " + "the " + "resource " + "and " + ".default, " + "separated " + "by " + "a " + "forward " + "slash " + "(/) " + "as " + "follows:{identifierURI}/.default.", + "type": "string", + }, + "tenant_id": { + "description": "The " + "Tenant " + "ID, " + "also " + "known " + "as " + "the " + "Directory " + "ID " + "in " + "Azure, " + "is " + "a " + "unique " + "identifier " + "that " + "represents " + "an " + "Azure " + "AD " + "instance. " + "Your " + "Tenant " + "ID " + "(Directory " + "ID) " + "is " + "listed " + "in " + "your " + "Active " + "Directory " + "overview " + "page " + "under " + "the " + "'Tenant " + "information' " + "section.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AzureTenant` " + "object.", + "enum": ["AzureTenant"], + "example": "AzureTenant", + "type": "string", + "x-enum-varnames": ["AZURETENANT"], + }, + }, + "required": [ + "type", + "tenant_id", + "app_client_id", + "client_secret", + ], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AzureIntegrationType` " + "object.", + "enum": ["Azure"], + "example": "Azure", + "type": "string", + "x-enum-varnames": ["AZURE"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`CircleCIIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`CircleCICredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`CircleCIAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`CircleCIAPIKey` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CircleCIAPIKey` " + "object.", + "enum": ["CircleCIAPIKey"], + "example": "CircleCIAPIKey", + "type": "string", + "x-enum-varnames": [ + "CIRCLECIAPIKEY" + ], + }, + }, + "required": ["type", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CircleCIIntegrationType` " + "object.", + "enum": ["CircleCI"], + "example": "CircleCI", + "type": "string", + "x-enum-varnames": ["CIRCLECI"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`ClickupIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`ClickupCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`ClickupAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`ClickupAPIKey` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ClickupAPIKey` " + "object.", + "enum": ["ClickupAPIKey"], + "example": "ClickupAPIKey", + "type": "string", + "x-enum-varnames": [ + "CLICKUPAPIKEY" + ], + }, + }, + "required": ["type", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ClickupIntegrationType` " + "object.", + "enum": ["Clickup"], + "example": "Clickup", + "type": "string", + "x-enum-varnames": ["CLICKUP"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`CloudflareIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`CloudflareAPIToken` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`CloudflareAPIToken` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareAPIToken` " + "object.", + "enum": ["CloudflareAPIToken"], + "example": "CloudflareAPIToken", + "type": "string", + "x-enum-varnames": [ + "CLOUDFLAREAPITOKEN" + ], + }, + }, + "required": ["type", "api_token"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`CloudflareGlobalAPIToken` " + "object.", + "properties": { + "auth_email": { + "description": "The " + "`CloudflareGlobalAPIToken` " + "`auth_email`.", + "example": "", + "type": "string", + }, + "global_api_key": { + "description": "The " + "`CloudflareGlobalAPIToken` " + "`global_api_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareGlobalAPIToken` " + "object.", + "enum": [ + "CloudflareGlobalAPIToken" + ], + "example": "CloudflareGlobalAPIToken", + "type": "string", + "x-enum-varnames": [ + "CLOUDFLAREGLOBALAPITOKEN" + ], + }, + }, + "required": [ + "type", + "auth_email", + "global_api_key", + ], + "type": "object", + }, + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareIntegrationType` " + "object.", + "enum": ["Cloudflare"], + "example": "Cloudflare", + "type": "string", + "x-enum-varnames": ["CLOUDFLARE"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatSDKKey` " + "object.", + "properties": { + "api_password": { + "description": "The " + "`ConfigCatSDKKey` " + "`api_password`.", + "example": "", + "type": "string", + }, + "api_username": { + "description": "The " + "`ConfigCatSDKKey` " + "`api_username`.", + "example": "", + "type": "string", + }, + "sdk_key": { + "description": "The " + "`ConfigCatSDKKey` " + "`sdk_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatSDKKey` " + "object.", + "enum": ["ConfigCatSDKKey"], + "example": "ConfigCatSDKKey", + "type": "string", + "x-enum-varnames": [ + "CONFIGCATSDKKEY" + ], + }, + }, + "required": [ + "type", + "sdk_key", + "api_username", + "api_password", + ], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatIntegrationType` " + "object.", + "enum": ["ConfigCat"], + "example": "ConfigCat", + "type": "string", + "x-enum-varnames": ["CONFIGCAT"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`DatadogIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`DatadogCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`DatadogAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`DatadogAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "app_key": { + "description": "The " + "`DatadogAPIKey` " + "`app_key`.", + "example": "", + "type": "string", + }, + "datacenter": { + "description": "The " + "`DatadogAPIKey` " + "`datacenter`.", + "example": "", + "type": "string", + }, + "subdomain": { + "description": "Custom " + "subdomain " + "used " + "for " + "Datadog " + "URLs " + "generated " + "with " + "this " + "Connection. " + "For " + "example, " + "if " + "this " + "org " + "uses " + "`https://acme.datadoghq.com` " + "to " + "access " + "Datadog, " + "set " + "this " + "field " + "to " + "`acme`. " + "If " + "this " + "field " + "is " + "omitted, " + "generated " + "URLs " + "will " + "use " + "the " + "default " + "site " + "URL " + "for " + "its " + "datacenter " + "(see " + "[https://docs.datadoghq.com/getting_started/site](https://docs.datadoghq.com/getting_started/site)).", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`DatadogAPIKey` " + "object.", + "enum": ["DatadogAPIKey"], + "example": "DatadogAPIKey", + "type": "string", + "x-enum-varnames": [ + "DATADOGAPIKEY" + ], + }, + }, + "required": [ + "type", + "datacenter", + "api_key", + "app_key", + ], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`DatadogIntegrationType` " + "object.", + "enum": ["Datadog"], + "example": "Datadog", + "type": "string", + "x-enum-varnames": ["DATADOG"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`FastlyIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`FastlyCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`FastlyAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`FastlyAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FastlyAPIKey` " + "object.", + "enum": ["FastlyAPIKey"], + "example": "FastlyAPIKey", + "type": "string", + "x-enum-varnames": ["FASTLYAPIKEY"], + }, + }, + "required": ["type", "api_key"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FastlyIntegrationType` " + "object.", + "enum": ["Fastly"], + "example": "Fastly", + "type": "string", + "x-enum-varnames": ["FASTLY"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`FreshserviceAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "domain": { + "description": "The " + "`FreshserviceAPIKey` " + "`domain`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceAPIKey` " + "object.", + "enum": ["FreshserviceAPIKey"], + "example": "FreshserviceAPIKey", + "type": "string", + "x-enum-varnames": [ + "FRESHSERVICEAPIKEY" + ], + }, + }, + "required": ["type", "domain", "api_key"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceIntegrationType` " + "object.", + "enum": ["Freshservice"], + "example": "Freshservice", + "type": "string", + "x-enum-varnames": ["FRESHSERVICE"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GCPIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GCPCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GCPServiceAccount` " + "object.", + "properties": { + "private_key": { + "description": "The " + "`GCPServiceAccount` " + "`private_key`.", + "example": "", + "type": "string", + }, + "service_account_email": { + "description": "The " + "`GCPServiceAccount` " + "`service_account_email`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GCPServiceAccount` " + "object.", + "enum": ["GCPServiceAccount"], + "example": "GCPServiceAccount", + "type": "string", + "x-enum-varnames": [ + "GCPSERVICEACCOUNT" + ], + }, + }, + "required": [ + "type", + "service_account_email", + "private_key", + ], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GCPIntegrationType` " + "object.", + "enum": ["GCP"], + "example": "GCP", + "type": "string", + "x-enum-varnames": ["GCP"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GeminiIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GeminiCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GeminiAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`GeminiAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GeminiAPIKey` " + "object.", + "enum": ["GeminiAPIKey"], + "example": "GeminiAPIKey", + "type": "string", + "x-enum-varnames": ["GEMINIAPIKEY"], + }, + }, + "required": ["type", "api_key"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GeminiIntegrationType` " + "object.", + "enum": ["Gemini"], + "example": "Gemini", + "type": "string", + "x-enum-varnames": ["GEMINI"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GitlabIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GitlabCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GitlabAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`GitlabAPIKey` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GitlabAPIKey` " + "object.", + "enum": ["GitlabAPIKey"], + "example": "GitlabAPIKey", + "type": "string", + "x-enum-varnames": ["GITLABAPIKEY"], + }, + }, + "required": ["type", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GitlabIntegrationType` " + "object.", + "enum": ["Gitlab"], + "example": "Gitlab", + "type": "string", + "x-enum-varnames": ["GITLAB"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`GreyNoiseAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseAPIKey` " + "object.", + "enum": ["GreyNoiseAPIKey"], + "example": "GreyNoiseAPIKey", + "type": "string", + "x-enum-varnames": [ + "GREYNOISEAPIKEY" + ], + }, + }, + "required": ["type", "api_key"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseIntegrationType` " + "object.", + "enum": ["GreyNoise"], + "example": "GreyNoise", + "type": "string", + "x-enum-varnames": ["GREYNOISE"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "`HTTPIntegration` " + "object.", + "properties": { + "base_url": { + "description": "Base HTTP url for the integration", + "example": "http://datadoghq.com", + "type": "string", + }, + "credentials": { + "description": "The " + "definition " + "of " + "`HTTPCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "`HTTPTokenAuth` " + "object.", + "properties": { + "body": { + "description": "The " + "definition " + "of " + "`HTTPBody` " + "object.", + "properties": { + "content": { + "description": "Serialized " + "body " + "content", + "example": '{"some-json": ' + '"with-value"}', + "type": "string", + }, + "content_type": { + "description": "Content " + "type " + "of " + "the " + "body", + "example": "application/json", + "type": "string", + }, + }, + "type": "object", + }, + "headers": { + "description": "The " + "`HTTPTokenAuth` " + "`headers`.", + "items": { + "description": "The " + "definition " + "of " + "`HTTPHeader` " + "object.", + "properties": { + "name": { + "description": "The " + "`HTTPHeader` " + "`name`.", + "example": "MyHttpHeader", + "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", + "type": "string", + }, + "value": { + "description": "The " + "`HTTPHeader` " + "`value`.", + "example": "Some " + "header " + "value", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "tokens": { + "description": "The " + "`HTTPTokenAuth` " + "`tokens`.", + "items": { + "description": "The " + "definition " + "of " + "`HTTPToken` " + "object.", + "properties": { + "name": { + "description": "The " + "`HTTPToken` " + "`name`.", + "example": "MyToken", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`TokenType` " + "object.", + "enum": ["SECRET"], + "example": "SECRET", + "type": "string", + "x-enum-varnames": [ + "SECRET" + ], + }, + "value": { + "description": "The " + "`HTTPToken` " + "`value`.", + "example": "Some " + "Token " + "Value", + "type": "string", + }, + }, + "required": [ + "name", + "value", + "type", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The " + "definition " + "of " + "`HTTPTokenAuthType` " + "object.", + "enum": ["HTTPTokenAuth"], + "example": "HTTPTokenAuth", + "type": "string", + "x-enum-varnames": [ + "HTTPTOKENAUTH" + ], + }, + "url_parameters": { + "description": "The " + "`HTTPTokenAuth` " + "`url_parameters`.", + "items": { + "description": "The " + "definition " + "of " + "`UrlParam` " + "object.", + "properties": { + "name": { + "description": "Name " + "for " + "tokens.", + "example": "MyTokenName", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string", + }, + "value": { + "description": "The " + "`UrlParam` " + "`value`.", + "example": "Some " + "Url " + "Parameter " + "value", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "`HTTPIntegrationType` " + "object.", + "enum": ["HTTP"], + "example": "HTTP", + "type": "string", + "x-enum-varnames": ["HTTP"], + }, + }, + "required": ["type", "base_url", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`LaunchDarklyAPIKey` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyAPIKey` " + "object.", + "enum": ["LaunchDarklyAPIKey"], + "example": "LaunchDarklyAPIKey", + "type": "string", + "x-enum-varnames": [ + "LAUNCHDARKLYAPIKEY" + ], + }, + }, + "required": ["type", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyIntegrationType` " + "object.", + "enum": ["LaunchDarkly"], + "example": "LaunchDarkly", + "type": "string", + "x-enum-varnames": ["LAUNCHDARKLY"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`NotionIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`NotionCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`NotionAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`NotionAPIKey` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`NotionAPIKey` " + "object.", + "enum": ["NotionAPIKey"], + "example": "NotionAPIKey", + "type": "string", + "x-enum-varnames": ["NOTIONAPIKEY"], + }, + }, + "required": ["type", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`NotionIntegrationType` " + "object.", + "enum": ["Notion"], + "example": "Notion", + "type": "string", + "x-enum-varnames": ["NOTION"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`OktaIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`OktaCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`OktaAPIToken` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`OktaAPIToken` " + "`api_token`.", + "example": "", + "type": "string", + }, + "domain": { + "description": "The " + "`OktaAPIToken` " + "`domain`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OktaAPIToken` " + "object.", + "enum": ["OktaAPIToken"], + "example": "OktaAPIToken", + "type": "string", + "x-enum-varnames": ["OKTAAPITOKEN"], + }, + }, + "required": ["type", "domain", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OktaIntegrationType` " + "object.", + "enum": ["Okta"], + "example": "Okta", + "type": "string", + "x-enum-varnames": ["OKTA"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`OpenAIIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`OpenAICredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`OpenAIAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`OpenAIAPIKey` " + "`api_token`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OpenAIAPIKey` " + "object.", + "enum": ["OpenAIAPIKey"], + "example": "OpenAIAPIKey", + "type": "string", + "x-enum-varnames": ["OPENAIAPIKEY"], + }, + }, + "required": ["type", "api_token"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OpenAIIntegrationType` " + "object.", + "enum": ["OpenAI"], + "example": "OpenAI", + "type": "string", + "x-enum-varnames": ["OPENAI"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowBasicAuth` " + "object.", + "properties": { + "instance": { + "description": "The " + "`ServiceNowBasicAuth` " + "`instance`.", + "example": "", + "type": "string", + }, + "password": { + "description": "The " + "`ServiceNowBasicAuth` " + "`password`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowBasicAuth` " + "object.", + "enum": ["ServiceNowBasicAuth"], + "example": "ServiceNowBasicAuth", + "type": "string", + "x-enum-varnames": [ + "SERVICENOWBASICAUTH" + ], + }, + "username": { + "description": "The " + "`ServiceNowBasicAuth` " + "`username`.", + "example": "", + "type": "string", + }, + }, + "required": [ + "type", + "instance", + "username", + "password", + ], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowIntegrationType` " + "object.", + "enum": ["ServiceNow"], + "example": "ServiceNow", + "type": "string", + "x-enum-varnames": ["SERVICENOW"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`SplitIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`SplitCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`SplitAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`SplitAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`SplitAPIKey` " + "object.", + "enum": ["SplitAPIKey"], + "example": "SplitAPIKey", + "type": "string", + "x-enum-varnames": ["SPLITAPIKEY"], + }, + }, + "required": ["type", "api_key"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`SplitIntegrationType` " + "object.", + "enum": ["Split"], + "example": "Split", + "type": "string", + "x-enum-varnames": ["SPLIT"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`StatsigIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`StatsigCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`StatsigAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`StatsigAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`StatsigAPIKey` " + "object.", + "enum": ["StatsigAPIKey"], + "example": "StatsigAPIKey", + "type": "string", + "x-enum-varnames": [ + "STATSIGAPIKEY" + ], + }, + }, + "required": ["type", "api_key"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`StatsigIntegrationType` " + "object.", + "enum": ["Statsig"], + "example": "Statsig", + "type": "string", + "x-enum-varnames": ["STATSIG"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalIntegration` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalCredentials` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`VirusTotalAPIKey` " + "`api_key`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalAPIKey` " + "object.", + "enum": ["VirusTotalAPIKey"], + "example": "VirusTotalAPIKey", + "type": "string", + "x-enum-varnames": [ + "VIRUSTOTALAPIKEY" + ], + }, + }, + "required": ["type", "api_key"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalIntegrationType` " + "object.", + "enum": ["VirusTotal"], + "example": "VirusTotal", + "type": "string", + "x-enum-varnames": ["VIRUSTOTAL"], + }, + }, + "required": ["type", "credentials"], + "type": "object", + }, + ], + }, + "name": { + "description": "Name of the connection", + "example": "My AWS Connection", + "type": "string", + }, + }, + "required": ["name", "integration"], + "type": "object", + }, + "id": { + "description": "The connection identifier", + "readOnly": True, + "type": "string", + }, + "type": { + "description": "The definition of `ActionConnectionDataType` object.", + "enum": ["action_connection"], + "example": "action_connection", + "type": "string", + "x-enum-varnames": ["ACTION_CONNECTION"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEACTIONCONNECTION_REQUEST_BODY_SCHEMA": { + "description": "Request used to update an action connection.", + "properties": { + "data": { + "description": "Data related to the connection update.", + "properties": { + "attributes": { + "description": "The definition " + "of " + "`ActionConnectionAttributesUpdate` " + "object.", + "properties": { + "integration": { + "description": "The " + "definition " + "of " + "`ActionConnectionIntegrationUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "`AWSIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "`AWSCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "`AWSAssumeRoleUpdate` " + "object.", + "properties": { + "account_id": { + "description": "AWS " + "account " + "the " + "connection " + "is " + "created " + "for", + "example": "111222333444", + "pattern": "^\\d{12}$", + "type": "string", + }, + "generate_new_external_id": { + "description": "The " + "`AWSAssumeRoleUpdate` " + "`generate_new_external_id`.", + "type": "boolean", + }, + "role": { + "description": "Role to assume", + "example": "my-role", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`AWSAssumeRoleType` " + "object.", + "enum": ["AWSAssumeRole"], + "example": "AWSAssumeRole", + "type": "string", + "x-enum-varnames": [ + "AWSASSUMEROLE" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "`AWSIntegrationType` " + "object.", + "enum": ["AWS"], + "example": "AWS", + "type": "string", + "x-enum-varnames": ["AWS"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`AnthropicIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`AnthropicCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`AnthropicAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`AnthropicAPIKeyUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AnthropicAPIKey` " + "object.", + "enum": ["AnthropicAPIKey"], + "example": "AnthropicAPIKey", + "type": "string", + "x-enum-varnames": [ + "ANTHROPICAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AnthropicIntegrationType` " + "object.", + "enum": ["Anthropic"], + "example": "Anthropic", + "type": "string", + "x-enum-varnames": ["ANTHROPIC"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`AsanaIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`AsanaCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`AsanaAccessToken` " + "object.", + "properties": { + "access_token": { + "description": "The " + "`AsanaAccessTokenUpdate` " + "`access_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AsanaAccessToken` " + "object.", + "enum": ["AsanaAccessToken"], + "example": "AsanaAccessToken", + "type": "string", + "x-enum-varnames": [ + "ASANAACCESSTOKEN" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AsanaIntegrationType` " + "object.", + "enum": ["Asana"], + "example": "Asana", + "type": "string", + "x-enum-varnames": ["ASANA"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`AzureIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`AzureCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`AzureTenant` " + "object.", + "properties": { + "app_client_id": { + "description": "The " + "Client " + "ID, " + "also " + "known " + "as " + "the " + "Application " + "ID " + "in " + "Azure, " + "is " + "a " + "unique " + "identifier " + "for " + "an " + "application. " + "It's " + "used " + "to " + "identify " + "the " + "application " + "during " + "the " + "authentication " + "process. " + "Your " + "Application " + "(client) " + "ID " + "is " + "listed " + "in " + "the " + "application's " + "overview " + "page. " + "You " + "can " + "navigate " + "to " + "your " + "application " + "via " + "the " + "Azure " + "Directory. ", + "type": "string", + }, + "client_secret": { + "description": "The " + "Client " + "Secret " + "is " + "a " + "confidential " + "piece " + "of " + "information " + "known " + "only " + "to " + "the " + "application " + "and " + "Azure " + "AD. " + "It's " + "used " + "to " + "prove " + "the " + "application's " + "identity. " + "Your " + "Client " + "Secret " + "is " + "available " + "from " + "the " + "application’s " + "secrets " + "page. " + "You " + "can " + "navigate " + "to " + "your " + "application " + "via " + "the " + "Azure " + "Directory.", + "type": "string", + }, + "custom_scopes": { + "description": "If " + "provided, " + "the " + "custom " + "scope " + "to " + "be " + "requested " + "from " + "Microsoft " + "when " + "acquiring " + "an " + "OAuth " + "2 " + "access " + "token. " + "This " + "custom " + "scope " + "is " + "used " + "only " + "in " + "conjunction " + "with " + "the " + "HTTP " + "action. " + "A " + "resource's " + "scope " + "is " + "constructed " + "by " + "using " + "the " + "identifier " + "URI " + "for " + "the " + "resource " + "and " + ".default, " + "separated " + "by " + "a " + "forward " + "slash " + "(/) " + "as " + "follows:{identifierURI}/.default.", + "type": "string", + }, + "tenant_id": { + "description": "The " + "Tenant " + "ID, " + "also " + "known " + "as " + "the " + "Directory " + "ID " + "in " + "Azure, " + "is " + "a " + "unique " + "identifier " + "that " + "represents " + "an " + "Azure " + "AD " + "instance. " + "Your " + "Tenant " + "ID " + "(Directory " + "ID) " + "is " + "listed " + "in " + "your " + "Active " + "Directory " + "overview " + "page " + "under " + "the " + "'Tenant " + "information' " + "section.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AzureTenant` " + "object.", + "enum": ["AzureTenant"], + "example": "AzureTenant", + "type": "string", + "x-enum-varnames": ["AZURETENANT"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`AzureIntegrationType` " + "object.", + "enum": ["Azure"], + "example": "Azure", + "type": "string", + "x-enum-varnames": ["AZURE"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`CircleCIIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`CircleCICredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`CircleCIAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`CircleCIAPIKeyUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CircleCIAPIKey` " + "object.", + "enum": ["CircleCIAPIKey"], + "example": "CircleCIAPIKey", + "type": "string", + "x-enum-varnames": [ + "CIRCLECIAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CircleCIIntegrationType` " + "object.", + "enum": ["CircleCI"], + "example": "CircleCI", + "type": "string", + "x-enum-varnames": ["CIRCLECI"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`ClickupIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`ClickupCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`ClickupAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`ClickupAPIKeyUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ClickupAPIKey` " + "object.", + "enum": ["ClickupAPIKey"], + "example": "ClickupAPIKey", + "type": "string", + "x-enum-varnames": [ + "CLICKUPAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ClickupIntegrationType` " + "object.", + "enum": ["Clickup"], + "example": "Clickup", + "type": "string", + "x-enum-varnames": ["CLICKUP"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`CloudflareIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`CloudflareAPIToken` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`CloudflareAPITokenUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareAPIToken` " + "object.", + "enum": ["CloudflareAPIToken"], + "example": "CloudflareAPIToken", + "type": "string", + "x-enum-varnames": [ + "CLOUDFLAREAPITOKEN" + ], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`CloudflareGlobalAPIToken` " + "object.", + "properties": { + "auth_email": { + "description": "The " + "`CloudflareGlobalAPITokenUpdate` " + "`auth_email`.", + "type": "string", + }, + "global_api_key": { + "description": "The " + "`CloudflareGlobalAPITokenUpdate` " + "`global_api_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareGlobalAPIToken` " + "object.", + "enum": [ + "CloudflareGlobalAPIToken" + ], + "example": "CloudflareGlobalAPIToken", + "type": "string", + "x-enum-varnames": [ + "CLOUDFLAREGLOBALAPITOKEN" + ], + }, + }, + "required": ["type"], + "type": "object", + }, + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`CloudflareIntegrationType` " + "object.", + "enum": ["Cloudflare"], + "example": "Cloudflare", + "type": "string", + "x-enum-varnames": ["CLOUDFLARE"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatSDKKey` " + "object.", + "properties": { + "api_password": { + "description": "The " + "`ConfigCatSDKKeyUpdate` " + "`api_password`.", + "type": "string", + }, + "api_username": { + "description": "The " + "`ConfigCatSDKKeyUpdate` " + "`api_username`.", + "type": "string", + }, + "sdk_key": { + "description": "The " + "`ConfigCatSDKKeyUpdate` " + "`sdk_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatSDKKey` " + "object.", + "enum": ["ConfigCatSDKKey"], + "example": "ConfigCatSDKKey", + "type": "string", + "x-enum-varnames": [ + "CONFIGCATSDKKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ConfigCatIntegrationType` " + "object.", + "enum": ["ConfigCat"], + "example": "ConfigCat", + "type": "string", + "x-enum-varnames": ["CONFIGCAT"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`DatadogIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`DatadogCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`DatadogAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`DatadogAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "app_key": { + "description": "The " + "`DatadogAPIKeyUpdate` " + "`app_key`.", + "type": "string", + }, + "datacenter": { + "description": "The " + "`DatadogAPIKeyUpdate` " + "`datacenter`.", + "type": "string", + }, + "subdomain": { + "description": "Custom " + "subdomain " + "used " + "for " + "Datadog " + "URLs " + "generated " + "with " + "this " + "Connection. " + "For " + "example, " + "if " + "this " + "org " + "uses " + "`https://acme.datadoghq.com` " + "to " + "access " + "Datadog, " + "set " + "this " + "field " + "to " + "`acme`. " + "If " + "this " + "field " + "is " + "omitted, " + "generated " + "URLs " + "will " + "use " + "the " + "default " + "site " + "URL " + "for " + "its " + "datacenter " + "(see " + "[https://docs.datadoghq.com/getting_started/site](https://docs.datadoghq.com/getting_started/site)).", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`DatadogAPIKey` " + "object.", + "enum": ["DatadogAPIKey"], + "example": "DatadogAPIKey", + "type": "string", + "x-enum-varnames": [ + "DATADOGAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`DatadogIntegrationType` " + "object.", + "enum": ["Datadog"], + "example": "Datadog", + "type": "string", + "x-enum-varnames": ["DATADOG"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`FastlyIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`FastlyCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`FastlyAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`FastlyAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FastlyAPIKey` " + "object.", + "enum": ["FastlyAPIKey"], + "example": "FastlyAPIKey", + "type": "string", + "x-enum-varnames": ["FASTLYAPIKEY"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FastlyIntegrationType` " + "object.", + "enum": ["Fastly"], + "example": "Fastly", + "type": "string", + "x-enum-varnames": ["FASTLY"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`FreshserviceAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "domain": { + "description": "The " + "`FreshserviceAPIKeyUpdate` " + "`domain`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceAPIKey` " + "object.", + "enum": ["FreshserviceAPIKey"], + "example": "FreshserviceAPIKey", + "type": "string", + "x-enum-varnames": [ + "FRESHSERVICEAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`FreshserviceIntegrationType` " + "object.", + "enum": ["Freshservice"], + "example": "Freshservice", + "type": "string", + "x-enum-varnames": ["FRESHSERVICE"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GCPIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GCPCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GCPServiceAccount` " + "object.", + "properties": { + "private_key": { + "description": "The " + "`GCPServiceAccountUpdate` " + "`private_key`.", + "type": "string", + }, + "service_account_email": { + "description": "The " + "`GCPServiceAccountUpdate` " + "`service_account_email`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GCPServiceAccount` " + "object.", + "enum": ["GCPServiceAccount"], + "example": "GCPServiceAccount", + "type": "string", + "x-enum-varnames": [ + "GCPSERVICEACCOUNT" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GCPIntegrationType` " + "object.", + "enum": ["GCP"], + "example": "GCP", + "type": "string", + "x-enum-varnames": ["GCP"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GeminiIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GeminiCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GeminiAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`GeminiAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GeminiAPIKey` " + "object.", + "enum": ["GeminiAPIKey"], + "example": "GeminiAPIKey", + "type": "string", + "x-enum-varnames": ["GEMINIAPIKEY"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GeminiIntegrationType` " + "object.", + "enum": ["Gemini"], + "example": "Gemini", + "type": "string", + "x-enum-varnames": ["GEMINI"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GitlabIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GitlabCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GitlabAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`GitlabAPIKeyUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GitlabAPIKey` " + "object.", + "enum": ["GitlabAPIKey"], + "example": "GitlabAPIKey", + "type": "string", + "x-enum-varnames": ["GITLABAPIKEY"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GitlabIntegrationType` " + "object.", + "enum": ["Gitlab"], + "example": "Gitlab", + "type": "string", + "x-enum-varnames": ["GITLAB"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`GreyNoiseAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseAPIKey` " + "object.", + "enum": ["GreyNoiseAPIKey"], + "example": "GreyNoiseAPIKey", + "type": "string", + "x-enum-varnames": [ + "GREYNOISEAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`GreyNoiseIntegrationType` " + "object.", + "enum": ["GreyNoise"], + "example": "GreyNoise", + "type": "string", + "x-enum-varnames": ["GREYNOISE"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "`HTTPIntegrationUpdate` " + "object.", + "properties": { + "base_url": { + "description": "Base HTTP url for the integration", + "example": "http://datadoghq.com", + "type": "string", + }, + "credentials": { + "description": "The " + "definition " + "of " + "`HTTPCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "`HTTPTokenAuthUpdate` " + "object.", + "properties": { + "body": { + "description": "The " + "definition " + "of " + "`HTTPBody` " + "object.", + "properties": { + "content": { + "description": "Serialized " + "body " + "content", + "example": '{"some-json": ' + '"with-value"}', + "type": "string", + }, + "content_type": { + "description": "Content " + "type " + "of " + "the " + "body", + "example": "application/json", + "type": "string", + }, + }, + "type": "object", + }, + "headers": { + "description": "The " + "`HTTPTokenAuthUpdate` " + "`headers`.", + "items": { + "description": "The " + "definition " + "of " + "`HTTPHeaderUpdate` " + "object.", + "properties": { + "deleted": { + "description": "Should " + "the " + "header " + "be " + "deleted.", + "type": "boolean", + }, + "name": { + "description": "The " + "`HTTPHeaderUpdate` " + "`name`.", + "example": "MyHttpHeader", + "pattern": "^[A-Za-z][A-Za-z\\\\d\\\\-\\\\_]*$", + "type": "string", + }, + "value": { + "description": "The " + "`HTTPHeaderUpdate` " + "`value`.", + "example": "Updated " + "Header " + "Value", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "tokens": { + "description": "The " + "`HTTPTokenAuthUpdate` " + "`tokens`.", + "items": { + "description": "The " + "definition " + "of " + "`HTTPTokenUpdate` " + "object.", + "properties": { + "deleted": { + "description": "Should " + "the " + "header " + "be " + "deleted.", + "type": "boolean", + }, + "name": { + "description": "The " + "`HTTPToken` " + "`name`.", + "example": "MyToken", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`TokenType` " + "object.", + "enum": ["SECRET"], + "example": "SECRET", + "type": "string", + "x-enum-varnames": [ + "SECRET" + ], + }, + "value": { + "description": "The " + "`HTTPToken` " + "`value`.", + "example": "Some " + "Token " + "Value", + "type": "string", + }, + }, + "required": [ + "name", + "type", + "value", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The " + "definition " + "of " + "`HTTPTokenAuthType` " + "object.", + "enum": ["HTTPTokenAuth"], + "example": "HTTPTokenAuth", + "type": "string", + "x-enum-varnames": [ + "HTTPTOKENAUTH" + ], + }, + "url_parameters": { + "description": "The " + "`HTTPTokenAuthUpdate` " + "`url_parameters`.", + "items": { + "description": "The " + "definition " + "of " + "`UrlParamUpdate` " + "object.", + "properties": { + "deleted": { + "description": "Should " + "the " + "header " + "be " + "deleted.", + "type": "boolean", + }, + "name": { + "description": "Name " + "for " + "tokens.", + "example": "MyTokenName", + "pattern": "^[A-Za-z][A-Za-z\\\\d]*$", + "type": "string", + }, + "value": { + "description": "The " + "`UrlParamUpdate` " + "`value`.", + "example": "Some " + "Url " + "Parameter " + "value", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "`HTTPIntegrationType` " + "object.", + "enum": ["HTTP"], + "example": "HTTP", + "type": "string", + "x-enum-varnames": ["HTTP"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`LaunchDarklyAPIKeyUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyAPIKey` " + "object.", + "enum": ["LaunchDarklyAPIKey"], + "example": "LaunchDarklyAPIKey", + "type": "string", + "x-enum-varnames": [ + "LAUNCHDARKLYAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`LaunchDarklyIntegrationType` " + "object.", + "enum": ["LaunchDarkly"], + "example": "LaunchDarkly", + "type": "string", + "x-enum-varnames": ["LAUNCHDARKLY"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`NotionIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`NotionCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`NotionAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`NotionAPIKeyUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`NotionAPIKey` " + "object.", + "enum": ["NotionAPIKey"], + "example": "NotionAPIKey", + "type": "string", + "x-enum-varnames": ["NOTIONAPIKEY"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`NotionIntegrationType` " + "object.", + "enum": ["Notion"], + "example": "Notion", + "type": "string", + "x-enum-varnames": ["NOTION"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`OktaIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`OktaCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`OktaAPIToken` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`OktaAPITokenUpdate` " + "`api_token`.", + "type": "string", + }, + "domain": { + "description": "The " + "`OktaAPITokenUpdate` " + "`domain`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OktaAPIToken` " + "object.", + "enum": ["OktaAPIToken"], + "example": "OktaAPIToken", + "type": "string", + "x-enum-varnames": ["OKTAAPITOKEN"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OktaIntegrationType` " + "object.", + "enum": ["Okta"], + "example": "Okta", + "type": "string", + "x-enum-varnames": ["OKTA"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`OpenAIIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`OpenAICredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`OpenAIAPIKey` " + "object.", + "properties": { + "api_token": { + "description": "The " + "`OpenAIAPIKeyUpdate` " + "`api_token`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OpenAIAPIKey` " + "object.", + "enum": ["OpenAIAPIKey"], + "example": "OpenAIAPIKey", + "type": "string", + "x-enum-varnames": ["OPENAIAPIKEY"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`OpenAIIntegrationType` " + "object.", + "enum": ["OpenAI"], + "example": "OpenAI", + "type": "string", + "x-enum-varnames": ["OPENAI"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowBasicAuth` " + "object.", + "properties": { + "instance": { + "description": "The " + "`ServiceNowBasicAuthUpdate` " + "`instance`.", + "type": "string", + }, + "password": { + "description": "The " + "`ServiceNowBasicAuthUpdate` " + "`password`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowBasicAuth` " + "object.", + "enum": ["ServiceNowBasicAuth"], + "example": "ServiceNowBasicAuth", + "type": "string", + "x-enum-varnames": [ + "SERVICENOWBASICAUTH" + ], + }, + "username": { + "description": "The " + "`ServiceNowBasicAuthUpdate` " + "`username`.", + "type": "string", + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`ServiceNowIntegrationType` " + "object.", + "enum": ["ServiceNow"], + "example": "ServiceNow", + "type": "string", + "x-enum-varnames": ["SERVICENOW"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`SplitIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`SplitCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`SplitAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`SplitAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`SplitAPIKey` " + "object.", + "enum": ["SplitAPIKey"], + "example": "SplitAPIKey", + "type": "string", + "x-enum-varnames": ["SPLITAPIKEY"], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`SplitIntegrationType` " + "object.", + "enum": ["Split"], + "example": "Split", + "type": "string", + "x-enum-varnames": ["SPLIT"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`StatsigIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`StatsigCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`StatsigAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`StatsigAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`StatsigAPIKey` " + "object.", + "enum": ["StatsigAPIKey"], + "example": "StatsigAPIKey", + "type": "string", + "x-enum-varnames": [ + "STATSIGAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`StatsigIntegrationType` " + "object.", + "enum": ["Statsig"], + "example": "Statsig", + "type": "string", + "x-enum-varnames": ["STATSIG"], + }, + }, + "required": ["type"], + "type": "object", + }, + { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalIntegrationUpdate` " + "object.", + "properties": { + "credentials": { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalCredentialsUpdate` " + "object.", + "oneOf": [ + { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalAPIKey` " + "object.", + "properties": { + "api_key": { + "description": "The " + "`VirusTotalAPIKeyUpdate` " + "`api_key`.", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalAPIKey` " + "object.", + "enum": ["VirusTotalAPIKey"], + "example": "VirusTotalAPIKey", + "type": "string", + "x-enum-varnames": [ + "VIRUSTOTALAPIKEY" + ], + }, + }, + "required": ["type"], + "type": "object", + } + ], + }, + "type": { + "description": "The " + "definition " + "of " + "the " + "`VirusTotalIntegrationType` " + "object.", + "enum": ["VirusTotal"], + "example": "VirusTotal", + "type": "string", + "x-enum-varnames": ["VIRUSTOTAL"], + }, + }, + "required": ["type"], + "type": "object", + }, + ], + }, + "name": { + "description": "Name of the connection", + "example": "My AWS Connection", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The definition of `ActionConnectionDataType` object.", + "enum": ["action_connection"], + "example": "action_connection", + "type": "string", + "x-enum-varnames": ["ACTION_CONNECTION"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATESPANMETRIC_REQUEST_BODY_SCHEMA": { + "description": "The new span-based metric body.", + "properties": { + "data": { + "description": "The new span-based metric properties.", + "properties": { + "attributes": { + "description": "The object " + "describing the " + "Datadog " + "span-based " + "metric to " + "create.", + "properties": { + "compute": { + "description": "The compute rule to compute the span-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": ["count", "distribution"], + "example": "distribution", + "type": "string", + "x-enum-varnames": ["COUNT", "DISTRIBUTION"], + }, + "include_percentiles": { + "description": "Toggle " + "to " + "include " + "or " + "exclude " + "percentile " + "aggregations " + "for " + "distribution " + "metrics.\n" + "Only " + "present " + "when " + "the " + "`aggregation_type` " + "is " + "`distribution`.", + "example": False, + "type": "boolean", + }, + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "span-based " + "metric " + "will " + "aggregate " + "on " + "(only " + "used " + "if " + "the " + "aggregation " + "type " + "is " + "a " + '"distribution").', + "example": "@duration", + "type": "string", + }, + }, + "required": ["aggregation_type"], + "type": "object", + }, + "filter": { + "description": "The " + "span-based " + "metric " + "filter. " + "Spans " + "matching " + "this " + "filter " + "will " + "be " + "aggregated " + "in " + "this " + "metric.", + "properties": { + "query": { + "default": "*", + "description": "The " + "search " + "query " + "- " + "following " + "the " + "span " + "search " + "syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string", + } + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "span-based " + "metric " + "will " + "be " + "aggregated " + "over.", + "example": "resource_name", + "type": "string", + }, + "tag_name": { + "description": "Eventual " + "name " + "of " + "the " + "tag " + "that " + "gets " + "created. " + "By " + "default, " + "the " + "path " + "attribute " + "is " + "used " + "as " + "the " + "tag " + "name.", + "example": "resource_name", + "type": "string", + }, + }, + "required": ["path"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["compute"], + "type": "object", + }, + "id": { + "description": "The name of the span-based metric.", + "example": "my.metric", + "type": "string", + }, + "type": { + "default": "spans_metrics", + "description": "The type of resource. " + "The value should " + "always be " + "spans_metrics.", + "enum": ["spans_metrics"], + "example": "spans_metrics", + "type": "string", + "x-enum-varnames": ["SPANS_METRICS"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATESPANMETRIC_REQUEST_BODY_SCHEMA": { + "description": "The new span-based metric body.", + "properties": { + "data": { + "description": "The new span-based metric properties.", + "properties": { + "attributes": { + "description": "The span-based metric properties that will be updated.", + "properties": { + "compute": { + "description": "The compute rule to compute the span-based metric.", + "properties": { + "include_percentiles": { + "description": "Toggle " + "to " + "include " + "or " + "exclude " + "percentile " + "aggregations " + "for " + "distribution " + "metrics.\n" + "Only " + "present " + "when " + "the " + "`aggregation_type` " + "is " + "`distribution`.", + "example": False, + "type": "boolean", + } + }, + "type": "object", + }, + "filter": { + "description": "The " + "span-based " + "metric " + "filter. " + "Spans " + "matching " + "this " + "filter " + "will " + "be " + "aggregated " + "in " + "this " + "metric.", + "properties": { + "query": { + "default": "*", + "description": "The " + "search " + "query " + "- " + "following " + "the " + "span " + "search " + "syntax.", + "example": "@http.status_code:200 service:my-service", + "type": "string", + } + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "span-based " + "metric " + "will " + "be " + "aggregated " + "over.", + "example": "resource_name", + "type": "string", + }, + "tag_name": { + "description": "Eventual " + "name " + "of " + "the " + "tag " + "that " + "gets " + "created. " + "By " + "default, " + "the " + "path " + "attribute " + "is " + "used " + "as " + "the " + "tag " + "name.", + "example": "resource_name", + "type": "string", + }, + }, + "required": ["path"], + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "type": { + "default": "spans_metrics", + "description": "The type of resource. " + "The value should " + "always be " + "spans_metrics.", + "enum": ["spans_metrics"], + "example": "spans_metrics", + "type": "string", + "x-enum-varnames": ["SPANS_METRICS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "REORDERAPMRETENTIONFILTERS_REQUEST_BODY_SCHEMA": { + "description": "A list of retention filters to reorder.", + "properties": { + "data": { + "description": "A list of retention filters objects.", + "items": { + "description": "The retention filter object .", + "properties": { + "id": { + "description": "The ID of the retention filter.", + "example": "7RBOb7dLSYWI01yc3pIH8w", + "type": "string", + }, + "type": { + "default": "apm_retention_filter", + "description": "The type of the resource.", + "enum": ["apm_retention_filter"], + "example": "apm_retention_filter", + "type": "string", + "x-enum-varnames": ["apm_retention_filter"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["data"], + "type": "object", + }, + "DELETEMULTIPLEDATADOGAPPS_REQUEST_BODY_SCHEMA": { + "description": "A request object for deleting multiple apps by ID.", + "example": { + "data": [ + {"id": "aea2ed17-b45f-40d0-ba59-c86b7972c901", "type": "appDefinitions"}, + {"id": "f69bb8be-6168-4fe7-a30d-370256b6504a", "type": "appDefinitions"}, + {"id": "ab1ed73e-13ad-4426-b0df-a0ff8876a088", "type": "appDefinitions"}, + ] + }, + "properties": { + "data": { + "description": "An array of objects containing the IDs of the apps to delete.", + "items": { + "description": "An object containing the ID of an app to delete.", + "properties": { + "id": { + "description": "The ID of the app to delete.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": ["appDefinitions"], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": ["APPDEFINITIONS"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "CREATENEWAPP_REQUEST_BODY_SCHEMA": { + "description": "A request object for creating a new app.", + "example": { + "data": { + "attributes": { + "components": [ + { + "events": [], + "name": "grid0", + "properties": { + "children": [ + { + "events": [], + "name": "gridCell0", + "properties": { + "children": [ + { + "events": [], + "name": "calloutValue0", + "properties": { + "isDisabled": False, + "isLoading": False, + "isVisible": True, + "label": "CPU Usage", + "size": "sm", + "style": "vivid_yellow", + "unit": "kB", + "value": "42", + }, + "type": "calloutValue", + } + ], + "isVisible": "true", + "layout": { + "default": {"height": 8, "width": 2, "x": 0, "y": 0} + }, + }, + "type": "gridCell", + } + ] + }, + "type": "grid", + } + ], + "description": "This is a simple example app", + "name": "Example App", + "queries": [], + "rootInstanceName": "grid0", + }, + "type": "appDefinitions", + } + }, + "properties": { + "data": { + "description": "The data object containing the app definition.", + "properties": { + "attributes": { + "description": "App definition " + "attributes such " + "as name, " + "description, " + "and components.", + "properties": { + "components": { + "description": "The UI components that make up the app.", + "items": { + "description": "A " + "grid " + "component. " + "The " + "grid " + "component " + "is " + "the " + "root " + "canvas " + "for " + "an " + "app " + "and " + "contains " + "all " + "other " + "components.", + "properties": { + "events": { + "description": "Events " + "to " + "listen " + "for " + "on " + "the " + "grid " + "component.", + "items": { + "additionalProperties": {}, + "description": "An " + "event " + "on " + "a " + "UI " + "component " + "that " + "triggers " + "a " + "response " + "or " + "action " + "in " + "an " + "app.", + "properties": { + "name": { + "description": "The " + "triggering " + "action " + "for " + "the " + "event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished", + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED", + ], + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue", + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The " + "ID " + "of " + "the " + "grid " + "component. " + "This " + "property " + "is " + "deprecated; " + "use " + "`name` " + "to " + "identify " + "individual " + "components " + "instead.", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "grid " + "component. " + "This " + "name " + "is " + "also " + "visible " + "in " + "the " + "app " + "editor.", + "example": "", + "type": "string", + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The " + "background " + "color " + "of " + "the " + "grid.", + "type": "string", + }, + "children": { + "description": "The " + "child " + "components " + "of " + "the " + "grid.", + "items": { + "description": "[Definition " + "of " + "a " + "UI " + "component " + "in " + "the " + "app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events " + "to " + "listen " + "for " + "on " + "the " + "UI " + "component.", + "items": { + "additionalProperties": {}, + "description": "An " + "event " + "on " + "a " + "UI " + "component " + "that " + "triggers " + "a " + "response " + "or " + "action " + "in " + "an " + "app.", + "properties": { + "name": { + "description": "The " + "triggering " + "action " + "for " + "the " + "event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished", + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED", + ], + }, + "type": { + "description": "The " + "response " + "to " + "the " + "event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue", + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The " + "ID " + "of " + "the " + "UI " + "component. " + "This " + "property " + "is " + "deprecated; " + "use " + "`name` " + "to " + "identify " + "individual " + "components " + "instead.", + "nullable": True, + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "UI " + "component. " + "This " + "name " + "is " + "also " + "visible " + "in " + "the " + "app " + "editor.", + "example": "", + "type": "string", + }, + "properties": { + "additionalProperties": {}, + "description": "Properties " + "of " + "a " + "UI " + "component. " + "Different " + "component " + "types " + "can " + "have " + "their " + "own " + "additional " + "unique " + "properties. " + "See " + "the " + "[components " + "documentation](https://docs.datadoghq.com/service_management/app_builder/components/) " + "for " + "more " + "detail " + "on " + "each " + "component " + "type " + "and " + "its " + "properties.", + "properties": { + "children": { + "description": "The " + "child " + "components " + "of " + "the " + "UI " + "component.", + "items": { + "$ref": "#/components/schemas/Component", + "has_circular_reference": True, + }, + "type": "array", + }, + "isVisible": { + "description": "Whether " + "the " + "UI " + "component " + "is " + "visible. " + "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + }, + "type": "object", + }, + "type": { + "description": "The " + "UI " + "component " + "type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue", + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE", + ], + }, + }, + "required": ["name", "type", "properties"], + "type": "object", + }, + "type": "array", + }, + "isVisible": { + "description": "Whether " + "the " + "grid " + "component " + "and " + "its " + "children " + "are " + "visible. " + "If " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "oneOf": [ + {"type": "string"}, + {"default": True, "type": "boolean"}, + ], + }, + }, + "type": "object", + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": ["grid"], + "example": "grid", + "type": "string", + "x-enum-varnames": ["GRID"], + }, + }, + "required": ["name", "type", "properties"], + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "A human-readable description for the app.", + "type": "string", + }, + "name": {"description": "The name of the app.", "type": "string"}, + "queries": { + "description": "An " + "array " + "of " + "queries, " + "such " + "as " + "external " + "actions " + "and " + "state " + "variables, " + "that " + "the " + "app " + "uses.", + "items": { + "description": "A " + "data " + "query " + "used " + "by " + "an " + "app. " + "This " + "can " + "take " + "the " + "form " + "of " + "an " + "external " + "action, " + "a " + "data " + "transformation, " + "or " + "a " + "state " + "variable.", + "oneOf": [ + { + "description": "An " + "action " + "query. " + "This " + "query " + "type " + "is " + "used " + "to " + "trigger " + "an " + "action, " + "such " + "as " + "sending " + "a " + "HTTP " + "request.", + "properties": { + "events": { + "description": "Events " + "to " + "listen " + "for " + "downstream " + "of " + "the " + "action " + "query.", + "items": { + "additionalProperties": {}, + "description": "An " + "event " + "on " + "a " + "UI " + "component " + "that " + "triggers " + "a " + "response " + "or " + "action " + "in " + "an " + "app.", + "properties": { + "name": { + "description": "The " + "triggering " + "action " + "for " + "the " + "event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished", + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED", + ], + }, + "type": { + "description": "The " + "response " + "to " + "the " + "event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue", + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The ID of the action query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "action " + "query. " + "This " + "name " + "is " + "also " + "used " + "to " + "access " + "the " + "query's " + "result " + "throughout " + "the " + "app.", + "example": "fetchPendingOrders", + "type": "string", + }, + "properties": { + "description": "The " + "properties " + "of " + "the " + "action " + "query.", + "properties": { + "condition": { + "description": "Whether " + "to " + "run " + "this " + "query. " + "If " + "specified, " + "the " + "query " + "will " + "only " + "run " + "if " + "this " + "condition " + "evaluates " + "to " + "`true` " + "in " + "JavaScript " + "and " + "all " + "other " + "conditions " + "are " + "also " + "met.", + "oneOf": [ + {"type": "boolean"}, + { + "example": "${true}", + "type": "string", + }, + ], + }, + "debounceInMs": { + "description": "The " + "minimum " + "time " + "in " + "milliseconds " + "that " + "must " + "pass " + "before " + "the " + "query " + "can " + "be " + "triggered " + "again. " + "This " + "is " + "useful " + "for " + "preventing " + "accidental " + "double-clicks " + "from " + "triggering " + "the " + "query " + "multiple " + "times.", + "oneOf": [ + { + "example": 310.5, + "format": "double", + "type": "number", + }, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "number.", + "example": "${1000}", + "type": "string", + }, + ], + }, + "mockedOutputs": { + "description": "The " + "mocked " + "outputs " + "of " + "the " + "action " + "query. " + "This " + "is " + "useful " + "for " + "testing " + "the " + "app " + "without " + "actually " + "running " + "the " + "action.", + "oneOf": [ + {"type": "string"}, + { + "description": "The " + "mocked " + "outputs " + "of " + "the " + "action " + "query.", + "properties": { + "enabled": { + "description": "Whether " + "to " + "enable " + "the " + "mocked " + "outputs " + "for " + "testing.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "outputs": { + "description": "The " + "mocked " + "outputs " + "of " + "the " + "action " + "query, " + "serialized " + "as " + "JSON.", + "example": '{"status": ' + '"success"}', + "type": "string", + }, + }, + "required": ["enabled"], + "type": "object", + }, + ], + }, + "onlyTriggerManually": { + "description": "Determines " + "when " + "this " + "query " + "is " + "executed. " + "If " + "set " + "to " + "`false`, " + "the " + "query " + "will " + "run " + "when " + "the " + "app " + "loads " + "and " + "whenever " + "any " + "query " + "arguments " + "change. " + "If " + "set " + "to " + "`true`, " + "the " + "query " + "will " + "only " + "run " + "when " + "manually " + "triggered " + "from " + "elsewhere " + "in " + "the " + "app.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "outputs": { + "description": "The " + "post-query " + "transformation " + "function, " + "which " + "is " + "a " + "JavaScript " + "function " + "that " + "changes " + "the " + "query's " + "`.outputs` " + "property " + "after " + "the " + "query's " + "execution.", + "example": "${((outputs) " + "=> " + "{return " + "outputs.body.data})(self.rawOutputs)}", + "type": "string", + }, + "pollingIntervalInMs": { + "description": "If " + "specified, " + "the " + "app " + "will " + "poll " + "the " + "query " + "at " + "the " + "specified " + "interval " + "in " + "milliseconds. " + "The " + "minimum " + "polling " + "interval " + "is " + "15 " + "seconds. " + "The " + "query " + "will " + "only " + "poll " + "when " + "the " + "app's " + "browser " + "tab " + "is " + "active.", + "oneOf": [ + { + "example": 30000.0, + "format": "double", + "minimum": 15000.0, + "type": "number", + }, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "number.", + "example": "${15000}", + "type": "string", + }, + ], + }, + "requiresConfirmation": { + "description": "Whether " + "to " + "prompt " + "the " + "user " + "to " + "confirm " + "this " + "query " + "before " + "it " + "runs.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "showToastOnError": { + "description": "Whether " + "to " + "display " + "a " + "toast " + "to " + "the " + "user " + "when " + "the " + "query " + "returns " + "an " + "error.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "spec": { + "description": "The " + "definition " + "of " + "the " + "action " + "query.", + "oneOf": [ + {"type": "string"}, + { + "description": "The " + "action " + "query " + "spec " + "object.", + "properties": { + "connectionGroup": { + "description": "The " + "connection " + "group " + "to " + "use " + "for " + "an " + "action " + "query.", + "properties": { + "id": { + "description": "The " + "ID " + "of " + "the " + "connection " + "group.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "tags": { + "description": "The " + "tags " + "of " + "the " + "connection " + "group.", + "items": { + "type": "string" + }, + "type": "array", + }, + }, + "type": "object", + }, + "connectionId": { + "description": "The " + "ID " + "of " + "the " + "custom " + "connection " + "to " + "use " + "for " + "this " + "action " + "query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "string", + }, + "fqn": { + "description": "The " + "fully " + "qualified " + "name " + "of " + "the " + "action " + "type.", + "example": "com.datadoghq.http.request", + "type": "string", + }, + "inputs": { + "description": "The " + "inputs " + "to " + "the " + "action " + "query. " + "These " + "are " + "the " + "values " + "that " + "are " + "passed " + "to " + "the " + "action " + "when " + "it " + "is " + "triggered.", + "oneOf": [ + {"type": "string"}, + { + "additionalProperties": {}, + "description": "The " + "inputs " + "to " + "the " + "action " + "query. " + "See " + "the " + "[Actions " + "Catalog](https://docs.datadoghq.com/actions/actions_catalog/) " + "for " + "more " + "detail " + "on " + "each " + "action " + "and " + "its " + "inputs.", + "type": "object", + }, + ], + }, + }, + "required": ["fqn"], + "type": "object", + }, + ], + }, + }, + "required": ["spec"], + "type": "object", + }, + "type": { + "default": "action", + "description": "The action query type.", + "enum": ["action"], + "example": "action", + "type": "string", + "x-enum-varnames": ["ACTION"], + }, + }, + "required": ["id", "name", "type", "properties"], + "type": "object", + }, + { + "description": "A " + "data " + "transformer, " + "which " + "is " + "custom " + "JavaScript " + "code " + "that " + "executes " + "and " + "transforms " + "data " + "when " + "its " + "inputs " + "change.", + "properties": { + "id": { + "description": "The " + "ID " + "of " + "the " + "data " + "transformer.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "data " + "transformer. " + "This " + "name " + "is " + "also " + "used " + "to " + "access " + "the " + "transformer's " + "result " + "throughout " + "the " + "app.", + "example": "combineTwoOrders", + "type": "string", + }, + "properties": { + "description": "The " + "properties " + "of " + "the " + "data " + "transformer.", + "properties": { + "outputs": { + "description": "A " + "JavaScript " + "function " + "that " + "returns " + "the " + "transformed " + "data.", + "example": "${(() " + "=> " + "{return " + "{\n" + " " + "allItems: " + "[...fetchOrder1.outputs.items, " + "...fetchOrder2.outputs.items],\n" + "}})()}", + "type": "string", + } + }, + "type": "object", + }, + "type": { + "default": "dataTransform", + "description": "The data transform type.", + "enum": ["dataTransform"], + "example": "dataTransform", + "type": "string", + "x-enum-varnames": ["DATATRANSFORM"], + }, + }, + "required": ["id", "name", "type", "properties"], + "type": "object", + }, + { + "description": "A " + "variable, " + "which " + "can " + "be " + "set " + "and " + "read " + "by " + "other " + "components " + "in " + "the " + "app.", + "properties": { + "id": { + "description": "The ID of the state variable.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "state " + "variable. " + "This " + "name " + "is " + "also " + "used " + "to " + "access " + "the " + "variable's " + "value " + "throughout " + "the " + "app.", + "example": "ordersToSubmit", + "type": "string", + }, + "properties": { + "description": "The " + "properties " + "of " + "the " + "state " + "variable.", + "properties": { + "defaultValue": { + "description": "The " + "default " + "value " + "of " + "the " + "state " + "variable.", + "example": "${['order_3145', " + "'order_4920']}", + } + }, + "type": "object", + }, + "type": { + "default": "stateVariable", + "description": "The state variable type.", + "enum": ["stateVariable"], + "example": "stateVariable", + "type": "string", + "x-enum-varnames": ["STATEVARIABLE"], + }, + }, + "required": ["id", "name", "type", "properties"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "rootInstanceName": { + "description": "The " + "name " + "of " + "the " + "root " + "component " + "of " + "the " + "app. " + "This " + "must " + "be " + "a " + "`grid` " + "component " + "that " + "contains " + "all " + "other " + "components.", + "type": "string", + }, + "tags": { + "description": "A " + "list " + "of " + "tags " + "for " + "the " + "app, " + "which " + "can " + "be " + "used " + "to " + "filter " + "apps.", + "example": ["service:webshop-backend", "team:webshop"], + "items": { + "description": "An individual tag for the app.", + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": ["appDefinitions"], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": ["APPDEFINITIONS"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "UPDATEAPPVERSION_REQUEST_BODY_SCHEMA": { + "description": "A request object for updating an existing app.", + "example": { + "data": { + "attributes": { + "components": [ + { + "events": [], + "name": "grid0", + "properties": { + "children": [ + { + "events": [], + "name": "gridCell0", + "properties": { + "children": [ + { + "events": [], + "name": "calloutValue0", + "properties": { + "isDisabled": False, + "isLoading": False, + "isVisible": True, + "label": "CPU Usage", + "size": "sm", + "style": "vivid_yellow", + "unit": "kB", + "value": "42", + }, + "type": "calloutValue", + } + ], + "isVisible": "true", + "layout": { + "default": {"height": 8, "width": 2, "x": 0, "y": 0} + }, + }, + "type": "gridCell", + } + ] + }, + "type": "grid", + } + ], + "description": "This is a simple example app", + "name": "Example App", + "queries": [], + "rootInstanceName": "grid0", + }, + "id": "9e20cbaf-68da-45a6-9ccf-54193ac29fa5", + "type": "appDefinitions", + } + }, + "properties": { + "data": { + "description": "The data object containing the new app " + "definition. Any fields not included in the " + "request remain unchanged.", + "properties": { + "attributes": { + "description": "App definition " + "attributes to " + "be updated, " + "such as name, " + "description, " + "and components.", + "properties": { + "components": { + "description": "The " + "new " + "UI " + "components " + "that " + "make " + "up " + "the " + "app. " + "If " + "this " + "field " + "is " + "set, " + "all " + "existing " + "components " + "are " + "replaced " + "with " + "the " + "new " + "components " + "under " + "this " + "field.", + "items": { + "description": "A " + "grid " + "component. " + "The " + "grid " + "component " + "is " + "the " + "root " + "canvas " + "for " + "an " + "app " + "and " + "contains " + "all " + "other " + "components.", + "properties": { + "events": { + "description": "Events " + "to " + "listen " + "for " + "on " + "the " + "grid " + "component.", + "items": { + "additionalProperties": {}, + "description": "An " + "event " + "on " + "a " + "UI " + "component " + "that " + "triggers " + "a " + "response " + "or " + "action " + "in " + "an " + "app.", + "properties": { + "name": { + "description": "The " + "triggering " + "action " + "for " + "the " + "event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished", + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED", + ], + }, + "type": { + "description": "The response to the event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue", + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The " + "ID " + "of " + "the " + "grid " + "component. " + "This " + "property " + "is " + "deprecated; " + "use " + "`name` " + "to " + "identify " + "individual " + "components " + "instead.", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "grid " + "component. " + "This " + "name " + "is " + "also " + "visible " + "in " + "the " + "app " + "editor.", + "example": "", + "type": "string", + }, + "properties": { + "description": "Properties of a grid component.", + "properties": { + "backgroundColor": { + "default": "default", + "description": "The " + "background " + "color " + "of " + "the " + "grid.", + "type": "string", + }, + "children": { + "description": "The " + "child " + "components " + "of " + "the " + "grid.", + "items": { + "description": "[Definition " + "of " + "a " + "UI " + "component " + "in " + "the " + "app](https://docs.datadoghq.com/service_management/app_builder/components/)", + "properties": { + "events": { + "description": "Events " + "to " + "listen " + "for " + "on " + "the " + "UI " + "component.", + "items": { + "additionalProperties": {}, + "description": "An " + "event " + "on " + "a " + "UI " + "component " + "that " + "triggers " + "a " + "response " + "or " + "action " + "in " + "an " + "app.", + "properties": { + "name": { + "description": "The " + "triggering " + "action " + "for " + "the " + "event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished", + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED", + ], + }, + "type": { + "description": "The " + "response " + "to " + "the " + "event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue", + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The " + "ID " + "of " + "the " + "UI " + "component. " + "This " + "property " + "is " + "deprecated; " + "use " + "`name` " + "to " + "identify " + "individual " + "components " + "instead.", + "nullable": True, + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "UI " + "component. " + "This " + "name " + "is " + "also " + "visible " + "in " + "the " + "app " + "editor.", + "example": "", + "type": "string", + }, + "properties": { + "additionalProperties": {}, + "description": "Properties " + "of " + "a " + "UI " + "component. " + "Different " + "component " + "types " + "can " + "have " + "their " + "own " + "additional " + "unique " + "properties. " + "See " + "the " + "[components " + "documentation](https://docs.datadoghq.com/service_management/app_builder/components/) " + "for " + "more " + "detail " + "on " + "each " + "component " + "type " + "and " + "its " + "properties.", + "properties": { + "children": { + "description": "The " + "child " + "components " + "of " + "the " + "UI " + "component.", + "items": { + "$ref": "#/components/schemas/Component", + "has_circular_reference": True, + }, + "type": "array", + }, + "isVisible": { + "description": "Whether " + "the " + "UI " + "component " + "is " + "visible. " + "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + }, + "type": "object", + }, + "type": { + "description": "The " + "UI " + "component " + "type.", + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue", + ], + "example": "text", + "type": "string", + "x-enum-varnames": [ + "TABLE", + "TEXTINPUT", + "TEXTAREA", + "BUTTON", + "TEXT", + "SELECT", + "MODAL", + "SCHEMAFORM", + "CHECKBOX", + "TABS", + "VEGACHART", + "RADIOBUTTONS", + "NUMBERINPUT", + "FILEINPUT", + "JSONINPUT", + "GRIDCELL", + "DATERANGEPICKER", + "SEARCH", + "CONTAINER", + "CALLOUTVALUE", + ], + }, + }, + "required": ["name", "type", "properties"], + "type": "object", + }, + "type": "array", + }, + "isVisible": { + "description": "Whether " + "the " + "grid " + "component " + "and " + "its " + "children " + "are " + "visible. " + "If " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "oneOf": [ + {"type": "string"}, + {"default": True, "type": "boolean"}, + ], + }, + }, + "type": "object", + }, + "type": { + "default": "grid", + "description": "The grid component type.", + "enum": ["grid"], + "example": "grid", + "type": "string", + "x-enum-varnames": ["GRID"], + }, + }, + "required": ["name", "type", "properties"], + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "The new human-readable description for the app.", + "type": "string", + }, + "name": {"description": "The new name of the app.", "type": "string"}, + "queries": { + "description": "The " + "new " + "array " + "of " + "queries, " + "such " + "as " + "external " + "actions " + "and " + "state " + "variables, " + "that " + "the " + "app " + "uses. " + "If " + "this " + "field " + "is " + "set, " + "all " + "existing " + "queries " + "are " + "replaced " + "with " + "the " + "new " + "queries " + "under " + "this " + "field.", + "items": { + "description": "A " + "data " + "query " + "used " + "by " + "an " + "app. " + "This " + "can " + "take " + "the " + "form " + "of " + "an " + "external " + "action, " + "a " + "data " + "transformation, " + "or " + "a " + "state " + "variable.", + "oneOf": [ + { + "description": "An " + "action " + "query. " + "This " + "query " + "type " + "is " + "used " + "to " + "trigger " + "an " + "action, " + "such " + "as " + "sending " + "a " + "HTTP " + "request.", + "properties": { + "events": { + "description": "Events " + "to " + "listen " + "for " + "downstream " + "of " + "the " + "action " + "query.", + "items": { + "additionalProperties": {}, + "description": "An " + "event " + "on " + "a " + "UI " + "component " + "that " + "triggers " + "a " + "response " + "or " + "action " + "in " + "an " + "app.", + "properties": { + "name": { + "description": "The " + "triggering " + "action " + "for " + "the " + "event.", + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished", + ], + "example": "click", + "type": "string", + "x-enum-varnames": [ + "PAGECHANGE", + "TABLEROWCLICK", + "TABLEROWBUTTONCLICK", + "CHANGE", + "SUBMIT", + "CLICK", + "TOGGLEOPEN", + "CLOSE", + "OPEN", + "EXECUTIONFINISHED", + ], + }, + "type": { + "description": "The " + "response " + "to " + "the " + "event.", + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue", + ], + "example": "triggerQuery", + "type": "string", + "x-enum-varnames": [ + "CUSTOM", + "SETCOMPONENTSTATE", + "TRIGGERQUERY", + "OPENMODAL", + "CLOSEMODAL", + "OPENURL", + "DOWNLOADFILE", + "SETSTATEVARIABLEVALUE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The ID of the action query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "action " + "query. " + "This " + "name " + "is " + "also " + "used " + "to " + "access " + "the " + "query's " + "result " + "throughout " + "the " + "app.", + "example": "fetchPendingOrders", + "type": "string", + }, + "properties": { + "description": "The " + "properties " + "of " + "the " + "action " + "query.", + "properties": { + "condition": { + "description": "Whether " + "to " + "run " + "this " + "query. " + "If " + "specified, " + "the " + "query " + "will " + "only " + "run " + "if " + "this " + "condition " + "evaluates " + "to " + "`true` " + "in " + "JavaScript " + "and " + "all " + "other " + "conditions " + "are " + "also " + "met.", + "oneOf": [ + {"type": "boolean"}, + { + "example": "${true}", + "type": "string", + }, + ], + }, + "debounceInMs": { + "description": "The " + "minimum " + "time " + "in " + "milliseconds " + "that " + "must " + "pass " + "before " + "the " + "query " + "can " + "be " + "triggered " + "again. " + "This " + "is " + "useful " + "for " + "preventing " + "accidental " + "double-clicks " + "from " + "triggering " + "the " + "query " + "multiple " + "times.", + "oneOf": [ + { + "example": 310.5, + "format": "double", + "type": "number", + }, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "number.", + "example": "${1000}", + "type": "string", + }, + ], + }, + "mockedOutputs": { + "description": "The " + "mocked " + "outputs " + "of " + "the " + "action " + "query. " + "This " + "is " + "useful " + "for " + "testing " + "the " + "app " + "without " + "actually " + "running " + "the " + "action.", + "oneOf": [ + {"type": "string"}, + { + "description": "The " + "mocked " + "outputs " + "of " + "the " + "action " + "query.", + "properties": { + "enabled": { + "description": "Whether " + "to " + "enable " + "the " + "mocked " + "outputs " + "for " + "testing.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "outputs": { + "description": "The " + "mocked " + "outputs " + "of " + "the " + "action " + "query, " + "serialized " + "as " + "JSON.", + "example": '{"status": ' + '"success"}', + "type": "string", + }, + }, + "required": ["enabled"], + "type": "object", + }, + ], + }, + "onlyTriggerManually": { + "description": "Determines " + "when " + "this " + "query " + "is " + "executed. " + "If " + "set " + "to " + "`false`, " + "the " + "query " + "will " + "run " + "when " + "the " + "app " + "loads " + "and " + "whenever " + "any " + "query " + "arguments " + "change. " + "If " + "set " + "to " + "`true`, " + "the " + "query " + "will " + "only " + "run " + "when " + "manually " + "triggered " + "from " + "elsewhere " + "in " + "the " + "app.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "outputs": { + "description": "The " + "post-query " + "transformation " + "function, " + "which " + "is " + "a " + "JavaScript " + "function " + "that " + "changes " + "the " + "query's " + "`.outputs` " + "property " + "after " + "the " + "query's " + "execution.", + "example": "${((outputs) " + "=> " + "{return " + "outputs.body.data})(self.rawOutputs)}", + "type": "string", + }, + "pollingIntervalInMs": { + "description": "If " + "specified, " + "the " + "app " + "will " + "poll " + "the " + "query " + "at " + "the " + "specified " + "interval " + "in " + "milliseconds. " + "The " + "minimum " + "polling " + "interval " + "is " + "15 " + "seconds. " + "The " + "query " + "will " + "only " + "poll " + "when " + "the " + "app's " + "browser " + "tab " + "is " + "active.", + "oneOf": [ + { + "example": 30000.0, + "format": "double", + "minimum": 15000.0, + "type": "number", + }, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "number.", + "example": "${15000}", + "type": "string", + }, + ], + }, + "requiresConfirmation": { + "description": "Whether " + "to " + "prompt " + "the " + "user " + "to " + "confirm " + "this " + "query " + "before " + "it " + "runs.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "showToastOnError": { + "description": "Whether " + "to " + "display " + "a " + "toast " + "to " + "the " + "user " + "when " + "the " + "query " + "returns " + "an " + "error.", + "oneOf": [ + {"type": "boolean"}, + { + "description": "If " + "this " + "is " + "a " + "string, " + "it " + "must " + "be " + "a " + "valid " + "JavaScript " + "expression " + "that " + "evaluates " + "to " + "a " + "boolean.", + "example": "${true}", + "type": "string", + }, + ], + }, + "spec": { + "description": "The " + "definition " + "of " + "the " + "action " + "query.", + "oneOf": [ + {"type": "string"}, + { + "description": "The " + "action " + "query " + "spec " + "object.", + "properties": { + "connectionGroup": { + "description": "The " + "connection " + "group " + "to " + "use " + "for " + "an " + "action " + "query.", + "properties": { + "id": { + "description": "The " + "ID " + "of " + "the " + "connection " + "group.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "tags": { + "description": "The " + "tags " + "of " + "the " + "connection " + "group.", + "items": { + "type": "string" + }, + "type": "array", + }, + }, + "type": "object", + }, + "connectionId": { + "description": "The " + "ID " + "of " + "the " + "custom " + "connection " + "to " + "use " + "for " + "this " + "action " + "query.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "type": "string", + }, + "fqn": { + "description": "The " + "fully " + "qualified " + "name " + "of " + "the " + "action " + "type.", + "example": "com.datadoghq.http.request", + "type": "string", + }, + "inputs": { + "description": "The " + "inputs " + "to " + "the " + "action " + "query. " + "These " + "are " + "the " + "values " + "that " + "are " + "passed " + "to " + "the " + "action " + "when " + "it " + "is " + "triggered.", + "oneOf": [ + {"type": "string"}, + { + "additionalProperties": {}, + "description": "The " + "inputs " + "to " + "the " + "action " + "query. " + "See " + "the " + "[Actions " + "Catalog](https://docs.datadoghq.com/actions/actions_catalog/) " + "for " + "more " + "detail " + "on " + "each " + "action " + "and " + "its " + "inputs.", + "type": "object", + }, + ], + }, + }, + "required": ["fqn"], + "type": "object", + }, + ], + }, + }, + "required": ["spec"], + "type": "object", + }, + "type": { + "default": "action", + "description": "The action query type.", + "enum": ["action"], + "example": "action", + "type": "string", + "x-enum-varnames": ["ACTION"], + }, + }, + "required": ["id", "name", "type", "properties"], + "type": "object", + }, + { + "description": "A " + "data " + "transformer, " + "which " + "is " + "custom " + "JavaScript " + "code " + "that " + "executes " + "and " + "transforms " + "data " + "when " + "its " + "inputs " + "change.", + "properties": { + "id": { + "description": "The " + "ID " + "of " + "the " + "data " + "transformer.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "data " + "transformer. " + "This " + "name " + "is " + "also " + "used " + "to " + "access " + "the " + "transformer's " + "result " + "throughout " + "the " + "app.", + "example": "combineTwoOrders", + "type": "string", + }, + "properties": { + "description": "The " + "properties " + "of " + "the " + "data " + "transformer.", + "properties": { + "outputs": { + "description": "A " + "JavaScript " + "function " + "that " + "returns " + "the " + "transformed " + "data.", + "example": "${(() " + "=> " + "{return " + "{\n" + " " + "allItems: " + "[...fetchOrder1.outputs.items, " + "...fetchOrder2.outputs.items],\n" + "}})()}", + "type": "string", + } + }, + "type": "object", + }, + "type": { + "default": "dataTransform", + "description": "The data transform type.", + "enum": ["dataTransform"], + "example": "dataTransform", + "type": "string", + "x-enum-varnames": ["DATATRANSFORM"], + }, + }, + "required": ["id", "name", "type", "properties"], + "type": "object", + }, + { + "description": "A " + "variable, " + "which " + "can " + "be " + "set " + "and " + "read " + "by " + "other " + "components " + "in " + "the " + "app.", + "properties": { + "id": { + "description": "The ID of the state variable.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "name": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "state " + "variable. " + "This " + "name " + "is " + "also " + "used " + "to " + "access " + "the " + "variable's " + "value " + "throughout " + "the " + "app.", + "example": "ordersToSubmit", + "type": "string", + }, + "properties": { + "description": "The " + "properties " + "of " + "the " + "state " + "variable.", + "properties": { + "defaultValue": { + "description": "The " + "default " + "value " + "of " + "the " + "state " + "variable.", + "example": "${['order_3145', " + "'order_4920']}", + } + }, + "type": "object", + }, + "type": { + "default": "stateVariable", + "description": "The state variable type.", + "enum": ["stateVariable"], + "example": "stateVariable", + "type": "string", + "x-enum-varnames": ["STATEVARIABLE"], + }, + }, + "required": ["id", "name", "type", "properties"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "rootInstanceName": { + "description": "The " + "new " + "name " + "of " + "the " + "root " + "component " + "of " + "the " + "app. " + "This " + "must " + "be " + "a " + "`grid` " + "component " + "that " + "contains " + "all " + "other " + "components.", + "type": "string", + }, + "tags": { + "description": "The " + "new " + "list " + "of " + "tags " + "for " + "the " + "app, " + "which " + "can " + "be " + "used " + "to " + "filter " + "apps. " + "If " + "this " + "field " + "is " + "set, " + "any " + "existing " + "tags " + "not " + "included " + "in " + "the " + "request " + "are " + "removed.", + "example": ["service:webshop-backend", "team:webshop"], + "items": { + "description": "An individual tag for the app.", + "type": "string", + }, + "type": "array", + }, + }, + "type": "object", + }, + "id": { + "description": "The ID of the app to " + "update. The app ID must " + "match the ID in the URL " + "path.", + "example": "65bb1f25-52e1-4510-9f8d-22d1516ed693", + "format": "uuid", + "type": "string", + }, + "type": { + "default": "appDefinitions", + "description": "The app definition type.", + "enum": ["appDefinitions"], + "example": "appDefinitions", + "type": "string", + "x-enum-varnames": ["APPDEFINITIONS"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "CREATEAUTHNMAPPING_REQUEST_BODY_SCHEMA": { + "description": "Request for creating an AuthN Mapping.", + "properties": { + "data": { + "description": "Data for creating an AuthN Mapping.", + "properties": { + "attributes": { + "description": "Key/Value pair of attributes used for create request.", + "properties": { + "attribute_key": { + "description": "Key " + "portion " + "of " + "a " + "key/value " + "pair " + "of " + "the " + "attribute " + "sent " + "from " + "the " + "Identity " + "Provider.", + "example": "member-of", + "type": "string", + }, + "attribute_value": { + "description": "Value " + "portion " + "of " + "a " + "key/value " + "pair " + "of " + "the " + "attribute " + "sent " + "from " + "the " + "Identity " + "Provider.", + "example": "Development", + "type": "string", + }, + }, + "type": "object", + }, + "relationships": { + "description": "Relationship " + "of AuthN " + "Mapping " + "create " + "object to a " + "Role or " + "Team.", + "oneOf": [ + { + "description": "Relationship of AuthN Mapping to a Role.", + "properties": { + "role": { + "description": "Relationship to role.", + "properties": { + "data": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string", + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": ["roles"], + "example": "roles", + "type": "string", + "x-enum-varnames": ["ROLES"], + }, + }, + "type": "object", + } + }, + "type": "object", + } + }, + "required": ["role"], + "type": "object", + }, + { + "description": "Relationship of AuthN Mapping to a Team.", + "properties": { + "team": { + "description": "Relationship to team.", + "properties": { + "data": { + "description": "Relationship to Team object.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "team.", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string", + }, + "type": { + "default": "team", + "description": "Team type", + "enum": ["team"], + "example": "team", + "type": "string", + "x-enum-varnames": ["TEAM"], + }, + }, + "type": "object", + } + }, + "type": "object", + } + }, + "required": ["team"], + "type": "object", + }, + ], + }, + "type": { + "default": "authn_mappings", + "description": "AuthN Mappings resource type.", + "enum": ["authn_mappings"], + "example": "authn_mappings", + "type": "string", + "x-enum-varnames": ["AUTHN_MAPPINGS"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "EDITAUTHNMAPPING_REQUEST_BODY_SCHEMA": { + "description": "Request to update an AuthN Mapping.", + "properties": { + "data": { + "description": "Data for updating an AuthN Mapping.", + "properties": { + "attributes": { + "description": "Key/Value pair of attributes used for update request.", + "properties": { + "attribute_key": { + "description": "Key " + "portion " + "of " + "a " + "key/value " + "pair " + "of " + "the " + "attribute " + "sent " + "from " + "the " + "Identity " + "Provider.", + "example": "member-of", + "type": "string", + }, + "attribute_value": { + "description": "Value " + "portion " + "of " + "a " + "key/value " + "pair " + "of " + "the " + "attribute " + "sent " + "from " + "the " + "Identity " + "Provider.", + "example": "Development", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "ID of the AuthN Mapping.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string", + }, + "relationships": { + "description": "Relationship " + "of AuthN " + "Mapping " + "update " + "object to a " + "Role or " + "Team.", + "oneOf": [ + { + "description": "Relationship of AuthN Mapping to a Role.", + "properties": { + "role": { + "description": "Relationship to role.", + "properties": { + "data": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string", + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": ["roles"], + "example": "roles", + "type": "string", + "x-enum-varnames": ["ROLES"], + }, + }, + "type": "object", + } + }, + "type": "object", + } + }, + "required": ["role"], + "type": "object", + }, + { + "description": "Relationship of AuthN Mapping to a Team.", + "properties": { + "team": { + "description": "Relationship to team.", + "properties": { + "data": { + "description": "Relationship to Team object.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "team.", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string", + }, + "type": { + "default": "team", + "description": "Team type", + "enum": ["team"], + "example": "team", + "type": "string", + "x-enum-varnames": ["TEAM"], + }, + }, + "type": "object", + } + }, + "type": "object", + } + }, + "required": ["team"], + "type": "object", + }, + ], + }, + "type": { + "default": "authn_mappings", + "description": "AuthN Mappings resource type.", + "enum": ["authn_mappings"], + "example": "authn_mappings", + "type": "string", + "x-enum-varnames": ["AUTHN_MAPPINGS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATECASEATTRIBUTES_REQUEST_BODY_SCHEMA": { + "description": "Case update attributes request", + "properties": { + "data": { + "description": "Case update attributes", + "properties": { + "attributes": { + "description": "Case update attributes attributes", + "properties": { + "attributes": { + "additionalProperties": { + "items": {"type": "string"}, + "type": "array", + }, + "description": "The definition of `CaseObjectAttributes` object.", + "type": "object", + } + }, + "required": ["attributes"], + "type": "object", + }, + "type": { + "default": "case", + "description": "Case resource type", + "enum": ["case"], + "example": "case", + "type": "string", + "x-enum-varnames": ["CASE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATECASECUSTOMATTRIBUTE_REQUEST_BODY_SCHEMA": { + "description": "Case update custom attribute request", + "properties": { + "data": { + "description": "Case update custom attribute", + "properties": { + "attributes": { + "description": "Custom attribute values", + "properties": { + "is_multi": { + "description": "If true, value must be an array", + "example": False, + "type": "boolean", + }, + "type": { + "description": "Custom attributes type", + "enum": ["URL", "TEXT", "NUMBER"], + "example": "NUMBER", + "type": "string", + "x-enum-varnames": ["URL", "TEXT", "NUMBER"], + }, + "value": { + "description": "Union of supported value for a custom attribute", + "oneOf": [ + { + "description": "Value of TEXT/URL custom attribute", + "type": "string", + }, + { + "description": "Value of multi TEXT/URL custom attribute", + "items": { + "description": "TEXT/URL Value", + "type": "string", + }, + "type": "array", + }, + { + "description": "Value of NUMBER custom attribute", + "format": "double", + "type": "number", + }, + { + "description": "Values of multi NUMBER custom attribute", + "items": { + "description": "NUMBER value", + "format": "double", + "type": "number", + }, + "type": "array", + }, + ], + }, + }, + "required": ["type", "is_multi", "value"], + "type": "object", + }, + "type": { + "default": "case", + "description": "Case resource type", + "enum": ["case"], + "example": "case", + "type": "string", + "x-enum-varnames": ["CASE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "MANAGESOFTWARECATALOGENTITY_REQUEST_BODY_SCHEMA": { + "description": "Create or update entity request.", + "oneOf": [ + { + "description": "Entity schema v3.", + "oneOf": [ + { + "additionalProperties": False, + "description": "Schema for service entities.", + "properties": { + "apiVersion": { + "description": "The version of " + "the schema data " + "that was used to " + "populate this " + "entity's data. " + "This could be via " + "the API, " + "Terraform, or " + "YAML file in a " + "repository. The " + "field is known as " + "schema-version in " + "the previous " + "version.", + "enum": ["v3", "v2.2", "v2.1", "v2"], + "example": "v3", + "type": "string", + "x-enum-varnames": ["V3", "V2_2", "V2_1", "V2"], + }, + "datadog": { + "additionalProperties": False, + "description": "Datadog product " + "integrations for the " + "service entity.", + "properties": { + "codeLocations": { + "additionalProperties": False, + "description": "Schema " + "for " + "mapping " + "source " + "code " + "locations " + "to " + "an " + "entity.", + "items": { + "additionalProperties": False, + "description": "Code location item.", + "properties": { + "paths": { + "description": "The " + "paths " + "(glob) " + "to " + "the " + "source " + "code " + "of " + "the " + "service.", + "items": {"type": "string"}, + "type": "array", + }, + "repositoryURL": { + "description": "The " + "repository " + "path " + "of " + "the " + "source " + "code " + "of " + "the " + "entity.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "events": { + "additionalProperties": False, + "description": "Events associations.", + "items": { + "additionalProperties": False, + "description": "Events association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "logs": { + "additionalProperties": False, + "description": "Logs association.", + "items": { + "additionalProperties": False, + "description": "Log association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "performanceData": { + "additionalProperties": False, + "description": "Performance stats association.", + "properties": { + "tags": { + "description": "A " + "list " + "of " + "APM " + "entity " + "tags " + "that " + "associates " + "the " + "APM " + "Stats " + "data " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + "pipelines": { + "additionalProperties": False, + "description": "CI Pipelines association.", + "properties": { + "fingerprints": { + "description": "A " + "list " + "of " + "CI " + "Fingerprints " + "that " + "associate " + "CI " + "Pipelines " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "extensions": { + "additionalProperties": {}, + "description": "Custom " + "extensions. This " + "is the " + "free-formed field " + "to send " + "client-side " + "metadata. No " + "Datadog features " + "are affected by " + "this field.", + "type": "object", + }, + "integrations": { + "additionalProperties": False, + "description": "A base schema " + "for defining " + "third-party " + "integrations.", + "properties": { + "opsgenie": { + "additionalProperties": False, + "description": "An Opsgenie integration schema.", + "properties": { + "region": { + "description": "The " + "region " + "for " + "the " + "Opsgenie " + "integration.", + "minLength": 1, + "type": "string", + }, + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "Opsgenie " + "integration.", + "example": "https://www.opsgenie.com/service/shopping-cart", + "minLength": 1, + "type": "string", + }, + }, + "required": ["serviceURL"], + "type": "object", + }, + "pagerduty": { + "additionalProperties": False, + "description": "A PagerDuty integration schema.", + "properties": { + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "PagerDuty " + "integration.", + "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", + "minLength": 1, + "type": "string", + } + }, + "required": ["serviceURL"], + "type": "object", + }, + }, + "type": "object", + }, + "kind": { + "description": "The definition of Entity V3 Service Kind object.", + "enum": ["service"], + "example": "service", + "type": "string", + "x-enum-varnames": ["SERVICE"], + }, + "metadata": { + "additionalProperties": False, + "description": "The definition of Entity V3 Metadata object.", + "properties": { + "additionalOwners": { + "additionalProperties": False, + "description": "The " + "additional " + "owners " + "of " + "the " + "entity, " + "usually " + "a " + "team.", + "items": { + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Additional " + "Owners " + "Items " + "object.", + "properties": { + "name": { + "description": "Team name.", + "example": "", + "type": "string", + }, + "type": { + "description": "Team type.", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "contacts": { + "additionalProperties": False, + "description": "A list of contacts for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Contacts " + "Items " + "object.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://slack/", + "type": "string", + }, + "name": { + "description": "Contact name.", + "minLength": 2, + "type": "string", + }, + "type": { + "description": "Contact type.", + "example": "slack", + "type": "string", + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Short " + "description " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "description " + "for " + "display.", + "type": "string", + }, + "displayName": { + "description": "User " + "friendly " + "name " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "display " + "name " + "for " + "display.", + "type": "string", + }, + "id": { + "description": "A " + "read-only " + "globally " + "unique " + "identifier " + "for " + "the " + "entity " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "example": "4b163705-23c0-4573-b2fb-f6cea2163fcb", + "minLength": 1, + "type": "string", + }, + "inheritFrom": { + "description": "The " + "entity " + "reference " + "from " + "which " + "to " + "inherit " + "metadata", + "example": "application:default/myapp", + "type": "string", + }, + "links": { + "additionalProperties": False, + "description": "A list of links for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Links " + "Items " + "object.", + "properties": { + "name": { + "description": "Link name.", + "example": "mylink", + "type": "string", + }, + "provider": { + "description": "Link provider.", + "type": "string", + }, + "type": { + "default": "other", + "description": "Link type.", + "example": "link", + "type": "string", + }, + "url": { + "description": "Link URL.", + "example": "https://mylink", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "managed": { + "additionalProperties": {}, + "description": "A " + "read-only " + "set " + "of " + "Datadog " + "managed " + "attributes " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "type": "object", + }, + "name": { + "description": "Unique " + "name " + "given " + "to " + "an " + "entity " + "under " + "the " + "kind/namespace.", + "example": "myService", + "minLength": 1, + "type": "string", + }, + "namespace": { + "description": "Namespace " + "is " + "a " + "part " + "of " + "unique " + "identifier. " + "It " + "has " + "a " + "default " + "value " + "of " + "'default'.", + "example": "default", + "minLength": 1, + "type": "string", + }, + "owner": { + "description": "The owner of the entity, usually a team.", + "type": "string", + }, + "tags": { + "description": "A set of custom tags.", + "example": ["this:tag", "that:tag"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["name"], + "type": "object", + }, + "spec": { + "additionalProperties": False, + "description": "The definition of Entity V3 Service Spec object.", + "properties": { + "componentOf": { + "description": "A " + "list " + "of " + "components " + "the " + "service " + "is " + "a " + "part " + "of", + "items": {"type": "string"}, + "type": "array", + }, + "dependsOn": { + "description": "A " + "list " + "of " + "components " + "the " + "service " + "depends " + "on.", + "items": {"type": "string"}, + "type": "array", + }, + "languages": { + "description": "The service's programming language.", + "items": {"type": "string"}, + "type": "array", + }, + "lifecycle": { + "description": "The lifecycle state of the component.", + "minLength": 1, + "type": "string", + }, + "tier": { + "description": "The importance of the component.", + "minLength": 1, + "type": "string", + }, + "type": { + "description": "The type of service.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "required": ["apiVersion", "kind", "metadata"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Schema for datastore entities.", + "properties": { + "apiVersion": { + "description": "The version of " + "the schema data " + "that was used to " + "populate this " + "entity's data. " + "This could be via " + "the API, " + "Terraform, or " + "YAML file in a " + "repository. The " + "field is known as " + "schema-version in " + "the previous " + "version.", + "enum": ["v3", "v2.2", "v2.1", "v2"], + "example": "v3", + "type": "string", + "x-enum-varnames": ["V3", "V2_2", "V2_1", "V2"], + }, + "datadog": { + "additionalProperties": False, + "description": "Datadog product " + "integrations for the " + "datastore entity.", + "properties": { + "events": { + "additionalProperties": False, + "description": "Events associations.", + "items": { + "additionalProperties": False, + "description": "Events association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "logs": { + "additionalProperties": False, + "description": "Logs association.", + "items": { + "additionalProperties": False, + "description": "Log association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "performanceData": { + "additionalProperties": False, + "description": "Performance stats association.", + "properties": { + "tags": { + "description": "A " + "list " + "of " + "APM " + "entity " + "tags " + "that " + "associates " + "the " + "APM " + "Stats " + "data " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "extensions": { + "additionalProperties": {}, + "description": "Custom " + "extensions. This " + "is the " + "free-formed field " + "to send client " + "side metadata. No " + "Datadog features " + "are affected by " + "this field.", + "type": "object", + }, + "integrations": { + "additionalProperties": False, + "description": "A base schema " + "for defining " + "third-party " + "integrations.", + "properties": { + "opsgenie": { + "additionalProperties": False, + "description": "An Opsgenie integration schema.", + "properties": { + "region": { + "description": "The " + "region " + "for " + "the " + "Opsgenie " + "integration.", + "minLength": 1, + "type": "string", + }, + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "Opsgenie " + "integration.", + "example": "https://www.opsgenie.com/service/shopping-cart", + "minLength": 1, + "type": "string", + }, + }, + "required": ["serviceURL"], + "type": "object", + }, + "pagerduty": { + "additionalProperties": False, + "description": "A PagerDuty integration schema.", + "properties": { + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "PagerDuty " + "integration.", + "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", + "minLength": 1, + "type": "string", + } + }, + "required": ["serviceURL"], + "type": "object", + }, + }, + "type": "object", + }, + "kind": { + "description": "The definition of Entity V3 Datastore Kind object.", + "enum": ["datastore"], + "example": "datastore", + "type": "string", + "x-enum-varnames": ["DATASTORE"], + }, + "metadata": { + "additionalProperties": False, + "description": "The definition of Entity V3 Metadata object.", + "properties": { + "additionalOwners": { + "additionalProperties": False, + "description": "The " + "additional " + "owners " + "of " + "the " + "entity, " + "usually " + "a " + "team.", + "items": { + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Additional " + "Owners " + "Items " + "object.", + "properties": { + "name": { + "description": "Team name.", + "example": "", + "type": "string", + }, + "type": { + "description": "Team type.", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "contacts": { + "additionalProperties": False, + "description": "A list of contacts for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Contacts " + "Items " + "object.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://slack/", + "type": "string", + }, + "name": { + "description": "Contact name.", + "minLength": 2, + "type": "string", + }, + "type": { + "description": "Contact type.", + "example": "slack", + "type": "string", + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Short " + "description " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "description " + "for " + "display.", + "type": "string", + }, + "displayName": { + "description": "User " + "friendly " + "name " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "display " + "name " + "for " + "display.", + "type": "string", + }, + "id": { + "description": "A " + "read-only " + "globally " + "unique " + "identifier " + "for " + "the " + "entity " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "example": "4b163705-23c0-4573-b2fb-f6cea2163fcb", + "minLength": 1, + "type": "string", + }, + "inheritFrom": { + "description": "The " + "entity " + "reference " + "from " + "which " + "to " + "inherit " + "metadata", + "example": "application:default/myapp", + "type": "string", + }, + "links": { + "additionalProperties": False, + "description": "A list of links for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Links " + "Items " + "object.", + "properties": { + "name": { + "description": "Link name.", + "example": "mylink", + "type": "string", + }, + "provider": { + "description": "Link provider.", + "type": "string", + }, + "type": { + "default": "other", + "description": "Link type.", + "example": "link", + "type": "string", + }, + "url": { + "description": "Link URL.", + "example": "https://mylink", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "managed": { + "additionalProperties": {}, + "description": "A " + "read-only " + "set " + "of " + "Datadog " + "managed " + "attributes " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "type": "object", + }, + "name": { + "description": "Unique " + "name " + "given " + "to " + "an " + "entity " + "under " + "the " + "kind/namespace.", + "example": "myService", + "minLength": 1, + "type": "string", + }, + "namespace": { + "description": "Namespace " + "is " + "a " + "part " + "of " + "unique " + "identifier. " + "It " + "has " + "a " + "default " + "value " + "of " + "'default'.", + "example": "default", + "minLength": 1, + "type": "string", + }, + "owner": { + "description": "The owner of the entity, usually a team.", + "type": "string", + }, + "tags": { + "description": "A set of custom tags.", + "example": ["this:tag", "that:tag"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["name"], + "type": "object", + }, + "spec": { + "additionalProperties": False, + "description": "The definition of Entity V3 Datastore Spec object.", + "properties": { + "componentOf": { + "description": "A " + "list " + "of " + "components " + "the " + "datastore " + "is " + "a " + "part " + "of", + "items": {"type": "string"}, + "type": "array", + }, + "lifecycle": { + "description": "The lifecycle state of the datastore.", + "minLength": 1, + "type": "string", + }, + "tier": { + "description": "The importance of the datastore.", + "minLength": 1, + "type": "string", + }, + "type": { + "description": "The type of datastore.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "required": ["apiVersion", "kind", "metadata"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Schema for queue entities.", + "properties": { + "apiVersion": { + "description": "The version of " + "the schema data " + "that was used to " + "populate this " + "entity's data. " + "This could be via " + "the API, " + "Terraform, or " + "YAML file in a " + "repository. The " + "field is known as " + "schema-version in " + "the previous " + "version.", + "enum": ["v3", "v2.2", "v2.1", "v2"], + "example": "v3", + "type": "string", + "x-enum-varnames": ["V3", "V2_2", "V2_1", "V2"], + }, + "datadog": { + "additionalProperties": False, + "description": "Datadog product " + "integrations for the " + "datastore entity.", + "properties": { + "events": { + "additionalProperties": False, + "description": "Events associations.", + "items": { + "additionalProperties": False, + "description": "Events association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "logs": { + "additionalProperties": False, + "description": "Logs association.", + "items": { + "additionalProperties": False, + "description": "Log association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "performanceData": { + "additionalProperties": False, + "description": "Performance stats association.", + "properties": { + "tags": { + "description": "A " + "list " + "of " + "APM " + "entity " + "tags " + "that " + "associates " + "the " + "APM " + "Stats " + "data " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "extensions": { + "additionalProperties": {}, + "description": "Custom " + "extensions. This " + "is the " + "free-formed field " + "to send " + "client-side " + "metadata. No " + "Datadog features " + "are affected by " + "this field.", + "type": "object", + }, + "integrations": { + "additionalProperties": False, + "description": "A base schema " + "for defining " + "third-party " + "integrations.", + "properties": { + "opsgenie": { + "additionalProperties": False, + "description": "An Opsgenie integration schema.", + "properties": { + "region": { + "description": "The " + "region " + "for " + "the " + "Opsgenie " + "integration.", + "minLength": 1, + "type": "string", + }, + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "Opsgenie " + "integration.", + "example": "https://www.opsgenie.com/service/shopping-cart", + "minLength": 1, + "type": "string", + }, + }, + "required": ["serviceURL"], + "type": "object", + }, + "pagerduty": { + "additionalProperties": False, + "description": "A PagerDuty integration schema.", + "properties": { + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "PagerDuty " + "integration.", + "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", + "minLength": 1, + "type": "string", + } + }, + "required": ["serviceURL"], + "type": "object", + }, + }, + "type": "object", + }, + "kind": { + "description": "The definition of Entity V3 Queue Kind object.", + "enum": ["queue"], + "example": "queue", + "type": "string", + "x-enum-varnames": ["QUEUE"], + }, + "metadata": { + "additionalProperties": False, + "description": "The definition of Entity V3 Metadata object.", + "properties": { + "additionalOwners": { + "additionalProperties": False, + "description": "The " + "additional " + "owners " + "of " + "the " + "entity, " + "usually " + "a " + "team.", + "items": { + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Additional " + "Owners " + "Items " + "object.", + "properties": { + "name": { + "description": "Team name.", + "example": "", + "type": "string", + }, + "type": { + "description": "Team type.", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "contacts": { + "additionalProperties": False, + "description": "A list of contacts for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Contacts " + "Items " + "object.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://slack/", + "type": "string", + }, + "name": { + "description": "Contact name.", + "minLength": 2, + "type": "string", + }, + "type": { + "description": "Contact type.", + "example": "slack", + "type": "string", + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Short " + "description " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "description " + "for " + "display.", + "type": "string", + }, + "displayName": { + "description": "User " + "friendly " + "name " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "display " + "name " + "for " + "display.", + "type": "string", + }, + "id": { + "description": "A " + "read-only " + "globally " + "unique " + "identifier " + "for " + "the " + "entity " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "example": "4b163705-23c0-4573-b2fb-f6cea2163fcb", + "minLength": 1, + "type": "string", + }, + "inheritFrom": { + "description": "The " + "entity " + "reference " + "from " + "which " + "to " + "inherit " + "metadata", + "example": "application:default/myapp", + "type": "string", + }, + "links": { + "additionalProperties": False, + "description": "A list of links for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Links " + "Items " + "object.", + "properties": { + "name": { + "description": "Link name.", + "example": "mylink", + "type": "string", + }, + "provider": { + "description": "Link provider.", + "type": "string", + }, + "type": { + "default": "other", + "description": "Link type.", + "example": "link", + "type": "string", + }, + "url": { + "description": "Link URL.", + "example": "https://mylink", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "managed": { + "additionalProperties": {}, + "description": "A " + "read-only " + "set " + "of " + "Datadog " + "managed " + "attributes " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "type": "object", + }, + "name": { + "description": "Unique " + "name " + "given " + "to " + "an " + "entity " + "under " + "the " + "kind/namespace.", + "example": "myService", + "minLength": 1, + "type": "string", + }, + "namespace": { + "description": "Namespace " + "is " + "a " + "part " + "of " + "unique " + "identifier. " + "It " + "has " + "a " + "default " + "value " + "of " + "'default'.", + "example": "default", + "minLength": 1, + "type": "string", + }, + "owner": { + "description": "The owner of the entity, usually a team.", + "type": "string", + }, + "tags": { + "description": "A set of custom tags.", + "example": ["this:tag", "that:tag"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["name"], + "type": "object", + }, + "spec": { + "additionalProperties": False, + "description": "The definition of Entity V3 Queue Spec object.", + "properties": { + "componentOf": { + "description": "A " + "list " + "of " + "components " + "the " + "queue " + "is " + "a " + "part " + "of", + "items": {"type": "string"}, + "type": "array", + }, + "lifecycle": { + "description": "The lifecycle state of the queue.", + "minLength": 1, + "type": "string", + }, + "tier": { + "description": "The importance of the queue.", + "minLength": 1, + "type": "string", + }, + "type": {"description": "The type of queue.", "type": "string"}, + }, + "type": "object", + }, + }, + "required": ["apiVersion", "kind", "metadata"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Schema for system entities.", + "properties": { + "apiVersion": { + "description": "The version of " + "the schema data " + "that was used to " + "populate this " + "entity's data. " + "This could be via " + "the API, " + "Terraform, or " + "YAML file in a " + "repository. The " + "field is known as " + "schema-version in " + "the previous " + "version.", + "enum": ["v3", "v2.2", "v2.1", "v2"], + "example": "v3", + "type": "string", + "x-enum-varnames": ["V3", "V2_2", "V2_1", "V2"], + }, + "datadog": { + "additionalProperties": False, + "description": "Datadog product " + "integrations for the " + "service entity.", + "properties": { + "events": { + "additionalProperties": False, + "description": "Events associations.", + "items": { + "additionalProperties": False, + "description": "Events association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "logs": { + "additionalProperties": False, + "description": "Logs association.", + "items": { + "additionalProperties": False, + "description": "Log association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "performanceData": { + "additionalProperties": False, + "description": "Performance stats association.", + "properties": { + "tags": { + "description": "A " + "list " + "of " + "APM " + "entity " + "tags " + "that " + "associates " + "the " + "APM " + "Stats " + "data " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + "pipelines": { + "additionalProperties": False, + "description": "CI Pipelines association.", + "properties": { + "fingerprints": { + "description": "A " + "list " + "of " + "CI " + "Fingerprints " + "that " + "associate " + "CI " + "Pipelines " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "extensions": { + "additionalProperties": {}, + "description": "Custom " + "extensions. This " + "is the " + "free-formed field " + "to send " + "client-side " + "metadata. No " + "Datadog features " + "are affected by " + "this field.", + "type": "object", + }, + "integrations": { + "additionalProperties": False, + "description": "A base schema " + "for defining " + "third-party " + "integrations.", + "properties": { + "opsgenie": { + "additionalProperties": False, + "description": "An Opsgenie integration schema.", + "properties": { + "region": { + "description": "The " + "region " + "for " + "the " + "Opsgenie " + "integration.", + "minLength": 1, + "type": "string", + }, + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "Opsgenie " + "integration.", + "example": "https://www.opsgenie.com/service/shopping-cart", + "minLength": 1, + "type": "string", + }, + }, + "required": ["serviceURL"], + "type": "object", + }, + "pagerduty": { + "additionalProperties": False, + "description": "A PagerDuty integration schema.", + "properties": { + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "PagerDuty " + "integration.", + "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", + "minLength": 1, + "type": "string", + } + }, + "required": ["serviceURL"], + "type": "object", + }, + }, + "type": "object", + }, + "kind": { + "description": "The definition of Entity V3 System Kind object.", + "enum": ["system"], + "example": "system", + "type": "string", + "x-enum-varnames": ["SYSTEM"], + }, + "metadata": { + "additionalProperties": False, + "description": "The definition of Entity V3 Metadata object.", + "properties": { + "additionalOwners": { + "additionalProperties": False, + "description": "The " + "additional " + "owners " + "of " + "the " + "entity, " + "usually " + "a " + "team.", + "items": { + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Additional " + "Owners " + "Items " + "object.", + "properties": { + "name": { + "description": "Team name.", + "example": "", + "type": "string", + }, + "type": { + "description": "Team type.", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "contacts": { + "additionalProperties": False, + "description": "A list of contacts for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Contacts " + "Items " + "object.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://slack/", + "type": "string", + }, + "name": { + "description": "Contact name.", + "minLength": 2, + "type": "string", + }, + "type": { + "description": "Contact type.", + "example": "slack", + "type": "string", + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Short " + "description " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "description " + "for " + "display.", + "type": "string", + }, + "displayName": { + "description": "User " + "friendly " + "name " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "display " + "name " + "for " + "display.", + "type": "string", + }, + "id": { + "description": "A " + "read-only " + "globally " + "unique " + "identifier " + "for " + "the " + "entity " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "example": "4b163705-23c0-4573-b2fb-f6cea2163fcb", + "minLength": 1, + "type": "string", + }, + "inheritFrom": { + "description": "The " + "entity " + "reference " + "from " + "which " + "to " + "inherit " + "metadata", + "example": "application:default/myapp", + "type": "string", + }, + "links": { + "additionalProperties": False, + "description": "A list of links for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Links " + "Items " + "object.", + "properties": { + "name": { + "description": "Link name.", + "example": "mylink", + "type": "string", + }, + "provider": { + "description": "Link provider.", + "type": "string", + }, + "type": { + "default": "other", + "description": "Link type.", + "example": "link", + "type": "string", + }, + "url": { + "description": "Link URL.", + "example": "https://mylink", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "managed": { + "additionalProperties": {}, + "description": "A " + "read-only " + "set " + "of " + "Datadog " + "managed " + "attributes " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "type": "object", + }, + "name": { + "description": "Unique " + "name " + "given " + "to " + "an " + "entity " + "under " + "the " + "kind/namespace.", + "example": "myService", + "minLength": 1, + "type": "string", + }, + "namespace": { + "description": "Namespace " + "is " + "a " + "part " + "of " + "unique " + "identifier. " + "It " + "has " + "a " + "default " + "value " + "of " + "'default'.", + "example": "default", + "minLength": 1, + "type": "string", + }, + "owner": { + "description": "The owner of the entity, usually a team.", + "type": "string", + }, + "tags": { + "description": "A set of custom tags.", + "example": ["this:tag", "that:tag"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["name"], + "type": "object", + }, + "spec": { + "additionalProperties": False, + "description": "The definition of Entity V3 System Spec object.", + "properties": { + "components": { + "description": "A " + "list " + "of " + "components " + "belongs " + "to " + "the " + "system.", + "items": {"type": "string"}, + "type": "array", + }, + "lifecycle": { + "description": "The lifecycle state of the component.", + "minLength": 1, + "type": "string", + }, + "tier": { + "description": "An " + "entity " + "reference " + "to " + "the " + "owner " + "of " + "the " + "component.", + "minLength": 1, + "type": "string", + }, + }, + "type": "object", + }, + }, + "required": ["apiVersion", "kind", "metadata"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "Schema for API entities.", + "properties": { + "apiVersion": { + "description": "The version of " + "the schema data " + "that was used to " + "populate this " + "entity's data. " + "This could be via " + "the API, " + "Terraform, or " + "YAML file in a " + "repository. The " + "field is known as " + "schema-version in " + "the previous " + "version.", + "enum": ["v3", "v2.2", "v2.1", "v2"], + "example": "v3", + "type": "string", + "x-enum-varnames": ["V3", "V2_2", "V2_1", "V2"], + }, + "datadog": { + "additionalProperties": False, + "description": "Datadog product integrations for the API entity.", + "properties": { + "codeLocations": { + "additionalProperties": False, + "description": "Schema " + "for " + "mapping " + "source " + "code " + "locations " + "to " + "an " + "entity.", + "items": { + "additionalProperties": False, + "description": "Code location item.", + "properties": { + "paths": { + "description": "The " + "paths " + "(glob) " + "to " + "the " + "source " + "code " + "of " + "the " + "service.", + "items": {"type": "string"}, + "type": "array", + }, + "repositoryURL": { + "description": "The " + "repository " + "path " + "of " + "the " + "source " + "code " + "of " + "the " + "entity.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "events": { + "additionalProperties": False, + "description": "Events associations.", + "items": { + "additionalProperties": False, + "description": "Events association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "logs": { + "additionalProperties": False, + "description": "Logs association.", + "items": { + "additionalProperties": False, + "description": "Log association item.", + "properties": { + "name": { + "description": "The name of the query.", + "type": "string", + }, + "query": { + "description": "The query to run.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "performanceData": { + "additionalProperties": False, + "description": "Performance stats association.", + "properties": { + "tags": { + "description": "A " + "list " + "of " + "APM " + "entity " + "tags " + "that " + "associates " + "the " + "APM " + "Stats " + "data " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + "pipelines": { + "additionalProperties": False, + "description": "CI Pipelines association.", + "properties": { + "fingerprints": { + "description": "A " + "list " + "of " + "CI " + "Fingerprints " + "that " + "associate " + "CI " + "Pipelines " + "with " + "the " + "entity.", + "items": {"type": "string"}, + "type": "array", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "extensions": { + "additionalProperties": {}, + "description": "Custom " + "extensions. This " + "is the " + "free-formed field " + "to send " + "client-side " + "metadata. No " + "Datadog features " + "are affected by " + "this field.", + "type": "object", + }, + "integrations": { + "additionalProperties": False, + "description": "A base schema " + "for defining " + "third-party " + "integrations.", + "properties": { + "opsgenie": { + "additionalProperties": False, + "description": "An Opsgenie integration schema.", + "properties": { + "region": { + "description": "The " + "region " + "for " + "the " + "Opsgenie " + "integration.", + "minLength": 1, + "type": "string", + }, + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "Opsgenie " + "integration.", + "example": "https://www.opsgenie.com/service/shopping-cart", + "minLength": 1, + "type": "string", + }, + }, + "required": ["serviceURL"], + "type": "object", + }, + "pagerduty": { + "additionalProperties": False, + "description": "A PagerDuty integration schema.", + "properties": { + "serviceURL": { + "description": "The " + "service " + "URL " + "for " + "the " + "PagerDuty " + "integration.", + "example": "https://www.pagerduty.com/service-directory/Pshopping-cart", + "minLength": 1, + "type": "string", + } + }, + "required": ["serviceURL"], + "type": "object", + }, + }, + "type": "object", + }, + "kind": { + "description": "The definition of Entity V3 API Kind object.", + "enum": ["api"], + "example": "api", + "type": "string", + "x-enum-varnames": ["API"], + }, + "metadata": { + "additionalProperties": False, + "description": "The definition of Entity V3 Metadata object.", + "properties": { + "additionalOwners": { + "additionalProperties": False, + "description": "The " + "additional " + "owners " + "of " + "the " + "entity, " + "usually " + "a " + "team.", + "items": { + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Additional " + "Owners " + "Items " + "object.", + "properties": { + "name": { + "description": "Team name.", + "example": "", + "type": "string", + }, + "type": { + "description": "Team type.", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "contacts": { + "additionalProperties": False, + "description": "A list of contacts for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Contacts " + "Items " + "object.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://slack/", + "type": "string", + }, + "name": { + "description": "Contact name.", + "minLength": 2, + "type": "string", + }, + "type": { + "description": "Contact type.", + "example": "slack", + "type": "string", + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + "type": "array", + }, + "description": { + "description": "Short " + "description " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "description " + "for " + "display.", + "type": "string", + }, + "displayName": { + "description": "User " + "friendly " + "name " + "of " + "the " + "entity. " + "The " + "UI " + "can " + "leverage " + "the " + "display " + "name " + "for " + "display.", + "type": "string", + }, + "id": { + "description": "A " + "read-only " + "globally " + "unique " + "identifier " + "for " + "the " + "entity " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "example": "4b163705-23c0-4573-b2fb-f6cea2163fcb", + "minLength": 1, + "type": "string", + }, + "inheritFrom": { + "description": "The " + "entity " + "reference " + "from " + "which " + "to " + "inherit " + "metadata", + "example": "application:default/myapp", + "type": "string", + }, + "links": { + "additionalProperties": False, + "description": "A list of links for the entity.", + "items": { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "Entity " + "V3 " + "Metadata " + "Links " + "Items " + "object.", + "properties": { + "name": { + "description": "Link name.", + "example": "mylink", + "type": "string", + }, + "provider": { + "description": "Link provider.", + "type": "string", + }, + "type": { + "default": "other", + "description": "Link type.", + "example": "link", + "type": "string", + }, + "url": { + "description": "Link URL.", + "example": "https://mylink", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "managed": { + "additionalProperties": {}, + "description": "A " + "read-only " + "set " + "of " + "Datadog " + "managed " + "attributes " + "generated " + "by " + "Datadog. " + "User " + "supplied " + "values " + "are " + "ignored.", + "type": "object", + }, + "name": { + "description": "Unique " + "name " + "given " + "to " + "an " + "entity " + "under " + "the " + "kind/namespace.", + "example": "myService", + "minLength": 1, + "type": "string", + }, + "namespace": { + "description": "Namespace " + "is " + "a " + "part " + "of " + "unique " + "identifier. " + "It " + "has " + "a " + "default " + "value " + "of " + "'default'.", + "example": "default", + "minLength": 1, + "type": "string", + }, + "owner": { + "description": "The owner of the entity, usually a team.", + "type": "string", + }, + "tags": { + "description": "A set of custom tags.", + "example": ["this:tag", "that:tag"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["name"], + "type": "object", + }, + "spec": { + "additionalProperties": False, + "description": "The definition of Entity V3 API Spec object.", + "properties": { + "implementedBy": { + "description": "Services which implemented the API.", + "items": {"type": "string"}, + "type": "array", + }, + "interface": { + "additionalProperties": False, + "description": "The API definition.", + "oneOf": [ + { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "`EntityV3APISpecInterfaceFileRef` " + "object.", + "properties": { + "fileRef": { + "description": "The " + "reference " + "to " + "the " + "API " + "definition " + "file.", + "type": "string", + } + }, + "type": "object", + }, + { + "additionalProperties": False, + "description": "The " + "definition " + "of " + "`EntityV3APISpecInterfaceDefinition` " + "object.", + "properties": { + "definition": { + "description": "The API definition.", + "type": "object", + } + }, + "type": "object", + }, + ], + }, + "lifecycle": { + "description": "The lifecycle state of the component.", + "minLength": 1, + "type": "string", + }, + "tier": { + "description": "The importance of the component.", + "minLength": 1, + "type": "string", + }, + "type": {"description": "The type of API.", "type": "string"}, + }, + "type": "object", + }, + }, + "required": ["apiVersion", "kind", "metadata"], + "type": "object", + }, + ], + }, + { + "description": "Entity definition in raw JSON or YAML representation.", + "example": "apiVersion: v3\nkind: service\nmetadata:\n name: myservice", + "type": "string", + }, + ], + }, + "UPDATESOFTWARECATALOGKIND_REQUEST_BODY_SCHEMA": { + "description": "Create or update kind request.", + "oneOf": [ + { + "description": "Schema for kind.", + "properties": { + "description": { + "description": "Short description of the kind.", + "type": "string", + }, + "displayName": { + "description": "The display name of the " + "kind. Automatically " + "generated if not provided.", + "type": "string", + }, + "kind": { + "description": "The name of the kind to create or " + "update. This must be in kebab-case " + "format.", + "example": "my-job", + "type": "string", + }, + }, + "required": ["kind"], + "type": "object", + }, + { + "description": "Kind definition in raw JSON or YAML representation.", + "example": "kind: service\n" + "displayName: Service\n" + "description: A service entity in the catalog.", + "type": "string", + }, + ], + }, + "AGGREGATEPIPELINEEVENTS_REQUEST_BODY_SCHEMA": { + "description": "The object sent with the request to retrieve aggregation buckets of " + "pipeline events from your organization.", + "properties": { + "compute": { + "description": "The list of metrics or timeseries to " + "compute for the retrieved buckets.", + "items": { + "description": "A compute rule to compute metrics or timeseries.", + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + "LATEST", + "EARLIEST", + "MOST_FREQUENT", + "DELTA", + ], + }, + "interval": { + "description": "The " + "time " + "buckets' " + "size " + "(only " + "used " + "for " + "type=timeseries)\n" + "Defaults " + "to a " + "resolution " + "of " + "150 " + "points.", + "example": "5m", + "type": "string", + }, + "metric": { + "description": "The metric to use.", + "example": "@duration", + "type": "string", + }, + "type": { + "default": "total", + "description": "The type of compute.", + "enum": ["timeseries", "total"], + "type": "string", + "x-enum-varnames": ["TIMESERIES", "TOTAL"], + }, + }, + "required": ["aggregation"], + "type": "object", + }, + "type": "array", + }, + "filter": { + "description": "The search and filter query settings.", + "properties": { + "from": { + "default": "now-15m", + "description": "The minimum time " + "for the requested " + "events; supports " + "date, math, and " + "regular timestamps " + "(in milliseconds).", + "example": "now-15m", + "type": "string", + }, + "query": { + "default": "*", + "description": "The search query " + "following the CI " + "Visibility " + "Explorer search " + "syntax.", + "example": "@ci.provider.name:github AND @ci.status:error", + "type": "string", + }, + "to": { + "default": "now", + "description": "The maximum time for " + "the requested events, " + "supports date, math, " + "and regular " + "timestamps (in " + "milliseconds).", + "example": "now", + "type": "string", + }, + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group-by.", + "items": { + "description": "A group-by rule.", + "properties": { + "facet": { + "description": "The name of the facet to use (required).", + "example": "@ci.status", + "type": "string", + }, + "histogram": { + "description": "Used " + "to " + "perform " + "a " + "histogram " + "computation " + "(only " + "for " + "measure " + "facets).\n" + "At " + "most, " + "100 " + "buckets " + "are " + "allowed, " + "the " + "number " + "of " + "buckets " + "is " + "`(max " + "- " + "min)/interval`.", + "properties": { + "interval": { + "description": "The bin size of the histogram buckets.", + "example": 10, + "format": "double", + "type": "number", + }, + "max": { + "description": "The " + "maximum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "greater " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 100, + "format": "double", + "type": "number", + }, + "min": { + "description": "The " + "minimum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "smaller " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 50, + "format": "double", + "type": "number", + }, + }, + "required": ["interval", "min", "max"], + "type": "object", + }, + "limit": { + "default": 10, + "description": "The maximum buckets to return for this group-by.", + "format": "int64", + "type": "integer", + }, + "missing": { + "description": "The " + "value " + "to " + "use " + "for " + "logs " + "that " + "don't " + "have " + "the " + "facet " + "used " + "to " + "group-by.", + "oneOf": [ + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "a " + "string " + "valued " + "facet.", + "type": "string", + }, + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "a " + "number " + "valued " + "facet.", + "format": "double", + "type": "number", + }, + ], + }, + "sort": { + "description": "A sort " + "rule. " + "The " + "`aggregation` " + "field " + "is " + "required " + "when " + "`type` " + "is " + "`measure`.", + "example": {"aggregation": "count", "order": "asc"}, + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + "LATEST", + "EARLIEST", + "MOST_FREQUENT", + "DELTA", + ], + }, + "metric": { + "description": "The " + "metric " + "to " + "sort " + "by " + "(only " + "used " + "for " + "`type=measure`).", + "example": "@duration", + "type": "string", + }, + "order": { + "description": "The order to use, ascending or descending.", + "enum": ["asc", "desc"], + "example": "asc", + "type": "string", + "x-enum-varnames": ["ASCENDING", "DESCENDING"], + }, + "type": { + "default": "alphabetical", + "description": "The type of sorting algorithm.", + "enum": ["alphabetical", "measure"], + "type": "string", + "x-enum-varnames": ["ALPHABETICAL", "MEASURE"], + }, + }, + "type": "object", + }, + "total": { + "default": False, + "description": "A " + "resulting " + "object " + "to put " + "the " + "given " + "computes " + "in " + "over " + "all " + "the " + "matching " + "records.", + "oneOf": [ + { + "description": "If " + "set " + "to " + "true, " + "creates " + "an " + "additional " + "bucket " + "labeled " + '"$facet_total".', + "type": "boolean", + }, + { + "description": "A " + "string " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "type": "string", + }, + { + "description": "A " + "number " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "format": "double", + "type": "number", + }, + ], + }, + }, + "required": ["facet"], + "type": "object", + }, + "type": "array", + }, + "options": { + "description": "Global query options that are used during " + "the query.\n" + "Only supply timezone or time offset, not " + "both. Otherwise, the query fails.", + "properties": { + "time_offset": { + "description": "The time offset (in seconds) to apply to the query.", + "format": "int64", + "type": "integer", + }, + "timezone": { + "default": "UTC", + "description": "The timezone " + "can be " + "specified as " + "GMT, UTC, an " + "offset from " + "UTC (like " + "UTC+1), or as " + "a Timezone " + "Database " + "identifier " + "(like " + "America/New_York).", + "example": "GMT", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "AGGREGATETESTMETRICS_REQUEST_BODY_SCHEMA": { + "description": "The object sent with the request to retrieve aggregation buckets of " + "test events from your organization.", + "properties": { + "compute": { + "description": "The list of metrics or timeseries to " + "compute for the retrieved buckets.", + "items": { + "description": "A compute rule to compute metrics or timeseries.", + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + "LATEST", + "EARLIEST", + "MOST_FREQUENT", + "DELTA", + ], + }, + "interval": { + "description": "The " + "time " + "buckets' " + "size " + "(only " + "used " + "for " + "type=timeseries)\n" + "Defaults " + "to a " + "resolution " + "of " + "150 " + "points.", + "example": "5m", + "type": "string", + }, + "metric": { + "description": "The metric to use.", + "example": "@duration", + "type": "string", + }, + "type": { + "default": "total", + "description": "The type of compute.", + "enum": ["timeseries", "total"], + "type": "string", + "x-enum-varnames": ["TIMESERIES", "TOTAL"], + }, + }, + "required": ["aggregation"], + "type": "object", + }, + "type": "array", + }, + "filter": { + "description": "The search and filter query settings.", + "properties": { + "from": { + "default": "now-15m", + "description": "The minimum time " + "for the requested " + "events; supports " + "date, math, and " + "regular timestamps " + "(in milliseconds).", + "example": "now-15m", + "type": "string", + }, + "query": { + "default": "*", + "description": "The search query " + "following the CI " + "Visibility " + "Explorer search " + "syntax.", + "example": "@test.service:web-ui-tests AND @test.status:fail", + "type": "string", + }, + "to": { + "default": "now", + "description": "The maximum time for " + "the requested events, " + "supports date, math, " + "and regular " + "timestamps (in " + "milliseconds).", + "example": "now", + "type": "string", + }, + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group-by.", + "items": { + "description": "A group-by rule.", + "properties": { + "facet": { + "description": "The name of the facet to use (required).", + "example": "@test.service", + "type": "string", + }, + "histogram": { + "description": "Used " + "to " + "perform " + "a " + "histogram " + "computation " + "(only " + "for " + "measure " + "facets).\n" + "At " + "most, " + "100 " + "buckets " + "are " + "allowed, " + "the " + "number " + "of " + "buckets " + "is " + "`(max " + "- " + "min)/interval`.", + "properties": { + "interval": { + "description": "The bin size of the histogram buckets.", + "example": 10, + "format": "double", + "type": "number", + }, + "max": { + "description": "The " + "maximum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "greater " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 100, + "format": "double", + "type": "number", + }, + "min": { + "description": "The " + "minimum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "smaller " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 50, + "format": "double", + "type": "number", + }, + }, + "required": ["interval", "min", "max"], + "type": "object", + }, + "limit": { + "default": 10, + "description": "The maximum buckets to return for this group-by.", + "format": "int64", + "type": "integer", + }, + "missing": { + "description": "The " + "value " + "to " + "use " + "for " + "logs " + "that " + "don't " + "have " + "the " + "facet " + "used " + "to " + "group-by.", + "oneOf": [ + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "a " + "string " + "valued " + "facet.", + "type": "string", + }, + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "a " + "number " + "valued " + "facet.", + "format": "double", + "type": "number", + }, + ], + }, + "sort": { + "description": "A sort " + "rule. " + "The " + "`aggregation` " + "field " + "is " + "required " + "when " + "`type` " + "is " + "`measure`.", + "example": {"aggregation": "count", "order": "asc"}, + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + "LATEST", + "EARLIEST", + "MOST_FREQUENT", + "DELTA", + ], + }, + "metric": { + "description": "The " + "metric " + "to " + "sort " + "by " + "(only " + "used " + "for " + "`type=measure`).", + "example": "@duration", + "type": "string", + }, + "order": { + "description": "The order to use, ascending or descending.", + "enum": ["asc", "desc"], + "example": "asc", + "type": "string", + "x-enum-varnames": ["ASCENDING", "DESCENDING"], + }, + "type": { + "default": "alphabetical", + "description": "The type of sorting algorithm.", + "enum": ["alphabetical", "measure"], + "type": "string", + "x-enum-varnames": ["ALPHABETICAL", "MEASURE"], + }, + }, + "type": "object", + }, + "total": { + "default": False, + "description": "A " + "resulting " + "object " + "to put " + "the " + "given " + "computes " + "in " + "over " + "all " + "the " + "matching " + "records.", + "oneOf": [ + { + "description": "If " + "set " + "to " + "true, " + "creates " + "an " + "additional " + "bucket " + "labeled " + '"$facet_total".', + "type": "boolean", + }, + { + "description": "A " + "string " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "type": "string", + }, + { + "description": "A " + "number " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "format": "double", + "type": "number", + }, + ], + }, + }, + "required": ["facet"], + "type": "object", + }, + "type": "array", + }, + "options": { + "description": "Global query options that are used during " + "the query.\n" + "Only supply timezone or time offset, not " + "both. Otherwise, the query fails.", + "properties": { + "time_offset": { + "description": "The time offset (in seconds) to apply to the query.", + "format": "int64", + "type": "integer", + }, + "timezone": { + "default": "UTC", + "description": "The timezone " + "can be " + "specified as " + "GMT, UTC, an " + "offset from " + "UTC (like " + "UTC+1), or as " + "a Timezone " + "Database " + "identifier " + "(like " + "America/New_York).", + "example": "GMT", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "CREATECUSTOMSECURITYFRAMEWORK_REQUEST_BODY_SCHEMA": { + "description": "Request object to create a custom framework.", + "properties": { + "data": { + "description": "Contains type and attributes for custom frameworks.", + "properties": { + "attributes": { + "description": "Framework Data Attributes.", + "properties": { + "description": { + "description": "Framework Description", + "type": "string", + }, + "handle": { + "description": "Framework Handle", + "example": "sec2", + "type": "string", + }, + "icon_url": {"description": "Framework Icon URL", "type": "string"}, + "name": { + "description": "Framework Name", + "example": "security-framework", + "type": "string", + }, + "requirements": { + "description": "Framework Requirements", + "items": { + "description": "Framework Requirement.", + "properties": { + "controls": { + "description": "Requirement Controls.", + "items": { + "description": "Framework Control.", + "properties": { + "name": { + "description": "Control Name.", + "example": "A1.2", + "type": "string", + }, + "rules_id": { + "description": "Rule IDs.", + "example": ['["def-000-abc"]'], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["name", "rules_id"], + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "Requirement Name.", + "example": "criteria", + "type": "string", + }, + }, + "required": ["name", "controls"], + "type": "object", + }, + "type": "array", + }, + "version": { + "description": "Framework Version", + "example": "2", + "type": "string", + }, + }, + "required": ["handle", "version", "name", "requirements"], + "type": "object", + }, + "type": { + "default": "custom_framework", + "description": "The type of the " + "resource. The value " + "must be " + "`custom_framework`.", + "enum": ["custom_framework"], + "example": "custom_framework", + "type": "string", + "x-enum-varnames": ["CUSTOM_FRAMEWORK"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATECUSTOMFRAMEWORK_REQUEST_BODY_SCHEMA": { + "description": "Request object to update a custom framework.", + "properties": { + "data": { + "description": "Contains type and attributes for custom frameworks.", + "properties": { + "attributes": { + "description": "Framework Data Attributes.", + "properties": { + "description": { + "description": "Framework Description", + "type": "string", + }, + "handle": { + "description": "Framework Handle", + "example": "sec2", + "type": "string", + }, + "icon_url": {"description": "Framework Icon URL", "type": "string"}, + "name": { + "description": "Framework Name", + "example": "security-framework", + "type": "string", + }, + "requirements": { + "description": "Framework Requirements", + "items": { + "description": "Framework Requirement.", + "properties": { + "controls": { + "description": "Requirement Controls.", + "items": { + "description": "Framework Control.", + "properties": { + "name": { + "description": "Control Name.", + "example": "A1.2", + "type": "string", + }, + "rules_id": { + "description": "Rule IDs.", + "example": ['["def-000-abc"]'], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["name", "rules_id"], + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "Requirement Name.", + "example": "criteria", + "type": "string", + }, + }, + "required": ["name", "controls"], + "type": "object", + }, + "type": "array", + }, + "version": { + "description": "Framework Version", + "example": "2", + "type": "string", + }, + }, + "required": ["handle", "version", "name", "requirements"], + "type": "object", + }, + "type": { + "default": "custom_framework", + "description": "The type of the " + "resource. The value " + "must be " + "`custom_framework`.", + "enum": ["custom_framework"], + "example": "custom_framework", + "type": "string", + "x-enum-varnames": ["CUSTOM_FRAMEWORK"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATERESOURCEFILTERS_REQUEST_BODY_SCHEMA": { + "description": "Request object to update a resource filter.", + "properties": { + "data": { + "description": "The definition of `UpdateResourceFilterRequestData` object.", + "properties": { + "attributes": { + "description": "Attributes of a resource filter.", + "example": { + "aws": {"123456789": ["environment:production", "team:devops"]}, + "azure": {"sub-001": ["app:frontend"]}, + "gcp": {"project-abc": ["region:us-central1"]}, + }, + "properties": { + "cloud_provider": { + "additionalProperties": { + "additionalProperties": { + "items": { + "description": 'Tag filter in format "key:value"', + "example": "environment:production", + "type": "string", + }, + "type": "array", + }, + "type": "object", + }, + "description": "A " + "map " + "of " + "cloud " + "provider " + "names " + "(e.g., " + '"aws", ' + '"gcp", ' + '"azure") ' + "to " + "a " + "map " + "of " + "account/resource " + "IDs " + "and " + "their " + "associated " + "tag " + "filters.", + "type": "object", + }, + "uuid": { + "description": "The UUID of the resource filter.", + "type": "string", + }, + }, + "required": ["cloud_provider"], + "type": "object", + }, + "id": { + "description": "The `UpdateResourceEvaluationFiltersRequestData` `id`.", + "example": "csm_resource_filter", + "type": "string", + }, + "type": { + "description": "Constant string to identify the request type.", + "enum": ["csm_resource_filter"], + "example": "csm_resource_filter", + "type": "string", + "x-enum-varnames": ["CSM_RESOURCE_FILTER"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA": { + "description": "The definition of `ArbitraryCostUpsertRequest` object.", + "example": { + "data": { + "attributes": { + "costs_to_allocate": [ + { + "condition": "is", + "tag": "account_id", + "value": "123456789", + "values": None, + }, + { + "condition": "in", + "tag": "environment", + "value": "", + "values": ["production", "staging"], + }, + ], + "enabled": True, + "order_id": 1, + "provider": ["aws", "gcp"], + "rule_name": "example-arbitrary-cost-rule", + "strategy": { + "allocated_by_tag_keys": ["team", "environment"], + "based_on_costs": [ + { + "condition": "is", + "tag": "service", + "value": "web-api", + "values": None, + }, + { + "condition": "not in", + "tag": "team", + "value": "", + "values": ["legacy", "deprecated"], + }, + ], + "granularity": "daily", + "method": "proportional", + }, + "type": "shared", + }, + "type": "upsert_arbitrary_rule", + } + }, + "properties": { + "data": { + "description": "The definition of `ArbitraryCostUpsertRequestData` object.", + "properties": { + "attributes": { + "description": "The definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributes` " + "object.", + "properties": { + "costs_to_allocate": { + "description": "The `attributes` `costs_to_allocate`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesCostsToAllocateItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "enabled": { + "description": "The `attributes` `enabled`.", + "type": "boolean", + }, + "order_id": { + "description": "The `attributes` `order_id`.", + "format": "int64", + "type": "integer", + }, + "provider": { + "description": "The `attributes` `provider`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + "rejected": { + "description": "The `attributes` `rejected`.", + "type": "boolean", + }, + "rule_name": { + "description": "The `attributes` `rule_name`.", + "example": "", + "type": "string", + }, + "strategy": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategy` " + "object.", + "properties": { + "allocated_by": { + "description": "The `strategy` `allocated_by`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItems` " + "object.", + "properties": { + "allocated_tags": { + "description": "The `items` `allocated_tags`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItemsAllocatedTagsItems` " + "object.", + "properties": { + "key": { + "description": "The `items` `key`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The " + "`items` " + "`value`.", + "example": "", + "type": "string", + }, + }, + "required": ["key", "value"], + "type": "object", + }, + "type": "array", + }, + "percentage": { + "description": "The " + "`items` " + "`percentage`. " + "The " + "numeric " + "value " + "format " + "should " + "be " + "a " + "32bit " + "float " + "value.", + "example": 0.0, + "format": "double", + "type": "number", + }, + }, + "required": ["allocated_tags", "percentage"], + "type": "object", + }, + "type": "array", + }, + "allocated_by_filters": { + "description": "The `strategy` `allocated_by_filters`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByFiltersItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "allocated_by_tag_keys": { + "description": "The `strategy` `allocated_by_tag_keys`.", + "items": {"type": "string"}, + "type": "array", + }, + "based_on_costs": { + "description": "The `strategy` `based_on_costs`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyBasedOnCostsItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "based_on_timeseries": { + "additionalProperties": {}, + "description": "The `strategy` `based_on_timeseries`.", + "type": "object", + }, + "evaluate_grouped_by_filters": { + "description": "The " + "`strategy` " + "`evaluate_grouped_by_filters`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyEvaluateGroupedByFiltersItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "evaluate_grouped_by_tag_keys": { + "description": "The " + "`strategy` " + "`evaluate_grouped_by_tag_keys`.", + "items": {"type": "string"}, + "type": "array", + }, + "granularity": { + "description": "The `strategy` `granularity`.", + "type": "string", + }, + "method": { + "description": "The `strategy` `method`.", + "example": "", + "type": "string", + }, + }, + "required": ["method"], + "type": "object", + }, + "type": { + "description": "The `attributes` `type`.", + "example": "", + "type": "string", + }, + }, + "required": [ + "costs_to_allocate", + "provider", + "rule_name", + "strategy", + "type", + ], + "type": "object", + }, + "id": { + "description": "The `ArbitraryCostUpsertRequestData` `id`.", + "type": "string", + }, + "type": { + "default": "upsert_arbitrary_rule", + "description": "Upsert arbitrary rule resource type.", + "enum": ["upsert_arbitrary_rule"], + "example": "upsert_arbitrary_rule", + "type": "string", + "x-enum-varnames": ["UPSERT_ARBITRARY_RULE"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "REORDERCUSTOMALLOCATIONRULES_REQUEST_BODY_SCHEMA": { + "description": "The definition of `ReorderRuleResourceArray` object.", + "example": { + "data": [ + {"id": "456", "type": "arbitrary_rule"}, + {"id": "123", "type": "arbitrary_rule"}, + {"id": "789", "type": "arbitrary_rule"}, + ] + }, + "properties": { + "data": { + "description": "The `ReorderRuleResourceArray` `data`.", + "items": { + "description": "The definition of `ReorderRuleResourceData` object.", + "properties": { + "id": { + "description": "The `ReorderRuleResourceData` `id`.", + "type": "string", + }, + "type": { + "default": "arbitrary_rule", + "description": "Arbitrary rule resource type.", + "enum": ["arbitrary_rule"], + "example": "arbitrary_rule", + "type": "string", + "x-enum-varnames": ["ARBITRARY_RULE"], + }, + }, + "required": ["type"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATECUSTOMALLOCATIONRULE_REQUEST_BODY_SCHEMA": { + "description": "The definition of `ArbitraryCostUpsertRequest` object.", + "example": { + "data": { + "attributes": { + "costs_to_allocate": [ + { + "condition": "is", + "tag": "account_id", + "value": "123456789", + "values": None, + }, + { + "condition": "in", + "tag": "environment", + "value": "", + "values": ["production", "staging"], + }, + ], + "enabled": True, + "order_id": 1, + "provider": ["aws", "gcp"], + "rule_name": "example-arbitrary-cost-rule", + "strategy": { + "allocated_by_tag_keys": ["team", "environment"], + "based_on_costs": [ + { + "condition": "is", + "tag": "service", + "value": "web-api", + "values": None, + }, + { + "condition": "not in", + "tag": "team", + "value": "", + "values": ["legacy", "deprecated"], + }, + ], + "granularity": "daily", + "method": "proportional", + }, + "type": "shared", + }, + "type": "upsert_arbitrary_rule", + } + }, + "properties": { + "data": { + "description": "The definition of `ArbitraryCostUpsertRequestData` object.", + "properties": { + "attributes": { + "description": "The definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributes` " + "object.", + "properties": { + "costs_to_allocate": { + "description": "The `attributes` `costs_to_allocate`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesCostsToAllocateItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "enabled": { + "description": "The `attributes` `enabled`.", + "type": "boolean", + }, + "order_id": { + "description": "The `attributes` `order_id`.", + "format": "int64", + "type": "integer", + }, + "provider": { + "description": "The `attributes` `provider`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + "rejected": { + "description": "The `attributes` `rejected`.", + "type": "boolean", + }, + "rule_name": { + "description": "The `attributes` `rule_name`.", + "example": "", + "type": "string", + }, + "strategy": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategy` " + "object.", + "properties": { + "allocated_by": { + "description": "The `strategy` `allocated_by`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItems` " + "object.", + "properties": { + "allocated_tags": { + "description": "The `items` `allocated_tags`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItemsAllocatedTagsItems` " + "object.", + "properties": { + "key": { + "description": "The `items` `key`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The " + "`items` " + "`value`.", + "example": "", + "type": "string", + }, + }, + "required": ["key", "value"], + "type": "object", + }, + "type": "array", + }, + "percentage": { + "description": "The " + "`items` " + "`percentage`. " + "The " + "numeric " + "value " + "format " + "should " + "be " + "a " + "32bit " + "float " + "value.", + "example": 0.0, + "format": "double", + "type": "number", + }, + }, + "required": ["allocated_tags", "percentage"], + "type": "object", + }, + "type": "array", + }, + "allocated_by_filters": { + "description": "The `strategy` `allocated_by_filters`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByFiltersItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "allocated_by_tag_keys": { + "description": "The `strategy` `allocated_by_tag_keys`.", + "items": {"type": "string"}, + "type": "array", + }, + "based_on_costs": { + "description": "The `strategy` `based_on_costs`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyBasedOnCostsItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "based_on_timeseries": { + "additionalProperties": {}, + "description": "The `strategy` `based_on_timeseries`.", + "type": "object", + }, + "evaluate_grouped_by_filters": { + "description": "The " + "`strategy` " + "`evaluate_grouped_by_filters`.", + "items": { + "description": "The " + "definition " + "of " + "`ArbitraryCostUpsertRequestDataAttributesStrategyEvaluateGroupedByFiltersItems` " + "object.", + "properties": { + "condition": { + "description": "The `items` `condition`.", + "example": "", + "type": "string", + }, + "tag": { + "description": "The `items` `tag`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The `items` `value`.", + "type": "string", + }, + "values": { + "description": "The `items` `values`.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "required": ["condition", "tag"], + "type": "object", + }, + "type": "array", + }, + "evaluate_grouped_by_tag_keys": { + "description": "The " + "`strategy` " + "`evaluate_grouped_by_tag_keys`.", + "items": {"type": "string"}, + "type": "array", + }, + "granularity": { + "description": "The `strategy` `granularity`.", + "type": "string", + }, + "method": { + "description": "The `strategy` `method`.", + "example": "", + "type": "string", + }, + }, + "required": ["method"], + "type": "object", + }, + "type": { + "description": "The `attributes` `type`.", + "example": "", + "type": "string", + }, + }, + "required": [ + "costs_to_allocate", + "provider", + "rule_name", + "strategy", + "type", + ], + "type": "object", + }, + "id": { + "description": "The `ArbitraryCostUpsertRequestData` `id`.", + "type": "string", + }, + "type": { + "default": "upsert_arbitrary_rule", + "description": "Upsert arbitrary rule resource type.", + "enum": ["upsert_arbitrary_rule"], + "example": "upsert_arbitrary_rule", + "type": "string", + "x-enum-varnames": ["UPSERT_ARBITRARY_RULE"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "CREATEAZURECOSTMANAGEMENTACCOUNT_REQUEST_BODY_SCHEMA": { + "description": "Azure config Post Request.", + "properties": { + "data": { + "description": "Azure config Post data.", + "properties": { + "attributes": { + "description": "Attributes for Azure config Post Request.", + "properties": { + "account_id": { + "description": "The tenant ID of the Azure account.", + "example": "1234abcd-1234-abcd-1234-1234abcd1234", + "type": "string", + }, + "actual_bill_config": { + "description": "Bill config.", + "properties": { + "export_name": { + "description": "The name of the configured Azure Export.", + "example": "dd-actual-export", + "type": "string", + }, + "export_path": { + "description": "The path where the Azure Export is saved.", + "example": "dd-export-path", + "type": "string", + }, + "storage_account": { + "description": "The " + "name " + "of " + "the " + "storage " + "account " + "where " + "the " + "Azure " + "Export " + "is " + "saved.", + "example": "dd-storage-account", + "type": "string", + }, + "storage_container": { + "description": "The " + "name " + "of " + "the " + "storage " + "container " + "where " + "the " + "Azure " + "Export " + "is " + "saved.", + "example": "dd-storage-container", + "type": "string", + }, + }, + "required": [ + "export_name", + "export_path", + "storage_account", + "storage_container", + ], + "type": "object", + }, + "amortized_bill_config": { + "description": "Bill config.", + "properties": { + "export_name": { + "description": "The name of the configured Azure Export.", + "example": "dd-actual-export", + "type": "string", + }, + "export_path": { + "description": "The path where the Azure Export is saved.", + "example": "dd-export-path", + "type": "string", + }, + "storage_account": { + "description": "The " + "name " + "of " + "the " + "storage " + "account " + "where " + "the " + "Azure " + "Export " + "is " + "saved.", + "example": "dd-storage-account", + "type": "string", + }, + "storage_container": { + "description": "The " + "name " + "of " + "the " + "storage " + "container " + "where " + "the " + "Azure " + "Export " + "is " + "saved.", + "example": "dd-storage-container", + "type": "string", + }, + }, + "required": [ + "export_name", + "export_path", + "storage_account", + "storage_container", + ], + "type": "object", + }, + "client_id": { + "description": "The client ID of the Azure account.", + "example": "1234abcd-1234-abcd-1234-1234abcd1234", + "type": "string", + }, + "scope": { + "description": "The scope of your observed subscription.", + "example": "/subscriptions/1234abcd-1234-abcd-1234-1234abcd1234", + "type": "string", + }, + }, + "required": [ + "account_id", + "actual_bill_config", + "amortized_bill_config", + "client_id", + "scope", + ], + "type": "object", + }, + "type": { + "default": "azure_uc_config_post_request", + "description": "Type of Azure config Post Request.", + "enum": ["azure_uc_config_post_request"], + "example": "azure_uc_config_post_request", + "type": "string", + "x-enum-varnames": ["AZURE_UC_CONFIG_POST_REQUEST"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "MANAGEBUDGET_REQUEST_BODY_SCHEMA": { + "description": "The definition of the `BudgetWithEntries` object.", + "properties": { + "data": { + "description": "A budget and all its entries.", + "properties": { + "attributes": { + "description": "The attributes of a budget.", + "properties": { + "created_at": { + "description": "The timestamp when the budget was created.", + "example": 1738258683590, + "format": "int64", + "type": "integer", + }, + "created_by": { + "description": "The id of the user that created the budget.", + "example": "00000000-0a0a-0a0a-aaa0-00000000000a", + "type": "string", + }, + "end_month": { + "description": "The month when the budget ends.", + "example": 202502, + "format": "int64", + "type": "integer", + }, + "entries": { + "description": "The entries of the budget.", + "items": { + "description": "The entry of a budget.", + "properties": { + "amount": { + "description": "The `amount` of the budget entry.", + "example": 500, + "format": "double", + "type": "number", + }, + "month": { + "description": "The `month` of the budget entry.", + "example": 202501, + "format": "int64", + "type": "integer", + }, + "tag_filters": { + "description": "The `tag_filters` of the budget entry.", + "items": { + "description": "Tag " + "filter " + "for " + "the " + "budget's " + "entries.", + "properties": { + "tag_key": { + "description": "The key of the tag.", + "example": "service", + "type": "string", + }, + "tag_value": { + "description": "The value of the tag.", + "example": "ec2", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "type": "array", + }, + "metrics_query": { + "description": "The cost query used to track against the budget.", + "example": "aws.cost.amortized{service:ec2} by {service}", + "type": "string", + }, + "name": { + "description": "The name of the budget.", + "example": "my budget", + "type": "string", + }, + "org_id": { + "description": "The id of the org the budget belongs to.", + "example": 123, + "format": "int64", + "type": "integer", + }, + "start_month": { + "description": "The month when the budget starts.", + "example": 202501, + "format": "int64", + "type": "integer", + }, + "total_amount": { + "description": "The sum of all budget entries' amounts.", + "example": 1000, + "format": "double", + "type": "number", + }, + "updated_at": { + "description": "The timestamp when the budget was last updated.", + "example": 1738258683590, + "format": "int64", + "type": "integer", + }, + "updated_by": { + "description": "The id of the user that created the budget.", + "example": "00000000-0a0a-0a0a-aaa0-00000000000a", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The `BudgetWithEntriesData` `id`.", + "example": "00000000-0a0a-0a0a-aaa0-00000000000a", + "type": "string", + }, + "type": { + "description": "The type of the object, must be `budget`.", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "UPLOADCUSTOMCOSTSFILE_REQUEST_BODY_SCHEMA": { + "description": "Request for uploading a Custom Costs file.", + "items": { + "description": "Line item details from a Custom Costs file.", + "properties": { + "BilledCost": { + "description": "Total cost in the cost file.", + "example": 100.5, + "format": "double", + "type": "number", + }, + "BillingCurrency": { + "description": "Currency used in the Custom Costs file.", + "example": "USD", + "type": "string", + }, + "ChargeDescription": { + "description": "Description for the line item cost.", + "example": "Monthly usage charge for my service", + "type": "string", + }, + "ChargePeriodEnd": { + "description": "End date of the usage charge.", + "example": "2023-02-28", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string", + }, + "ChargePeriodStart": { + "description": "Start date of the usage charge.", + "example": "2023-02-01", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string", + }, + "ProviderName": { + "description": "Name of the provider for the line item.", + "type": "string", + }, + "Tags": { + "additionalProperties": {"type": "string"}, + "description": "Additional tags for the line item.", + "type": "object", + }, + }, + "type": "object", + }, + "type": "array", + }, + "DELETEDASHBOARDFROMLIST_REQUEST_BODY_SCHEMA": { + "description": "Request containing a list of dashboards to delete.", + "properties": { + "dashboards": { + "description": "List of dashboards to delete from the dashboard list.", + "items": { + "description": "A dashboard within a list.", + "properties": { + "id": { + "description": "ID of the dashboard.", + "example": "q5j-nti-fv6", + "type": "string", + }, + "type": { + "description": "The type of the dashboard.", + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard", + ], + "example": "host_timeboard", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_TIMEBOARD", + "CUSTOM_SCREENBOARD", + "INTEGRATION_SCREENBOARD", + "INTEGRATION_TIMEBOARD", + "HOST_TIMEBOARD", + ], + }, + }, + "required": ["type", "id"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "ADDDASHBOARDSTOLIST_REQUEST_BODY_SCHEMA": { + "description": "Request containing a list of dashboards to add.", + "properties": { + "dashboards": { + "description": "List of dashboards to add the dashboard list.", + "items": { + "description": "A dashboard within a list.", + "properties": { + "id": { + "description": "ID of the dashboard.", + "example": "q5j-nti-fv6", + "type": "string", + }, + "type": { + "description": "The type of the dashboard.", + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard", + ], + "example": "host_timeboard", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_TIMEBOARD", + "CUSTOM_SCREENBOARD", + "INTEGRATION_SCREENBOARD", + "INTEGRATION_TIMEBOARD", + "HOST_TIMEBOARD", + ], + }, + }, + "required": ["type", "id"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "UPDATEDASHBOARDLISTITEMS_REQUEST_BODY_SCHEMA": { + "description": "Request containing the list of dashboards to update to.", + "properties": { + "dashboards": { + "description": "List of dashboards to update the dashboard list to.", + "items": { + "description": "A dashboard within a list.", + "properties": { + "id": { + "description": "ID of the dashboard.", + "example": "q5j-nti-fv6", + "type": "string", + }, + "type": { + "description": "The type of the dashboard.", + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard", + ], + "example": "host_timeboard", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_TIMEBOARD", + "CUSTOM_SCREENBOARD", + "INTEGRATION_SCREENBOARD", + "INTEGRATION_TIMEBOARD", + "HOST_TIMEBOARD", + ], + }, + }, + "required": ["type", "id"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "CREATEDATASET_REQUEST_BODY_SCHEMA": { + "description": "Create request for a dataset.", + "properties": { + "data": { + "description": "**Datasets Object Constraints**\n" + "- **Tag limit per dataset**:\n" + " - Each restricted dataset supports a " + "maximum of 10 key:value pairs per product.\n" + "\n" + "- **Tag key rules per telemetry type**:\n" + " - Only one tag key or attribute may be used " + "to define access within a single telemetry " + "type.\n" + " - The same or different tag key may be used " + "across different telemetry types.\n" + "\n" + "- **Tag value uniqueness**:\n" + " - Tag values must be unique within a single " + "dataset.\n" + " - A tag value used in one dataset cannot be " + "reused in another dataset of the same " + "telemetry type.", + "properties": { + "attributes": { + "description": "Dataset metadata and configurations.", + "properties": { + "name": { + "description": "Name of the dataset.", + "example": "Security Audit Dataset", + "type": "string", + }, + "principals": { + "description": "List " + "of " + "access " + "principals, " + "formatted " + "as " + "`principal_type:id`. " + "Principal " + "can " + "be " + "'team' " + "or " + "'role'.", + "example": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], + "items": { + "example": "role:94172442-be03-11e9-a77a-3b7612558ac1", + "type": "string", + }, + "type": "array", + }, + "product_filters": { + "description": "List of product-specific filters.", + "items": { + "description": "Product-specific filters for the dataset.", + "properties": { + "filters": { + "description": "Defines " + "the " + "list " + "of " + "tag-based " + "filters " + "used " + "to " + "restrict " + "access " + "to " + "telemetry " + "data " + "for " + "a " + "specific " + "product.\n" + "These " + "filters " + "act " + "as " + "access " + "control " + "rules. " + "Each " + "filter " + "must " + "follow " + "the " + "tag " + "query " + "syntax " + "used " + "by\n" + "Datadog " + "(such " + "as " + "`@tag.key:value`), " + "and " + "only " + "one " + "tag " + "or " + "attribute " + "may " + "be " + "used " + "to " + "define " + "the " + "access " + "strategy\n" + "per " + "telemetry " + "type.", + "example": ["@application.id:ABCD"], + "items": { + "example": "@application.id:ABCD", + "type": "string", + }, + "type": "array", + }, + "product": { + "description": "Name " + "of " + "the " + "product " + "the " + "dataset " + "is " + "for. " + "Possible " + "values " + "are " + "'apm', " + "'rum',\n" + "'metrics', " + "'logs', " + "'error_tracking', " + "and " + "'cloud_cost'.", + "example": "logs", + "type": "string", + }, + }, + "required": ["product", "filters"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["name", "product_filters", "principals"], + "type": "object", + }, + "type": { + "default": "dataset", + "description": "Resource type, always set to `dataset`.", + "enum": ["dataset"], + "example": "dataset", + "type": "string", + "x-enum-varnames": ["DATASET"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "EDITDATASET_REQUEST_BODY_SCHEMA": { + "description": "Edit request for a dataset.", + "properties": { + "data": { + "description": "**Datasets Object Constraints**\n" + "- **Tag limit per dataset**:\n" + " - Each restricted dataset supports a " + "maximum of 10 key:value pairs per product.\n" + "\n" + "- **Tag key rules per telemetry type**:\n" + " - Only one tag key or attribute may be used " + "to define access within a single telemetry " + "type.\n" + " - The same or different tag key may be used " + "across different telemetry types.\n" + "\n" + "- **Tag value uniqueness**:\n" + " - Tag values must be unique within a single " + "dataset.\n" + " - A tag value used in one dataset cannot be " + "reused in another dataset of the same " + "telemetry type.", + "properties": { + "attributes": { + "description": "Dataset metadata and configurations.", + "properties": { + "name": { + "description": "Name of the dataset.", + "example": "Security Audit Dataset", + "type": "string", + }, + "principals": { + "description": "List " + "of " + "access " + "principals, " + "formatted " + "as " + "`principal_type:id`. " + "Principal " + "can " + "be " + "'team' " + "or " + "'role'.", + "example": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], + "items": { + "example": "role:94172442-be03-11e9-a77a-3b7612558ac1", + "type": "string", + }, + "type": "array", + }, + "product_filters": { + "description": "List of product-specific filters.", + "items": { + "description": "Product-specific filters for the dataset.", + "properties": { + "filters": { + "description": "Defines " + "the " + "list " + "of " + "tag-based " + "filters " + "used " + "to " + "restrict " + "access " + "to " + "telemetry " + "data " + "for " + "a " + "specific " + "product.\n" + "These " + "filters " + "act " + "as " + "access " + "control " + "rules. " + "Each " + "filter " + "must " + "follow " + "the " + "tag " + "query " + "syntax " + "used " + "by\n" + "Datadog " + "(such " + "as " + "`@tag.key:value`), " + "and " + "only " + "one " + "tag " + "or " + "attribute " + "may " + "be " + "used " + "to " + "define " + "the " + "access " + "strategy\n" + "per " + "telemetry " + "type.", + "example": ["@application.id:ABCD"], + "items": { + "example": "@application.id:ABCD", + "type": "string", + }, + "type": "array", + }, + "product": { + "description": "Name " + "of " + "the " + "product " + "the " + "dataset " + "is " + "for. " + "Possible " + "values " + "are " + "'apm', " + "'rum',\n" + "'metrics', " + "'logs', " + "'error_tracking', " + "and " + "'cloud_cost'.", + "example": "logs", + "type": "string", + }, + }, + "required": ["product", "filters"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["name", "product_filters", "principals"], + "type": "object", + }, + "type": { + "default": "dataset", + "description": "Resource type, always set to `dataset`.", + "enum": ["dataset"], + "example": "dataset", + "type": "string", + "x-enum-varnames": ["DATASET"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "SCHEDULEDOWNTIME_REQUEST_BODY_SCHEMA": { + "description": "Request for creating a downtime.", + "properties": { + "data": { + "description": "Object to create a downtime.", + "properties": { + "attributes": { + "description": "Downtime details.", + "properties": { + "display_timezone": { + "default": "UTC", + "description": "The " + "timezone " + "in " + "which " + "to " + "display " + "the " + "downtime's " + "start " + "and " + "end " + "times " + "in " + "Datadog " + "applications. " + "This " + "is " + "not " + "used\n" + "as " + "an " + "offset " + "for " + "scheduling.", + "example": "America/New_York", + "nullable": True, + "type": "string", + }, + "message": { + "description": "A " + "message " + "to " + "include " + "with " + "notifications " + "for " + "this " + "downtime. " + "Email " + "notifications " + "can " + "be " + "sent " + "to " + "specific " + "users\n" + "by " + "using " + "the " + "same " + "`@username` " + "notation " + "as " + "events.", + "example": "Message about the downtime", + "nullable": True, + "type": "string", + }, + "monitor_identifier": { + "description": "Monitor identifier for the downtime.", + "oneOf": [ + { + "additionalProperties": {}, + "description": "Object of the monitor identifier.", + "properties": { + "monitor_id": { + "description": "ID " + "of " + "the " + "monitor " + "to " + "prevent " + "notifications.", + "example": 123, + "format": "int64", + "type": "integer", + } + }, + "required": ["monitor_id"], + "type": "object", + }, + { + "additionalProperties": {}, + "description": "Object of the monitor tags.", + "properties": { + "monitor_tags": { + "description": "A " + "list " + "of " + "monitor " + "tags. " + "For " + "example, " + "tags " + "that " + "are " + "applied " + "directly " + "to " + "monitors,\n" + "not " + "tags " + "that " + "are " + "used " + "in " + "monitor " + "queries " + "(which " + "are " + "filtered " + "by " + "the " + "scope " + "parameter), " + "to " + "which " + "the " + "downtime " + "applies.\n" + "The " + "resulting " + "downtime " + "applies " + "to " + "monitors " + "that " + "match " + "**all** " + "provided " + "monitor " + "tags. " + "Setting " + "`monitor_tags`\n" + "to " + "`[*]` " + "configures " + "the " + "downtime " + "to " + "mute " + "all " + "monitors " + "for " + "the " + "given " + "scope.", + "example": ["service:postgres", "team:frontend"], + "items": { + "description": "A list of monitor tags.", + "example": "service:postgres", + "type": "string", + }, + "minItems": 1, + "type": "array", + } + }, + "required": ["monitor_tags"], + "type": "object", + }, + ], + }, + "mute_first_recovery_notification": { + "description": "If " + "the " + "first " + "recovery " + "notification " + "during " + "a " + "downtime " + "should " + "be " + "muted.", + "example": False, + "type": "boolean", + }, + "notify_end_states": { + "description": "States " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "when " + "the " + "`notify_end_types` " + "action " + "occurs.", + "example": ["alert", "warn"], + "items": { + "description": "State " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "when " + "the " + "`notify_end_types` " + "action " + "occurs.", + "enum": ["alert", "no data", "warn"], + "example": "alert", + "type": "string", + "x-enum-varnames": ["ALERT", "NO_DATA", "WARN"], + }, + "type": "array", + }, + "notify_end_types": { + "description": "Actions " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "if " + "the " + "downtime " + "is " + "in " + "the " + "`notify_end_types` " + "state.", + "example": ["canceled", "expired"], + "items": { + "description": "Action " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "if " + "the " + "downtime " + "is " + "in " + "the " + "`notify_end_types` " + "state.", + "enum": ["canceled", "expired"], + "example": "canceled", + "type": "string", + "x-enum-varnames": ["CANCELED", "EXPIRED"], + }, + "type": "array", + }, + "schedule": { + "description": "Schedule for the downtime.", + "oneOf": [ + { + "description": "A recurring downtime schedule definition.", + "properties": { + "recurrences": { + "description": "A list of downtime recurrences.", + "items": { + "additionalProperties": {}, + "description": "An " + "object " + "defining " + "the " + "recurrence " + "of " + "the " + "downtime.", + "properties": { + "duration": { + "description": "The " + "length " + "of " + "the " + "downtime. " + "Must " + "begin " + "with " + "an " + "integer " + "and " + "end " + "with " + "one " + "of " + "'m', " + "'h', " + "d', " + "or " + "'w'.", + "example": "123d", + "type": "string", + }, + "rrule": { + "description": "The " + "`RRULE` " + "standard " + "for " + "defining " + "recurring " + "events.\n" + "For " + "example, " + "to " + "have " + "a " + "recurring " + "event " + "on " + "the " + "first " + "day " + "of " + "each " + "month, " + "set " + "the " + "type " + "to " + "`rrule` " + "and " + "set " + "the " + "`FREQ` " + "to " + "`MONTHLY` " + "and " + "`BYMONTHDAY` " + "to " + "`1`.\n" + "Most " + "common " + "`rrule` " + "options " + "from " + "the " + "[iCalendar " + "Spec](https://tools.ietf.org/html/rfc5545) " + "are " + "supported.\n" + "\n" + "**Note**: " + "Attributes " + "specifying " + "the " + "duration " + "in " + "`RRULE` " + "are " + "not " + "supported " + "(for " + "example, " + "`DTSTART`, " + "`DTEND`, " + "`DURATION`).\n" + "More " + "examples " + "available " + "in " + "this " + "[downtime " + "guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).", + "example": "FREQ=MONTHLY;BYSETPOS=3;BYDAY=WE;INTERVAL=1", + "type": "string", + }, + "start": { + "description": "ISO-8601 " + "Datetime " + "to " + "start " + "the " + "downtime. " + "Must " + "not " + "include " + "a " + "UTC " + "offset. " + "If " + "not " + "provided, " + "the\n" + "downtime " + "starts " + "the " + "moment " + "it " + "is " + "created.", + "example": "2020-01-02T03:04", + "nullable": True, + "type": "string", + }, + }, + "required": ["duration", "rrule"], + "type": "object", + }, + "type": "array", + }, + "timezone": { + "default": "UTC", + "description": "The " + "timezone " + "in " + "which " + "to " + "schedule " + "the " + "downtime.", + "example": "America/New_York", + "type": "string", + }, + }, + "required": ["recurrences"], + "type": "object", + }, + { + "additionalProperties": False, + "description": "A one-time downtime definition.", + "properties": { + "end": { + "description": "ISO-8601 " + "Datetime " + "to " + "end " + "the " + "downtime. " + "Must " + "include " + "a " + "UTC " + "offset " + "of " + "zero. " + "If " + "not " + "provided, " + "the\n" + "downtime " + "continues " + "forever.", + "example": "2020-01-02T03:04:00+00:00", + "format": "date-time", + "nullable": True, + "type": "string", + }, + "start": { + "description": "ISO-8601 " + "Datetime " + "to " + "start " + "the " + "downtime. " + "Must " + "include " + "a " + "UTC " + "offset " + "of " + "zero. " + "If " + "not " + "provided, " + "the\n" + "downtime " + "starts " + "the " + "moment " + "it " + "is " + "created.", + "example": "2020-01-02T03:04:00+00:00", + "format": "date-time", + "nullable": True, + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + "scope": { + "description": "The " + "scope " + "to " + "which " + "the " + "downtime " + "applies. " + "Must " + "follow " + "the " + "[common " + "search " + "syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).", + "example": "env:(staging OR prod) AND datacenter:us-east-1", + "type": "string", + }, + }, + "required": ["scope", "monitor_identifier"], + "type": "object", + }, + "type": { + "default": "downtime", + "description": "Downtime resource type.", + "enum": ["downtime"], + "example": "downtime", + "type": "string", + "x-enum-varnames": ["DOWNTIME"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEDOWNTIME_REQUEST_BODY_SCHEMA": { + "description": "Request for editing a downtime.", + "properties": { + "data": { + "description": "Object to update a downtime.", + "properties": { + "attributes": { + "description": "Attributes of the downtime to update.", + "properties": { + "display_timezone": { + "default": "UTC", + "description": "The " + "timezone " + "in " + "which " + "to " + "display " + "the " + "downtime's " + "start " + "and " + "end " + "times " + "in " + "Datadog " + "applications. " + "This " + "is " + "not " + "used\n" + "as " + "an " + "offset " + "for " + "scheduling.", + "example": "America/New_York", + "nullable": True, + "type": "string", + }, + "message": { + "description": "A " + "message " + "to " + "include " + "with " + "notifications " + "for " + "this " + "downtime. " + "Email " + "notifications " + "can " + "be " + "sent " + "to " + "specific " + "users\n" + "by " + "using " + "the " + "same " + "`@username` " + "notation " + "as " + "events.", + "example": "Message about the downtime", + "nullable": True, + "type": "string", + }, + "monitor_identifier": { + "description": "Monitor identifier for the downtime.", + "oneOf": [ + { + "additionalProperties": {}, + "description": "Object of the monitor identifier.", + "properties": { + "monitor_id": { + "description": "ID " + "of " + "the " + "monitor " + "to " + "prevent " + "notifications.", + "example": 123, + "format": "int64", + "type": "integer", + } + }, + "required": ["monitor_id"], + "type": "object", + }, + { + "additionalProperties": {}, + "description": "Object of the monitor tags.", + "properties": { + "monitor_tags": { + "description": "A " + "list " + "of " + "monitor " + "tags. " + "For " + "example, " + "tags " + "that " + "are " + "applied " + "directly " + "to " + "monitors,\n" + "not " + "tags " + "that " + "are " + "used " + "in " + "monitor " + "queries " + "(which " + "are " + "filtered " + "by " + "the " + "scope " + "parameter), " + "to " + "which " + "the " + "downtime " + "applies.\n" + "The " + "resulting " + "downtime " + "applies " + "to " + "monitors " + "that " + "match " + "**all** " + "provided " + "monitor " + "tags. " + "Setting " + "`monitor_tags`\n" + "to " + "`[*]` " + "configures " + "the " + "downtime " + "to " + "mute " + "all " + "monitors " + "for " + "the " + "given " + "scope.", + "example": ["service:postgres", "team:frontend"], + "items": { + "description": "A list of monitor tags.", + "example": "service:postgres", + "type": "string", + }, + "minItems": 1, + "type": "array", + } + }, + "required": ["monitor_tags"], + "type": "object", + }, + ], + }, + "mute_first_recovery_notification": { + "description": "If " + "the " + "first " + "recovery " + "notification " + "during " + "a " + "downtime " + "should " + "be " + "muted.", + "example": False, + "type": "boolean", + }, + "notify_end_states": { + "description": "States " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "when " + "the " + "`notify_end_types` " + "action " + "occurs.", + "example": ["alert", "warn"], + "items": { + "description": "State " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "when " + "the " + "`notify_end_types` " + "action " + "occurs.", + "enum": ["alert", "no data", "warn"], + "example": "alert", + "type": "string", + "x-enum-varnames": ["ALERT", "NO_DATA", "WARN"], + }, + "type": "array", + }, + "notify_end_types": { + "description": "Actions " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "if " + "the " + "downtime " + "is " + "in " + "the " + "`notify_end_types` " + "state.", + "example": ["canceled", "expired"], + "items": { + "description": "Action " + "that " + "will " + "trigger " + "a " + "monitor " + "notification " + "if " + "the " + "downtime " + "is " + "in " + "the " + "`notify_end_types` " + "state.", + "enum": ["canceled", "expired"], + "example": "canceled", + "type": "string", + "x-enum-varnames": ["CANCELED", "EXPIRED"], + }, + "type": "array", + }, + "schedule": { + "description": "Schedule for the downtime.", + "oneOf": [ + { + "additionalProperties": False, + "description": "A recurring downtime schedule definition.", + "properties": { + "recurrences": { + "description": "A list of downtime recurrences.", + "items": { + "additionalProperties": {}, + "description": "An " + "object " + "defining " + "the " + "recurrence " + "of " + "the " + "downtime.", + "properties": { + "duration": { + "description": "The " + "length " + "of " + "the " + "downtime. " + "Must " + "begin " + "with " + "an " + "integer " + "and " + "end " + "with " + "one " + "of " + "'m', " + "'h', " + "d', " + "or " + "'w'.", + "example": "123d", + "type": "string", + }, + "rrule": { + "description": "The " + "`RRULE` " + "standard " + "for " + "defining " + "recurring " + "events.\n" + "For " + "example, " + "to " + "have " + "a " + "recurring " + "event " + "on " + "the " + "first " + "day " + "of " + "each " + "month, " + "set " + "the " + "type " + "to " + "`rrule` " + "and " + "set " + "the " + "`FREQ` " + "to " + "`MONTHLY` " + "and " + "`BYMONTHDAY` " + "to " + "`1`.\n" + "Most " + "common " + "`rrule` " + "options " + "from " + "the " + "[iCalendar " + "Spec](https://tools.ietf.org/html/rfc5545) " + "are " + "supported.\n" + "\n" + "**Note**: " + "Attributes " + "specifying " + "the " + "duration " + "in " + "`RRULE` " + "are " + "not " + "supported " + "(for " + "example, " + "`DTSTART`, " + "`DTEND`, " + "`DURATION`).\n" + "More " + "examples " + "available " + "in " + "this " + "[downtime " + "guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).", + "example": "FREQ=MONTHLY;BYSETPOS=3;BYDAY=WE;INTERVAL=1", + "type": "string", + }, + "start": { + "description": "ISO-8601 " + "Datetime " + "to " + "start " + "the " + "downtime. " + "Must " + "not " + "include " + "a " + "UTC " + "offset. " + "If " + "not " + "provided, " + "the\n" + "downtime " + "starts " + "the " + "moment " + "it " + "is " + "created.", + "example": "2020-01-02T03:04", + "nullable": True, + "type": "string", + }, + }, + "required": ["duration", "rrule"], + "type": "object", + }, + "type": "array", + }, + "timezone": { + "default": "UTC", + "description": "The " + "timezone " + "in " + "which " + "to " + "schedule " + "the " + "downtime.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + { + "additionalProperties": False, + "description": "A one-time downtime definition.", + "properties": { + "end": { + "description": "ISO-8601 " + "Datetime " + "to " + "end " + "the " + "downtime. " + "Must " + "include " + "a " + "UTC " + "offset " + "of " + "zero. " + "If " + "not " + "provided, " + "the\n" + "downtime " + "continues " + "forever.", + "example": "2020-01-02T03:04:00+00:00", + "format": "date-time", + "nullable": True, + "type": "string", + }, + "start": { + "description": "ISO-8601 " + "Datetime " + "to " + "start " + "the " + "downtime. " + "Must " + "include " + "a " + "UTC " + "offset " + "of " + "zero. " + "If " + "not " + "provided, " + "the\n" + "downtime " + "starts " + "the " + "moment " + "it " + "is " + "created.", + "example": "2020-01-02T03:04:00+00:00", + "format": "date-time", + "nullable": True, + "type": "string", + }, + }, + "type": "object", + }, + ], + }, + "scope": { + "description": "The " + "scope " + "to " + "which " + "the " + "downtime " + "applies. " + "Must " + "follow " + "the " + "[common " + "search " + "syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).", + "example": "env:(staging OR prod) AND datacenter:us-east-1", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "ID of this downtime.", + "example": "00000000-0000-1234-0000-000000000000", + "type": "string", + }, + "type": { + "default": "downtime", + "description": "Downtime resource type.", + "enum": ["downtime"], + "example": "downtime", + "type": "string", + "x-enum-varnames": ["DOWNTIME"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEINCIDENT_REQUEST_BODY_SCHEMA": { + "description": "Create request for an incident.", + "properties": { + "data": { + "description": "Incident data for a create request.", + "properties": { + "attributes": { + "description": "The incident's attributes for a create request.", + "properties": { + "customer_impact_scope": { + "description": "Required " + "if " + '`customer_impacted:"true"`. ' + "A " + "summary " + "of " + "the " + "impact " + "customers " + "experienced " + "during " + "the " + "incident.", + "example": "Example customer impact scope", + "type": "string", + }, + "customer_impacted": { + "description": "A " + "flag " + "indicating " + "whether " + "the " + "incident " + "caused " + "customer " + "impact.", + "example": False, + "type": "boolean", + }, + "fields": { + "additionalProperties": { + "description": "Dynamic " + "fields " + "for " + "which " + "selections " + "can " + "be " + "made, " + "with " + "field " + "names " + "as " + "keys.", + "oneOf": [ + { + "description": "A field with a single value selected.", + "properties": { + "type": { + "default": "dropdown", + "description": "Type " + "of " + "the " + "single " + "value " + "field " + "definitions.", + "enum": ["dropdown", "textbox"], + "example": "dropdown", + "type": "string", + "x-enum-varnames": ["DROPDOWN", "TEXTBOX"], + }, + "value": { + "description": "The " + "single " + "value " + "selected " + "for " + "this " + "field.", + "example": "SEV-1", + "nullable": True, + "type": "string", + }, + }, + "type": "object", + }, + { + "description": "A " + "field " + "with " + "potentially " + "multiple " + "values " + "selected.", + "properties": { + "type": { + "default": "multiselect", + "description": "Type " + "of " + "the " + "multiple " + "value " + "field " + "definitions.", + "enum": [ + "multiselect", + "textarray", + "metrictag", + "autocomplete", + ], + "example": "multiselect", + "type": "string", + "x-enum-varnames": [ + "MULTISELECT", + "TEXTARRAY", + "METRICTAG", + "AUTOCOMPLETE", + ], + }, + "value": { + "description": "The " + "multiple " + "values " + "selected " + "for " + "this " + "field.", + "example": ["1.0", "1.1"], + "items": { + "description": "A " + "value " + "which " + "has " + "been " + "selected " + "for " + "the " + "parent " + "field.", + "example": "1.1", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + "description": "A " + "condensed " + "view " + "of " + "the " + "user-defined " + "fields " + "for " + "which " + "to " + "create " + "initial " + "selections.", + "example": {"severity": {"type": "dropdown", "value": "SEV-5"}}, + "type": "object", + }, + "incident_type_uuid": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "an " + "incident " + "type. " + "The " + "default " + "incident " + "type " + "will " + "be " + "used " + "if " + "this " + "property " + "is " + "not " + "provided.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string", + }, + "initial_cells": { + "description": "An " + "array " + "of " + "initial " + "timeline " + "cells " + "to " + "be " + "placed " + "at " + "the " + "beginning " + "of " + "the " + "incident " + "timeline.", + "items": { + "description": "The " + "timeline " + "cell's " + "attributes " + "for " + "a " + "create " + "request.", + "oneOf": [ + { + "description": "Timeline " + "cell " + "data " + "for " + "Markdown " + "timeline " + "cells " + "for " + "a " + "create " + "request.", + "properties": { + "cell_type": { + "default": "markdown", + "description": "Type " + "of " + "the " + "Markdown " + "timeline " + "cell.", + "enum": ["markdown"], + "example": "markdown", + "type": "string", + "x-enum-varnames": ["MARKDOWN"], + }, + "content": { + "description": "The " + "Markdown " + "timeline " + "cell " + "contents.", + "properties": { + "content": { + "description": "The " + "Markdown " + "content " + "of " + "the " + "cell.", + "example": "An " + "example " + "timeline " + "cell " + "message.", + "nullable": False, + "type": "string", + } + }, + "type": "object", + }, + "important": { + "default": False, + "description": "A " + "flag " + "indicating " + "whether " + "the " + "timeline " + "cell " + "is " + "important " + "and " + "should " + "be " + "highlighted.", + "example": False, + "type": "boolean", + }, + }, + "required": ["content", "cell_type"], + "type": "object", + } + ], + }, + "type": "array", + }, + "is_test": { + "description": "A " + "flag " + "indicating " + "whether " + "the " + "incident " + "is " + "a " + "test " + "incident.", + "example": False, + "type": "boolean", + }, + "notification_handles": { + "description": "Notification " + "handles " + "that " + "will " + "be " + "notified " + "of " + "the " + "incident " + "at " + "creation.", + "example": [ + {"display_name": "Jane Doe", "handle": "@user@email.com"}, + {"display_name": "Slack Channel", "handle": "@slack-channel"}, + { + "display_name": "Incident Workflow", + "handle": "@workflow-from-incident", + }, + ], + "items": { + "description": "A " + "notification " + "handle " + "that " + "will " + "be " + "notified " + "at " + "incident " + "creation.", + "properties": { + "display_name": { + "description": "The name of the notified handle.", + "example": "Jane Doe", + "type": "string", + }, + "handle": { + "description": "The " + "handle " + "used " + "for " + "the " + "notification. " + "This " + "includes " + "an " + "email " + "address, " + "Slack " + "channel, " + "or " + "workflow.", + "example": "@test.user@test.com", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "title": { + "description": "The " + "title " + "of " + "the " + "incident, " + "which " + "summarizes " + "what " + "happened.", + "example": "A test incident title", + "type": "string", + }, + }, + "required": ["title", "customer_impacted"], + "type": "object", + }, + "relationships": { + "description": "The " + "relationships " + "the incident " + "will have " + "with other " + "resources " + "once " + "created.", + "properties": { + "commander_user": { + "description": "Relationship to user.", + "nullable": True, + "properties": { + "data": { + "description": "Relationship to user object.", + "nullable": True, + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + } + }, + "required": ["commander_user"], + "type": "object", + }, + "type": { + "default": "incidents", + "description": "Incident resource type.", + "enum": ["incidents"], + "example": "incidents", + "type": "string", + "x-enum-varnames": ["INCIDENTS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEINCIDENTNOTIFICATIONRULE_REQUEST_BODY_SCHEMA": { + "description": "Create request for a notification rule.", + "properties": { + "data": { + "description": "Notification rule data for a create request.", + "properties": { + "attributes": { + "description": "The attributes for creating a notification rule.", + "properties": { + "conditions": { + "description": "The " + "conditions " + "that " + "trigger " + "this " + "notification " + "rule.", + "example": [{"field": "severity", "values": ["SEV-1", "SEV-2"]}], + "items": { + "description": "A " + "condition " + "that " + "must " + "be " + "met " + "to " + "trigger " + "the " + "notification " + "rule.", + "properties": { + "field": { + "description": "The incident field to evaluate", + "example": "severity", + "type": "string", + }, + "values": { + "description": "The " + "value(s) " + "to " + "compare " + "against. " + "Multiple " + "values " + "are " + "`ORed` " + "together.", + "example": ["SEV-1", "SEV-2"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["field", "values"], + "type": "object", + }, + "type": "array", + }, + "enabled": { + "default": False, + "description": "Whether the notification rule is enabled.", + "example": True, + "type": "boolean", + }, + "handles": { + "description": "The notification handles (targets) for this rule.", + "example": ["@team-email@company.com", "@slack-channel"], + "items": { + "description": "A " + "notification " + "handle " + "(email, " + "Slack " + "channel, " + "etc.).", + "type": "string", + }, + "type": "array", + }, + "renotify_on": { + "description": "List " + "of " + "incident " + "fields " + "that " + "trigger " + "re-notification " + "when " + "changed.", + "example": ["status", "severity"], + "items": { + "description": "An incident field name.", + "type": "string", + }, + "type": "array", + }, + "trigger": { + "description": "The trigger event for this notification rule.", + "example": "incident_created_trigger", + "type": "string", + }, + "visibility": { + "description": "The visibility of the notification rule.", + "enum": ["all", "organization", "private"], + "example": "organization", + "type": "string", + "x-enum-varnames": ["ALL", "ORGANIZATION", "PRIVATE"], + }, + }, + "required": ["conditions", "handles", "trigger"], + "type": "object", + }, + "relationships": { + "description": "The " + "definition " + "of " + "`NotificationRuleCreateDataRelationships` " + "object.", + "properties": { + "incident_type": { + "description": "Relationship to an incident type.", + "properties": { + "data": { + "description": "Relationship to incident type object.", + "properties": { + "id": { + "description": "The incident type's ID.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "incident_types", + "description": "Incident type resource type.", + "enum": ["incident_types"], + "example": "incident_types", + "type": "string", + "x-enum-varnames": ["INCIDENT_TYPES"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "notification_template": { + "description": "A " + "relationship " + "reference " + "to " + "a " + "notification " + "template.", + "properties": { + "data": { + "description": "The " + "notification " + "template " + "relationship " + "data.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "notification " + "template.", + "example": "00000000-0000-0000-0000-000000000001", + "format": "uuid", + "type": "string", + }, + "type": { + "description": "Notification " + "templates " + "resource " + "type.", + "enum": ["notification_templates"], + "example": "notification_templates", + "type": "string", + "x-enum-varnames": ["NOTIFICATION_TEMPLATES"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "description": "Notification rules resource type.", + "enum": ["incident_notification_rules"], + "example": "incident_notification_rules", + "type": "string", + "x-enum-varnames": ["INCIDENT_NOTIFICATION_RULES"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEINCIDENTNOTIFICATIONRULE_REQUEST_BODY_SCHEMA": { + "description": "Put request for a notification rule.", + "properties": { + "data": { + "description": "Notification rule data for an update request.", + "properties": { + "attributes": { + "description": "The attributes for creating a notification rule.", + "properties": { + "conditions": { + "description": "The " + "conditions " + "that " + "trigger " + "this " + "notification " + "rule.", + "example": [{"field": "severity", "values": ["SEV-1", "SEV-2"]}], + "items": { + "description": "A " + "condition " + "that " + "must " + "be " + "met " + "to " + "trigger " + "the " + "notification " + "rule.", + "properties": { + "field": { + "description": "The incident field to evaluate", + "example": "severity", + "type": "string", + }, + "values": { + "description": "The " + "value(s) " + "to " + "compare " + "against. " + "Multiple " + "values " + "are " + "`ORed` " + "together.", + "example": ["SEV-1", "SEV-2"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["field", "values"], + "type": "object", + }, + "type": "array", + }, + "enabled": { + "default": False, + "description": "Whether the notification rule is enabled.", + "example": True, + "type": "boolean", + }, + "handles": { + "description": "The notification handles (targets) for this rule.", + "example": ["@team-email@company.com", "@slack-channel"], + "items": { + "description": "A " + "notification " + "handle " + "(email, " + "Slack " + "channel, " + "etc.).", + "type": "string", + }, + "type": "array", + }, + "renotify_on": { + "description": "List " + "of " + "incident " + "fields " + "that " + "trigger " + "re-notification " + "when " + "changed.", + "example": ["status", "severity"], + "items": { + "description": "An incident field name.", + "type": "string", + }, + "type": "array", + }, + "trigger": { + "description": "The trigger event for this notification rule.", + "example": "incident_created_trigger", + "type": "string", + }, + "visibility": { + "description": "The visibility of the notification rule.", + "enum": ["all", "organization", "private"], + "example": "organization", + "type": "string", + "x-enum-varnames": ["ALL", "ORGANIZATION", "PRIVATE"], + }, + }, + "required": ["conditions", "handles", "trigger"], + "type": "object", + }, + "id": { + "description": "The unique identifier of the notification rule.", + "example": "00000000-0000-0000-0000-000000000001", + "format": "uuid", + "type": "string", + }, + "relationships": { + "description": "The " + "definition " + "of " + "`NotificationRuleCreateDataRelationships` " + "object.", + "properties": { + "incident_type": { + "description": "Relationship to an incident type.", + "properties": { + "data": { + "description": "Relationship to incident type object.", + "properties": { + "id": { + "description": "The incident type's ID.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "incident_types", + "description": "Incident type resource type.", + "enum": ["incident_types"], + "example": "incident_types", + "type": "string", + "x-enum-varnames": ["INCIDENT_TYPES"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "notification_template": { + "description": "A " + "relationship " + "reference " + "to " + "a " + "notification " + "template.", + "properties": { + "data": { + "description": "The " + "notification " + "template " + "relationship " + "data.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "notification " + "template.", + "example": "00000000-0000-0000-0000-000000000001", + "format": "uuid", + "type": "string", + }, + "type": { + "description": "Notification " + "templates " + "resource " + "type.", + "enum": ["notification_templates"], + "example": "notification_templates", + "type": "string", + "x-enum-varnames": ["NOTIFICATION_TEMPLATES"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "description": "Notification rules resource type.", + "enum": ["incident_notification_rules"], + "example": "incident_notification_rules", + "type": "string", + "x-enum-varnames": ["INCIDENT_NOTIFICATION_RULES"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEINCIDENTTYPE_REQUEST_BODY_SCHEMA": { + "description": "Patch request for an incident type.", + "properties": { + "data": { + "description": "Incident type data for a patch request.", + "properties": { + "attributes": { + "description": "Incident type's attributes for updates.", + "properties": { + "createdAt": { + "description": "Timestamp when the incident type was created.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "createdBy": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user " + "that " + "created " + "the " + "incident " + "type.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": True, + "type": "string", + }, + "description": { + "description": "Text that describes the incident type.", + "example": "Any " + "incidents " + "that " + "harm " + "(or " + "have " + "the " + "potential " + "to) " + "the " + "confidentiality, " + "integrity, " + "or " + "availability " + "of " + "our " + "data. " + "Note: " + "This " + "will " + "notify " + "the " + "security " + "team.", + "type": "string", + }, + "is_default": { + "description": "When " + "true, " + "this " + "incident " + "type " + "will " + "be " + "used " + "as " + "the " + "default " + "type " + "when " + "an " + "incident " + "type " + "is " + "not " + "specified.", + "example": False, + "type": "boolean", + }, + "lastModifiedBy": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user " + "that " + "last " + "modified " + "the " + "incident " + "type.", + "example": "00000000-0000-0000-0000-000000000000", + "readOnly": True, + "type": "string", + }, + "modifiedAt": { + "description": "Timestamp " + "when " + "the " + "incident " + "type " + "was " + "last " + "modified.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "name": { + "description": "The name of the incident type.", + "example": "Security Incident", + "type": "string", + }, + "prefix": { + "description": "The " + "string " + "that " + "will " + "be " + "prepended " + "to " + "the " + "incident " + "title " + "across " + "the " + "Datadog " + "app.", + "example": "IR", + "readOnly": True, + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The incident type's ID.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "incident_types", + "description": "Incident type resource type.", + "enum": ["incident_types"], + "example": "incident_types", + "type": "string", + "x-enum-varnames": ["INCIDENT_TYPES"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEINCIDENT_REQUEST_BODY_SCHEMA": { + "description": "Update request for an incident.", + "properties": { + "data": { + "description": "Incident data for an update request.", + "properties": { + "attributes": { + "description": "The incident's attributes for an update request.", + "properties": { + "customer_impact_end": { + "description": "Timestamp " + "when " + "customers " + "were " + "no " + "longer " + "impacted " + "by " + "the " + "incident.", + "format": "date-time", + "nullable": True, + "type": "string", + }, + "customer_impact_scope": { + "description": "A " + "summary " + "of " + "the " + "impact " + "customers " + "experienced " + "during " + "the " + "incident.", + "example": "Example customer impact scope", + "type": "string", + }, + "customer_impact_start": { + "description": "Timestamp " + "when " + "customers " + "began " + "being " + "impacted " + "by " + "the " + "incident.", + "format": "date-time", + "nullable": True, + "type": "string", + }, + "customer_impacted": { + "description": "A " + "flag " + "indicating " + "whether " + "the " + "incident " + "caused " + "customer " + "impact.", + "example": False, + "type": "boolean", + }, + "detected": { + "description": "Timestamp when the incident was detected.", + "format": "date-time", + "nullable": True, + "type": "string", + }, + "fields": { + "additionalProperties": { + "description": "Dynamic " + "fields " + "for " + "which " + "selections " + "can " + "be " + "made, " + "with " + "field " + "names " + "as " + "keys.", + "oneOf": [ + { + "description": "A field with a single value selected.", + "properties": { + "type": { + "default": "dropdown", + "description": "Type " + "of " + "the " + "single " + "value " + "field " + "definitions.", + "enum": ["dropdown", "textbox"], + "example": "dropdown", + "type": "string", + "x-enum-varnames": ["DROPDOWN", "TEXTBOX"], + }, + "value": { + "description": "The " + "single " + "value " + "selected " + "for " + "this " + "field.", + "example": "SEV-1", + "nullable": True, + "type": "string", + }, + }, + "type": "object", + }, + { + "description": "A " + "field " + "with " + "potentially " + "multiple " + "values " + "selected.", + "properties": { + "type": { + "default": "multiselect", + "description": "Type " + "of " + "the " + "multiple " + "value " + "field " + "definitions.", + "enum": [ + "multiselect", + "textarray", + "metrictag", + "autocomplete", + ], + "example": "multiselect", + "type": "string", + "x-enum-varnames": [ + "MULTISELECT", + "TEXTARRAY", + "METRICTAG", + "AUTOCOMPLETE", + ], + }, + "value": { + "description": "The " + "multiple " + "values " + "selected " + "for " + "this " + "field.", + "example": ["1.0", "1.1"], + "items": { + "description": "A " + "value " + "which " + "has " + "been " + "selected " + "for " + "the " + "parent " + "field.", + "example": "1.1", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + ], + }, + "description": "A " + "condensed " + "view " + "of " + "the " + "user-defined " + "fields " + "for " + "which " + "to " + "update " + "selections.", + "example": {"severity": {"type": "dropdown", "value": "SEV-5"}}, + "type": "object", + }, + "notification_handles": { + "description": "Notification " + "handles " + "that " + "will " + "be " + "notified " + "of " + "the " + "incident " + "during " + "update.", + "example": [ + {"display_name": "Jane Doe", "handle": "@user@email.com"}, + {"display_name": "Slack Channel", "handle": "@slack-channel"}, + { + "display_name": "Incident Workflow", + "handle": "@workflow-from-incident", + }, + ], + "items": { + "description": "A " + "notification " + "handle " + "that " + "will " + "be " + "notified " + "at " + "incident " + "creation.", + "properties": { + "display_name": { + "description": "The name of the notified handle.", + "example": "Jane Doe", + "type": "string", + }, + "handle": { + "description": "The " + "handle " + "used " + "for " + "the " + "notification. " + "This " + "includes " + "an " + "email " + "address, " + "Slack " + "channel, " + "or " + "workflow.", + "example": "@test.user@test.com", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "title": { + "description": "The " + "title " + "of " + "the " + "incident, " + "which " + "summarizes " + "what " + "happened.", + "example": "A test incident title", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The incident's ID.", + "example": "00000000-0000-0000-4567-000000000000", + "type": "string", + }, + "relationships": { + "description": "The incident's relationships for an update request.", + "properties": { + "commander_user": { + "description": "Relationship to user.", + "nullable": True, + "properties": { + "data": { + "description": "Relationship to user object.", + "nullable": True, + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user.", + "example": "00000000-0000-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "integrations": { + "description": "A " + "relationship " + "reference " + "for " + "multiple " + "integration " + "metadata " + "objects.", + "example": { + "data": [ + { + "id": "00000000-abcd-0005-0000-000000000000", + "type": "incident_integrations", + }, + { + "id": "00000000-abcd-0006-0000-000000000000", + "type": "incident_integrations", + }, + ] + }, + "properties": { + "data": { + "description": "Integration metadata relationship array", + "example": [ + { + "id": "00000000-abcd-0003-0000-000000000000", + "type": "incident_integrations", + }, + { + "id": "00000000-abcd-0004-0000-000000000000", + "type": "incident_integrations", + }, + ], + "items": { + "description": "A " + "relationship " + "reference " + "for " + "an " + "integration " + "metadata " + "object.", + "example": { + "id": "00000000-abcd-0002-0000-000000000000", + "type": "incident_integrations", + }, + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "integration " + "metadata.", + "example": "00000000-abcd-0001-0000-000000000000", + "type": "string", + }, + "type": { + "default": "incident_integrations", + "description": "Integration " + "metadata " + "resource " + "type.", + "enum": ["incident_integrations"], + "example": "incident_integrations", + "type": "string", + "x-enum-varnames": ["INCIDENT_INTEGRATIONS"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["data"], + "type": "object", + }, + "postmortem": { + "description": "A relationship reference for postmortems.", + "example": { + "data": { + "id": "00000000-0000-abcd-3000-000000000000", + "type": "incident_postmortems", + } + }, + "properties": { + "data": { + "description": "The postmortem relationship data.", + "example": { + "id": "00000000-0000-abcd-2000-000000000000", + "type": "incident_postmortems", + }, + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "postmortem.", + "example": "00000000-0000-abcd-1000-000000000000", + "type": "string", + }, + "type": { + "default": "incident_postmortems", + "description": "Incident postmortem resource type.", + "enum": ["incident_postmortems"], + "example": "incident_postmortems", + "type": "string", + "x-enum-varnames": ["INCIDENT_POSTMORTEMS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "default": "incidents", + "description": "Incident resource type.", + "enum": ["incidents"], + "example": "incidents", + "type": "string", + "x-enum-varnames": ["INCIDENTS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "MANAGEINCIDENTATTACHMENTS_REQUEST_BODY_SCHEMA": { + "description": "The update request for an incident's attachments.", + "properties": { + "data": { + "description": "An array of incident attachments. An " + 'attachment object without an "id" key ' + "indicates that you want to\n" + "create that attachment. An attachment object " + 'without an "attributes" key indicates that ' + "you want to\n" + "delete that attachment. An attachment object " + 'with both the "id" key and a populated ' + '"attributes" object\n' + "indicates that you want to update that " + "attachment.", + "example": [ + { + "attributes": { + "attachment": { + "documentUrl": "https://app.datadoghq.com/notebook/123", + "title": "Postmortem IR-123", + }, + "attachment_type": "postmortem", + }, + "id": "00000000-abcd-0002-0000-000000000000", + "type": "incident_attachments", + }, + { + "attributes": { + "attachment": { + "documentUrl": "https://www.example.com/webstore-failure-runbook", + "title": "Runbook for webstore service failures", + }, + "attachment_type": "link", + }, + "type": "incident_attachments", + }, + {"id": "00000000-abcd-0003-0000-000000000000", "type": "incident_attachments"}, + ], + "items": { + "description": "A single incident attachment.", + "properties": { + "attributes": { + "description": "Incident attachment attributes.", + "oneOf": [ + { + "description": "The " + "attributes " + "object " + "for " + "a " + "postmortem " + "attachment.", + "properties": { + "attachment": { + "description": "The postmortem attachment.", + "properties": { + "documentUrl": { + "description": "The " + "URL " + "of " + "this " + "notebook " + "attachment.", + "example": "https://app.datadoghq.com/notebook/123", + "type": "string", + }, + "title": { + "description": "The " + "title " + "of " + "this " + "postmortem " + "attachment.", + "example": "Postmortem IR-123", + "type": "string", + }, + }, + "required": ["documentUrl", "title"], + "type": "object", + }, + "attachment_type": { + "default": "postmortem", + "description": "The " + "type " + "of " + "postmortem " + "attachment " + "attributes.", + "enum": ["postmortem"], + "example": "postmortem", + "type": "string", + "x-enum-varnames": ["POSTMORTEM"], + }, + }, + "required": ["attachment_type", "attachment"], + "type": "object", + }, + { + "description": "The attributes object for a link attachment.", + "properties": { + "attachment": { + "description": "The link attachment.", + "properties": { + "documentUrl": { + "description": "The " + "URL " + "of " + "this " + "link " + "attachment.", + "example": "https://www.example.com/webstore-failure-runbook", + "type": "string", + }, + "title": { + "description": "The " + "title " + "of " + "this " + "link " + "attachment.", + "example": "Runbook " + "for " + "webstore " + "service " + "failures", + "type": "string", + }, + }, + "required": ["documentUrl", "title"], + "type": "object", + }, + "attachment_type": { + "default": "link", + "description": "The " + "type " + "of " + "link " + "attachment " + "attributes.", + "enum": ["link"], + "example": "link", + "type": "string", + "x-enum-varnames": ["LINK"], + }, + "modified": { + "description": "Timestamp " + "when " + "the " + "incident " + "attachment " + "link " + "was " + "last " + "modified.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + }, + "required": ["attachment_type", "attachment"], + "type": "object", + }, + ], + }, + "id": { + "description": "A unique " + "identifier " + "that " + "represents " + "the incident " + "attachment.", + "example": "00000000-abcd-0001-0000-000000000000", + "type": "string", + }, + "type": { + "default": "incident_attachments", + "description": "The incident attachment resource type.", + "enum": ["incident_attachments"], + "example": "incident_attachments", + "type": "string", + "x-enum-varnames": ["INCIDENT_ATTACHMENTS"], + }, + }, + "required": ["type"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEINCIDENTIMPACT_REQUEST_BODY_SCHEMA": { + "description": "Create request for an incident impact.", + "properties": { + "data": { + "description": "Incident impact data for a create request.", + "properties": { + "attributes": { + "description": "The incident impact's attributes for a create request.", + "properties": { + "description": { + "description": "Description of the impact.", + "example": "Service was unavailable for external users", + "type": "string", + }, + "end_at": { + "description": "Timestamp when the impact ended.", + "example": "2025-08-29T13:17:00Z", + "format": "date-time", + "nullable": True, + "type": "string", + }, + "fields": { + "additionalProperties": {}, + "description": "An " + "object " + "mapping " + "impact " + "field " + "names " + "to " + "field " + "values.", + "example": { + "customers_impacted": "all", + "products_impacted": ["shopping", "marketing"], + }, + "nullable": True, + "type": "object", + }, + "start_at": { + "description": "Timestamp when the impact started.", + "example": "2025-08-28T13:17:00Z", + "format": "date-time", + "type": "string", + }, + }, + "required": ["description", "start_at"], + "type": "object", + }, + "type": { + "default": "incident_impacts", + "description": "Incident impact resource type.", + "enum": ["incident_impacts"], + "example": "incident_impacts", + "type": "string", + "x-enum-varnames": ["INCIDENT_IMPACTS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA": { + "description": "Create request for an incident integration metadata.", + "properties": { + "data": { + "description": "Incident integration metadata data for a create request.", + "properties": { + "attributes": { + "description": "Incident " + "integration " + "metadata's " + "attributes for " + "a create " + "request.", + "properties": { + "created": { + "description": "Timestamp when the incident todo was created.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "incident_id": { + "description": "UUID " + "of " + "the " + "incident " + "this " + "integration " + "metadata " + "is " + "connected " + "to.", + "example": "00000000-aaaa-0000-0000-000000000000", + "type": "string", + }, + "integration_type": { + "description": "A " + "number " + "indicating " + "the " + "type " + "of " + "integration " + "this " + "metadata " + "is " + "for. " + "1 " + "indicates " + "Slack;\n" + "8 " + "indicates " + "Jira.", + "example": 1, + "format": "int32", + "maximum": 9, + "type": "integer", + }, + "metadata": { + "description": "Incident " + "integration " + "metadata's " + "metadata " + "attribute.", + "oneOf": [ + { + "description": "Incident " + "integration " + "metadata " + "for " + "the " + "Slack " + "integration.", + "properties": { + "channels": { + "description": "Array " + "of " + "Slack " + "channels " + "in " + "this " + "integration " + "metadata.", + "example": [], + "items": { + "description": "Item " + "in " + "the " + "Slack " + "integration " + "metadata " + "channel " + "array.", + "properties": { + "channel_id": { + "description": "Slack channel ID.", + "example": "C0123456789", + "type": "string", + }, + "channel_name": { + "description": "Name " + "of " + "the " + "Slack " + "channel.", + "example": "#example-channel-name", + "type": "string", + }, + "redirect_url": { + "description": "URL " + "redirecting " + "to " + "the " + "Slack " + "channel.", + "example": "https://slack.com/app_redirect?channel=C0123456789&team=T01234567", + "type": "string", + }, + "team_id": { + "description": "Slack team ID.", + "example": "T01234567", + "type": "string", + }, + }, + "required": [ + "channel_id", + "channel_name", + "redirect_url", + ], + "type": "object", + }, + "type": "array", + } + }, + "required": ["channels"], + "type": "object", + }, + { + "description": "Incident " + "integration " + "metadata " + "for " + "the " + "Jira " + "integration.", + "properties": { + "issues": { + "description": "Array " + "of " + "Jira " + "issues " + "in " + "this " + "integration " + "metadata.", + "example": [], + "items": { + "description": "Item " + "in " + "the " + "Jira " + "integration " + "metadata " + "issue " + "array.", + "properties": { + "account": { + "description": "URL " + "of " + "issue's " + "Jira " + "account.", + "example": "https://example.atlassian.net", + "type": "string", + }, + "issue_key": { + "description": "Jira " + "issue's " + "issue " + "key.", + "example": "PROJ-123", + "type": "string", + }, + "issuetype_id": { + "description": "Jira " + "issue's " + "issue " + "type.", + "example": "1000", + "type": "string", + }, + "project_key": { + "description": "Jira " + "issue's " + "project " + "keys.", + "example": "PROJ", + "type": "string", + }, + "redirect_url": { + "description": "URL " + "redirecting " + "to " + "the " + "Jira " + "issue.", + "example": "https://example.atlassian.net/browse/PROJ-123", + "type": "string", + }, + }, + "required": ["project_key", "account"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["issues"], + "type": "object", + }, + { + "description": "Incident " + "integration " + "metadata " + "for " + "the " + "Microsoft " + "Teams " + "integration.", + "properties": { + "teams": { + "description": "Array " + "of " + "Microsoft " + "Teams " + "in " + "this " + "integration " + "metadata.", + "example": [], + "items": { + "description": "Item " + "in " + "the " + "Microsoft " + "Teams " + "integration " + "metadata " + "teams " + "array.", + "properties": { + "ms_channel_id": { + "description": "Microsoft " + "Teams " + "channel " + "ID.", + "example": "19:abc00abcdef00a0abcdef0abcdef0a@thread.tacv2", + "type": "string", + }, + "ms_channel_name": { + "description": "Microsoft " + "Teams " + "channel " + "name.", + "example": "incident-0001-example", + "type": "string", + }, + "ms_tenant_id": { + "description": "Microsoft " + "Teams " + "tenant " + "ID.", + "example": "00000000-abcd-0005-0000-000000000000", + "type": "string", + }, + "redirect_url": { + "description": "URL " + "redirecting " + "to " + "the " + "Microsoft " + "Teams " + "channel.", + "example": "https://teams.microsoft.com/l/channel/19%3Aabc00abcdef00a0abcdef0abcdef0a%40thread.tacv2/conversations?groupId=12345678-abcd-dcba-abcd-1234567890ab&tenantId=00000000-abcd-0005-0000-000000000000", + "type": "string", + }, + }, + "required": [ + "ms_tenant_id", + "ms_channel_id", + "ms_channel_name", + "redirect_url", + ], + "type": "object", + }, + "type": "array", + } + }, + "required": ["teams"], + "type": "object", + }, + ], + }, + "modified": { + "description": "Timestamp " + "when " + "the " + "incident " + "todo " + "was " + "last " + "modified.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "status": { + "description": "A " + "number " + "indicating " + "the " + "status " + "of " + "this " + "integration " + "metadata. " + "0 " + "indicates " + "unknown;\n" + "1 " + "indicates " + "pending; " + "2 " + "indicates " + "complete; " + "3 " + "indicates " + "manually " + "created;\n" + "4 " + "indicates " + "manually " + "updated; " + "5 " + "indicates " + "failed.", + "format": "int32", + "maximum": 5, + "type": "integer", + }, + }, + "required": ["integration_type", "metadata"], + "type": "object", + }, + "type": { + "default": "incident_integrations", + "description": "Integration metadata resource type.", + "enum": ["incident_integrations"], + "example": "incident_integrations", + "type": "string", + "x-enum-varnames": ["INCIDENT_INTEGRATIONS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEINCIDENTINTEGRATION_REQUEST_BODY_SCHEMA": { + "description": "Patch request for an incident integration metadata.", + "properties": { + "data": { + "description": "Incident integration metadata data for a patch request.", + "properties": { + "attributes": { + "description": "Incident " + "integration " + "metadata's " + "attributes for " + "a create " + "request.", + "properties": { + "created": { + "description": "Timestamp when the incident todo was created.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "incident_id": { + "description": "UUID " + "of " + "the " + "incident " + "this " + "integration " + "metadata " + "is " + "connected " + "to.", + "example": "00000000-aaaa-0000-0000-000000000000", + "type": "string", + }, + "integration_type": { + "description": "A " + "number " + "indicating " + "the " + "type " + "of " + "integration " + "this " + "metadata " + "is " + "for. " + "1 " + "indicates " + "Slack;\n" + "8 " + "indicates " + "Jira.", + "example": 1, + "format": "int32", + "maximum": 9, + "type": "integer", + }, + "metadata": { + "description": "Incident " + "integration " + "metadata's " + "metadata " + "attribute.", + "oneOf": [ + { + "description": "Incident " + "integration " + "metadata " + "for " + "the " + "Slack " + "integration.", + "properties": { + "channels": { + "description": "Array " + "of " + "Slack " + "channels " + "in " + "this " + "integration " + "metadata.", + "example": [], + "items": { + "description": "Item " + "in " + "the " + "Slack " + "integration " + "metadata " + "channel " + "array.", + "properties": { + "channel_id": { + "description": "Slack channel ID.", + "example": "C0123456789", + "type": "string", + }, + "channel_name": { + "description": "Name " + "of " + "the " + "Slack " + "channel.", + "example": "#example-channel-name", + "type": "string", + }, + "redirect_url": { + "description": "URL " + "redirecting " + "to " + "the " + "Slack " + "channel.", + "example": "https://slack.com/app_redirect?channel=C0123456789&team=T01234567", + "type": "string", + }, + "team_id": { + "description": "Slack team ID.", + "example": "T01234567", + "type": "string", + }, + }, + "required": [ + "channel_id", + "channel_name", + "redirect_url", + ], + "type": "object", + }, + "type": "array", + } + }, + "required": ["channels"], + "type": "object", + }, + { + "description": "Incident " + "integration " + "metadata " + "for " + "the " + "Jira " + "integration.", + "properties": { + "issues": { + "description": "Array " + "of " + "Jira " + "issues " + "in " + "this " + "integration " + "metadata.", + "example": [], + "items": { + "description": "Item " + "in " + "the " + "Jira " + "integration " + "metadata " + "issue " + "array.", + "properties": { + "account": { + "description": "URL " + "of " + "issue's " + "Jira " + "account.", + "example": "https://example.atlassian.net", + "type": "string", + }, + "issue_key": { + "description": "Jira " + "issue's " + "issue " + "key.", + "example": "PROJ-123", + "type": "string", + }, + "issuetype_id": { + "description": "Jira " + "issue's " + "issue " + "type.", + "example": "1000", + "type": "string", + }, + "project_key": { + "description": "Jira " + "issue's " + "project " + "keys.", + "example": "PROJ", + "type": "string", + }, + "redirect_url": { + "description": "URL " + "redirecting " + "to " + "the " + "Jira " + "issue.", + "example": "https://example.atlassian.net/browse/PROJ-123", + "type": "string", + }, + }, + "required": ["project_key", "account"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["issues"], + "type": "object", + }, + { + "description": "Incident " + "integration " + "metadata " + "for " + "the " + "Microsoft " + "Teams " + "integration.", + "properties": { + "teams": { + "description": "Array " + "of " + "Microsoft " + "Teams " + "in " + "this " + "integration " + "metadata.", + "example": [], + "items": { + "description": "Item " + "in " + "the " + "Microsoft " + "Teams " + "integration " + "metadata " + "teams " + "array.", + "properties": { + "ms_channel_id": { + "description": "Microsoft " + "Teams " + "channel " + "ID.", + "example": "19:abc00abcdef00a0abcdef0abcdef0a@thread.tacv2", + "type": "string", + }, + "ms_channel_name": { + "description": "Microsoft " + "Teams " + "channel " + "name.", + "example": "incident-0001-example", + "type": "string", + }, + "ms_tenant_id": { + "description": "Microsoft " + "Teams " + "tenant " + "ID.", + "example": "00000000-abcd-0005-0000-000000000000", + "type": "string", + }, + "redirect_url": { + "description": "URL " + "redirecting " + "to " + "the " + "Microsoft " + "Teams " + "channel.", + "example": "https://teams.microsoft.com/l/channel/19%3Aabc00abcdef00a0abcdef0abcdef0a%40thread.tacv2/conversations?groupId=12345678-abcd-dcba-abcd-1234567890ab&tenantId=00000000-abcd-0005-0000-000000000000", + "type": "string", + }, + }, + "required": [ + "ms_tenant_id", + "ms_channel_id", + "ms_channel_name", + "redirect_url", + ], + "type": "object", + }, + "type": "array", + } + }, + "required": ["teams"], + "type": "object", + }, + ], + }, + "modified": { + "description": "Timestamp " + "when " + "the " + "incident " + "todo " + "was " + "last " + "modified.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "status": { + "description": "A " + "number " + "indicating " + "the " + "status " + "of " + "this " + "integration " + "metadata. " + "0 " + "indicates " + "unknown;\n" + "1 " + "indicates " + "pending; " + "2 " + "indicates " + "complete; " + "3 " + "indicates " + "manually " + "created;\n" + "4 " + "indicates " + "manually " + "updated; " + "5 " + "indicates " + "failed.", + "format": "int32", + "maximum": 5, + "type": "integer", + }, + }, + "required": ["integration_type", "metadata"], + "type": "object", + }, + "type": { + "default": "incident_integrations", + "description": "Integration metadata resource type.", + "enum": ["incident_integrations"], + "example": "incident_integrations", + "type": "string", + "x-enum-varnames": ["INCIDENT_INTEGRATIONS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEINCIDENTTODO_REQUEST_BODY_SCHEMA": { + "description": "Create request for an incident todo.", + "properties": { + "data": { + "description": "Incident todo data for a create request.", + "properties": { + "attributes": { + "description": "Incident todo's attributes.", + "properties": { + "assignees": { + "description": "Array of todo assignees.", + "example": ["@test.user@test.com"], + "items": { + "description": "A todo assignee.", + "example": "@test.user@test.com", + "oneOf": [ + { + "description": "Assignee's @-handle.", + "example": "@test.user@test.com", + "type": "string", + }, + { + "description": "Anonymous assignee entity.", + "properties": { + "icon": { + "description": "URL for assignee's icon.", + "example": "https://a.slack-edge.com/80588/img/slackbot_48.png", + "type": "string", + }, + "id": { + "description": "Anonymous assignee's ID.", + "example": "USLACKBOT", + "type": "string", + }, + "name": { + "description": "Assignee's name.", + "example": "Slackbot", + "type": "string", + }, + "source": { + "default": "slack", + "description": "The " + "source " + "of " + "the " + "anonymous " + "assignee.", + "enum": ["slack", "microsoft_teams"], + "example": "slack", + "type": "string", + "x-enum-varnames": ["SLACK", "MICROSOFT_TEAMS"], + }, + }, + "required": ["id", "icon", "name", "source"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "completed": { + "description": "Timestamp when the todo was completed.", + "example": "2023-03-06T22:00:00.000000+00:00", + "nullable": True, + "type": "string", + }, + "content": { + "description": "The follow-up task's content.", + "example": "Restore lost data.", + "type": "string", + }, + "created": { + "description": "Timestamp when the incident todo was created.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "due_date": { + "description": "Timestamp when the todo should be completed by.", + "example": "2023-07-10T05:00:00.000000+00:00", + "nullable": True, + "type": "string", + }, + "incident_id": { + "description": "UUID of the incident this todo is connected to.", + "example": "00000000-aaaa-0000-0000-000000000000", + "type": "string", + }, + "modified": { + "description": "Timestamp " + "when " + "the " + "incident " + "todo " + "was " + "last " + "modified.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + }, + "required": ["content", "assignees"], + "type": "object", + }, + "type": { + "default": "incident_todos", + "description": "Todo resource type.", + "enum": ["incident_todos"], + "example": "incident_todos", + "type": "string", + "x-enum-varnames": ["INCIDENT_TODOS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEINCIDENTTODO_REQUEST_BODY_SCHEMA": { + "description": "Patch request for an incident todo.", + "properties": { + "data": { + "description": "Incident todo data for a patch request.", + "properties": { + "attributes": { + "description": "Incident todo's attributes.", + "properties": { + "assignees": { + "description": "Array of todo assignees.", + "example": ["@test.user@test.com"], + "items": { + "description": "A todo assignee.", + "example": "@test.user@test.com", + "oneOf": [ + { + "description": "Assignee's @-handle.", + "example": "@test.user@test.com", + "type": "string", + }, + { + "description": "Anonymous assignee entity.", + "properties": { + "icon": { + "description": "URL for assignee's icon.", + "example": "https://a.slack-edge.com/80588/img/slackbot_48.png", + "type": "string", + }, + "id": { + "description": "Anonymous assignee's ID.", + "example": "USLACKBOT", + "type": "string", + }, + "name": { + "description": "Assignee's name.", + "example": "Slackbot", + "type": "string", + }, + "source": { + "default": "slack", + "description": "The " + "source " + "of " + "the " + "anonymous " + "assignee.", + "enum": ["slack", "microsoft_teams"], + "example": "slack", + "type": "string", + "x-enum-varnames": ["SLACK", "MICROSOFT_TEAMS"], + }, + }, + "required": ["id", "icon", "name", "source"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "completed": { + "description": "Timestamp when the todo was completed.", + "example": "2023-03-06T22:00:00.000000+00:00", + "nullable": True, + "type": "string", + }, + "content": { + "description": "The follow-up task's content.", + "example": "Restore lost data.", + "type": "string", + }, + "created": { + "description": "Timestamp when the incident todo was created.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "due_date": { + "description": "Timestamp when the todo should be completed by.", + "example": "2023-07-10T05:00:00.000000+00:00", + "nullable": True, + "type": "string", + }, + "incident_id": { + "description": "UUID of the incident this todo is connected to.", + "example": "00000000-aaaa-0000-0000-000000000000", + "type": "string", + }, + "modified": { + "description": "Timestamp " + "when " + "the " + "incident " + "todo " + "was " + "last " + "modified.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + }, + "required": ["content", "assignees"], + "type": "object", + }, + "type": { + "default": "incident_todos", + "description": "Todo resource type.", + "enum": ["incident_todos"], + "example": "incident_todos", + "type": "string", + "x-enum-varnames": ["INCIDENT_TODOS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA": { + "description": "AWS Account Create Request body.", + "properties": { + "data": { + "description": "AWS Account Create Request data.", + "properties": { + "attributes": { + "description": "The AWS Account Integration Config to be created.", + "properties": { + "account_tags": { + "description": "Tags " + "to " + "apply " + "to " + "all " + "hosts " + "and " + "metrics " + "reporting " + "for " + "this " + "account. " + "Defaults " + "to " + "`[]`.", + "items": { + "description": "Tag in the form `key:value`.", + "example": "env:prod", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + "auth_config": { + "description": "AWS Authentication config.", + "oneOf": [ + { + "description": "AWS " + "Authentication " + "config " + "to " + "integrate " + "your " + "account " + "using " + "an " + "access " + "key " + "pair.", + "properties": { + "access_key_id": { + "description": "AWS Access Key ID.", + "example": "AKIAIOSFODNN7EXAMPLE", + "type": "string", + }, + "secret_access_key": { + "description": "AWS Secret Access Key.", + "example": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + "minLength": 1, + "type": "string", + "writeOnly": True, + }, + }, + "required": ["access_key_id"], + "type": "object", + }, + { + "description": "AWS " + "Authentication " + "config " + "to " + "integrate " + "your " + "account " + "using " + "an " + "IAM " + "role.", + "properties": { + "external_id": { + "description": "AWS " + "IAM " + "External " + "ID " + "for " + "associated " + "role.", + "type": "string", + }, + "role_name": { + "description": "AWS IAM Role name.", + "example": "DatadogIntegrationRole", + "maxLength": 576, + "minLength": 1, + "type": "string", + }, + }, + "required": ["role_name"], + "type": "object", + }, + ], + }, + "aws_account_id": { + "description": "AWS Account ID.", + "example": "123456789012", + "type": "string", + }, + "aws_partition": { + "description": "AWS " + "partition " + "your " + "AWS " + "account " + "is " + "scoped " + "to. " + "Defaults " + "to " + "`aws`.\n" + "See " + "[Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) " + "in " + "the " + "AWS " + "documentation " + "for " + "more " + "information.", + "enum": ["aws", "aws-cn", "aws-us-gov"], + "example": "aws", + "type": "string", + "x-enum-varnames": ["AWS", "AWS_CN", "AWS_US_GOV"], + }, + "aws_regions": { + "description": "AWS " + "Regions " + "to " + "collect " + "data " + "from. " + "Defaults " + "to " + "`include_all`.", + "oneOf": [ + { + "description": "Include all regions. Defaults to `true`.", + "properties": { + "include_all": { + "description": "Include all regions.", + "example": True, + "type": "boolean", + } + }, + "required": ["include_all"], + "type": "object", + }, + { + "description": "Include only these regions.", + "properties": { + "include_only": { + "description": "Include only these regions.", + "example": ["us-east-1"], + "items": {"example": "us-east-1", "type": "string"}, + "type": "array", + } + }, + "required": ["include_only"], + "type": "object", + }, + ], + }, + "logs_config": { + "description": "AWS Logs Collection config.", + "properties": { + "lambda_forwarder": { + "description": "Log " + "Autosubscription " + "configuration " + "for " + "Datadog " + "Forwarder " + "Lambda " + "functions. " + "Automatically " + "set " + "up " + "triggers " + "for " + "existing\n" + "and " + "new " + "logs " + "for " + "some " + "services, " + "ensuring " + "no " + "logs " + "from " + "new " + "resources " + "are " + "missed " + "and " + "saving " + "time " + "spent " + "on " + "manual " + "configuration.", + "properties": { + "lambdas": { + "description": "List " + "of " + "Datadog " + "Lambda " + "Log " + "Forwarder " + "ARNs " + "in " + "your " + "AWS " + "account. " + "Defaults " + "to " + "`[]`.", + "items": { + "example": "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder", + "type": "string", + }, + "type": "array", + }, + "log_source_config": { + "description": "Log source configuration.", + "properties": { + "tag_filters": { + "description": "List " + "of " + "AWS " + "log " + "source " + "tag " + "filters. " + "Defaults " + "to " + "`[]`.", + "items": { + "description": "AWS " + "log " + "source " + "tag " + "filter " + "list. " + "Defaults " + "to " + "`[]`.\n" + "Array " + "of " + "log " + "source " + "to " + "AWS " + "resource " + "tag " + "mappings. " + "Each " + "mapping " + "contains " + "a " + "log " + "source " + "and " + "its " + "associated " + "AWS " + "resource " + "tags " + "(in " + "`key:value` " + "format) " + "used " + "to " + "filter " + "logs " + "submitted " + "to " + "Datadog.\n" + "Tag " + "filters " + "are " + "applied " + "for " + "tags " + "on " + "the " + "AWS " + "resource " + "emitting " + "logs; " + "tags " + "associated " + "with " + "the " + "log " + "storage " + "entity " + "(such " + "as " + "a " + "CloudWatch " + "Log " + "Group " + "or " + "S3 " + "Bucket) " + "are " + "not " + "considered.\n" + "For " + "more " + "information " + "on " + "resource " + "tag " + "filter " + "syntax, " + "[see " + "AWS " + "resource " + "exclusion](https://docs.datadoghq.com/account_management/billing/aws/#aws-resource-exclusion) " + "in " + "the " + "AWS " + "integration " + "billing " + "page.", + "properties": { + "source": { + "description": "The " + "AWS " + "log " + "source " + "to " + "which " + "the " + "tag " + "filters " + "defined " + "in " + "`tags` " + "are " + "applied.", + "example": "s3", + "type": "string", + }, + "tags": { + "description": "The " + "AWS " + "resource " + "tags " + "to " + "filter " + "on " + "for " + "the " + "log " + "source " + "specified " + "by " + "`source`.", + "items": { + "description": "Tag " + "in " + "the " + "form " + "`key:value`.", + "example": "env:prod", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "sources": { + "description": "List " + "of " + "service " + "IDs " + "set " + "to " + "enable " + "automatic " + "log " + "collection. " + "Discover " + "the " + "list " + "of " + "available " + "services " + "with " + "the\n" + "[Get " + "list " + "of " + "AWS " + "log " + "ready " + "services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) " + "endpoint.", + "items": {"example": "s3", "type": "string"}, + "type": "array", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "metrics_config": { + "description": "AWS Metrics Collection config.", + "properties": { + "automute_enabled": { + "description": "Enable " + "EC2 " + "automute " + "for " + "AWS " + "metrics. " + "Defaults " + "to " + "`true`.", + "example": True, + "type": "boolean", + }, + "collect_cloudwatch_alarms": { + "description": "Enable " + "CloudWatch " + "alarms " + "collection. " + "Defaults " + "to " + "`false`.", + "example": False, + "type": "boolean", + }, + "collect_custom_metrics": { + "description": "Enable " + "custom " + "metrics " + "collection. " + "Defaults " + "to " + "`false`.", + "example": False, + "type": "boolean", + }, + "enabled": { + "description": "Enable " + "AWS " + "metrics " + "collection. " + "Defaults " + "to " + "`true`.", + "example": True, + "type": "boolean", + }, + "namespace_filters": { + "description": "AWS " + "Metrics " + "namespace " + "filters. " + "Defaults " + "to " + "`exclude_only`.", + "oneOf": [ + { + "description": "Exclude " + "only " + "these " + "namespaces " + "from " + "metrics " + "collection. " + "Defaults " + "to " + '`["AWS/SQS", ' + '"AWS/ElasticMapReduce", ' + '"AWS/Usage"]`.\n' + "`AWS/SQS`, " + "`AWS/ElasticMapReduce`, " + "and " + "`AWS/Usage` " + "are " + "excluded " + "by " + "default " + "to " + "reduce " + "your " + "AWS " + "CloudWatch " + "costs " + "from " + "`GetMetricData` " + "API " + "calls.", + "properties": { + "exclude_only": { + "description": "Exclude " + "only " + "these " + "namespaces " + "from " + "metrics " + "collection. " + "Defaults " + "to " + '`["AWS/SQS", ' + '"AWS/ElasticMapReduce", ' + '"AWS/Usage"]`.\n' + "`AWS/SQS`, " + "`AWS/ElasticMapReduce`, " + "and " + "`AWS/Usage` " + "are " + "excluded " + "by " + "default " + "to " + "reduce " + "your " + "AWS " + "CloudWatch " + "costs " + "from " + "`GetMetricData` " + "API " + "calls.", + "example": [ + "AWS/SQS", + "AWS/ElasticMapReduce", + "AWS/Usage", + ], + "items": { + "example": "AWS/SQS", + "type": "string", + }, + "type": "array", + } + }, + "required": ["exclude_only"], + "type": "object", + }, + { + "description": "Include only these namespaces.", + "properties": { + "include_only": { + "description": "Include " + "only " + "these " + "namespaces.", + "example": ["AWS/EC2"], + "items": { + "example": "AWS/EC2", + "type": "string", + }, + "type": "array", + } + }, + "required": ["include_only"], + "type": "object", + }, + ], + }, + "tag_filters": { + "description": "AWS " + "Metrics " + "collection " + "tag " + "filters " + "list. " + "Defaults " + "to " + "`[]`.", + "items": { + "description": "AWS " + "Metrics " + "Collection " + "tag " + "filters " + "list. " + "Defaults " + "to " + "`[]`.\n" + "The " + "array " + "of " + "custom " + "AWS " + "resource " + "tags " + "(in " + "the " + "form " + "`key:value`) " + "defines " + "a " + "filter " + "that " + "Datadog " + "uses " + "when " + "collecting " + "metrics " + "from " + "a " + "specified " + "service.\n" + "Wildcards, " + "such " + "as " + "`?` " + "(match " + "a " + "single " + "character) " + "and " + "`*` " + "(match " + "multiple " + "characters), " + "and " + "exclusion " + "using " + "`!` " + "before " + "the " + "tag " + "are " + "supported.\n" + "For " + "EC2, " + "only " + "hosts " + "that " + "match " + "one " + "of " + "the " + "defined " + "tags " + "will " + "be " + "imported " + "into " + "Datadog. " + "The " + "rest " + "will " + "be " + "ignored.\n" + "For " + "example, " + "`env:production,instance-type:c?.*,!region:us-east-1`.", + "properties": { + "namespace": { + "description": "The " + "AWS " + "service " + "for " + "which " + "the " + "tag " + "filters " + "defined " + "in " + "`tags` " + "will " + "be " + "applied.", + "example": "AWS/EC2", + "type": "string", + }, + "tags": { + "description": "The " + "AWS " + "resource " + "tags " + "to " + "filter " + "on " + "for " + "the " + "service " + "specified " + "by " + "`namespace`.", + "items": { + "description": "Tag " + "in " + "the " + "form " + "`key:value`.", + "example": "datadog:true", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "resources_config": { + "description": "AWS Resources Collection config.", + "properties": { + "cloud_security_posture_management_collection": { + "description": "Enable " + "Cloud " + "Security " + "Management " + "to " + "scan " + "AWS " + "resources " + "for " + "vulnerabilities, " + "misconfigurations, " + "identity " + "risks, " + "and " + "compliance " + "violations. " + "Defaults " + "to " + "`false`. " + "Requires " + "`extended_collection` " + "to " + "be " + "set " + "to " + "`true`.", + "example": False, + "type": "boolean", + }, + "extended_collection": { + "description": "Whether " + "Datadog " + "collects " + "additional " + "attributes " + "and " + "configuration " + "information " + "about " + "the " + "resources " + "in " + "your " + "AWS " + "account. " + "Defaults " + "to " + "`true`. " + "Required " + "for " + "`cloud_security_posture_management_collection`.", + "example": True, + "type": "boolean", + }, + }, + "type": "object", + }, + "traces_config": { + "description": "AWS Traces Collection config.", + "properties": { + "xray_services": { + "description": "AWS " + "X-Ray " + "services " + "to " + "collect " + "traces " + "from. " + "Defaults " + "to " + "`include_only`.", + "oneOf": [ + { + "description": "Include all services.", + "properties": { + "include_all": { + "description": "Include all services.", + "example": False, + "type": "boolean", + } + }, + "required": ["include_all"], + "type": "object", + }, + { + "description": "Include " + "only " + "these " + "services. " + "Defaults " + "to " + "`[]`.", + "nullable": True, + "properties": { + "include_only": { + "description": "Include " + "only " + "these " + "services.", + "example": ["AWS/AppSync"], + "items": { + "example": "AWS/AppSync", + "type": "string", + }, + "type": "array", + } + }, + "required": ["include_only"], + "type": "object", + }, + ], + } + }, + "type": "object", + }, + }, + "required": ["aws_account_id", "aws_partition", "auth_config"], + "type": "object", + }, + "type": { + "default": "account", + "description": "AWS Account resource type.", + "enum": ["account"], + "example": "account", + "type": "string", + "x-enum-varnames": ["ACCOUNT"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEAWSACCOUNTINTEGRATION_REQUEST_BODY_SCHEMA": { + "description": "AWS Account Update Request body.", + "properties": { + "data": { + "description": "AWS Account Update Request data.", + "properties": { + "attributes": { + "description": "The AWS Account Integration Config to be updated.", + "properties": { + "account_tags": { + "description": "Tags " + "to " + "apply " + "to " + "all " + "hosts " + "and " + "metrics " + "reporting " + "for " + "this " + "account. " + "Defaults " + "to " + "`[]`.", + "items": { + "description": "Tag in the form `key:value`.", + "example": "env:prod", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + "auth_config": { + "description": "AWS Authentication config.", + "oneOf": [ + { + "description": "AWS " + "Authentication " + "config " + "to " + "integrate " + "your " + "account " + "using " + "an " + "access " + "key " + "pair.", + "properties": { + "access_key_id": { + "description": "AWS Access Key ID.", + "example": "AKIAIOSFODNN7EXAMPLE", + "type": "string", + }, + "secret_access_key": { + "description": "AWS Secret Access Key.", + "example": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + "minLength": 1, + "type": "string", + "writeOnly": True, + }, + }, + "required": ["access_key_id"], + "type": "object", + }, + { + "description": "AWS " + "Authentication " + "config " + "to " + "integrate " + "your " + "account " + "using " + "an " + "IAM " + "role.", + "properties": { + "external_id": { + "description": "AWS " + "IAM " + "External " + "ID " + "for " + "associated " + "role.", + "type": "string", + }, + "role_name": { + "description": "AWS IAM Role name.", + "example": "DatadogIntegrationRole", + "maxLength": 576, + "minLength": 1, + "type": "string", + }, + }, + "required": ["role_name"], + "type": "object", + }, + ], + }, + "aws_account_id": { + "description": "AWS Account ID.", + "example": "123456789012", + "type": "string", + }, + "aws_partition": { + "description": "AWS " + "partition " + "your " + "AWS " + "account " + "is " + "scoped " + "to. " + "Defaults " + "to " + "`aws`.\n" + "See " + "[Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) " + "in " + "the " + "AWS " + "documentation " + "for " + "more " + "information.", + "enum": ["aws", "aws-cn", "aws-us-gov"], + "example": "aws", + "type": "string", + "x-enum-varnames": ["AWS", "AWS_CN", "AWS_US_GOV"], + }, + "aws_regions": { + "description": "AWS " + "Regions " + "to " + "collect " + "data " + "from. " + "Defaults " + "to " + "`include_all`.", + "oneOf": [ + { + "description": "Include all regions. Defaults to `true`.", + "properties": { + "include_all": { + "description": "Include all regions.", + "example": True, + "type": "boolean", + } + }, + "required": ["include_all"], + "type": "object", + }, + { + "description": "Include only these regions.", + "properties": { + "include_only": { + "description": "Include only these regions.", + "example": ["us-east-1"], + "items": {"example": "us-east-1", "type": "string"}, + "type": "array", + } + }, + "required": ["include_only"], + "type": "object", + }, + ], + }, + "logs_config": { + "description": "AWS Logs Collection config.", + "properties": { + "lambda_forwarder": { + "description": "Log " + "Autosubscription " + "configuration " + "for " + "Datadog " + "Forwarder " + "Lambda " + "functions. " + "Automatically " + "set " + "up " + "triggers " + "for " + "existing\n" + "and " + "new " + "logs " + "for " + "some " + "services, " + "ensuring " + "no " + "logs " + "from " + "new " + "resources " + "are " + "missed " + "and " + "saving " + "time " + "spent " + "on " + "manual " + "configuration.", + "properties": { + "lambdas": { + "description": "List " + "of " + "Datadog " + "Lambda " + "Log " + "Forwarder " + "ARNs " + "in " + "your " + "AWS " + "account. " + "Defaults " + "to " + "`[]`.", + "items": { + "example": "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder", + "type": "string", + }, + "type": "array", + }, + "log_source_config": { + "description": "Log source configuration.", + "properties": { + "tag_filters": { + "description": "List " + "of " + "AWS " + "log " + "source " + "tag " + "filters. " + "Defaults " + "to " + "`[]`.", + "items": { + "description": "AWS " + "log " + "source " + "tag " + "filter " + "list. " + "Defaults " + "to " + "`[]`.\n" + "Array " + "of " + "log " + "source " + "to " + "AWS " + "resource " + "tag " + "mappings. " + "Each " + "mapping " + "contains " + "a " + "log " + "source " + "and " + "its " + "associated " + "AWS " + "resource " + "tags " + "(in " + "`key:value` " + "format) " + "used " + "to " + "filter " + "logs " + "submitted " + "to " + "Datadog.\n" + "Tag " + "filters " + "are " + "applied " + "for " + "tags " + "on " + "the " + "AWS " + "resource " + "emitting " + "logs; " + "tags " + "associated " + "with " + "the " + "log " + "storage " + "entity " + "(such " + "as " + "a " + "CloudWatch " + "Log " + "Group " + "or " + "S3 " + "Bucket) " + "are " + "not " + "considered.\n" + "For " + "more " + "information " + "on " + "resource " + "tag " + "filter " + "syntax, " + "[see " + "AWS " + "resource " + "exclusion](https://docs.datadoghq.com/account_management/billing/aws/#aws-resource-exclusion) " + "in " + "the " + "AWS " + "integration " + "billing " + "page.", + "properties": { + "source": { + "description": "The " + "AWS " + "log " + "source " + "to " + "which " + "the " + "tag " + "filters " + "defined " + "in " + "`tags` " + "are " + "applied.", + "example": "s3", + "type": "string", + }, + "tags": { + "description": "The " + "AWS " + "resource " + "tags " + "to " + "filter " + "on " + "for " + "the " + "log " + "source " + "specified " + "by " + "`source`.", + "items": { + "description": "Tag " + "in " + "the " + "form " + "`key:value`.", + "example": "env:prod", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "sources": { + "description": "List " + "of " + "service " + "IDs " + "set " + "to " + "enable " + "automatic " + "log " + "collection. " + "Discover " + "the " + "list " + "of " + "available " + "services " + "with " + "the\n" + "[Get " + "list " + "of " + "AWS " + "log " + "ready " + "services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) " + "endpoint.", + "items": {"example": "s3", "type": "string"}, + "type": "array", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "metrics_config": { + "description": "AWS Metrics Collection config.", + "properties": { + "automute_enabled": { + "description": "Enable " + "EC2 " + "automute " + "for " + "AWS " + "metrics. " + "Defaults " + "to " + "`true`.", + "example": True, + "type": "boolean", + }, + "collect_cloudwatch_alarms": { + "description": "Enable " + "CloudWatch " + "alarms " + "collection. " + "Defaults " + "to " + "`false`.", + "example": False, + "type": "boolean", + }, + "collect_custom_metrics": { + "description": "Enable " + "custom " + "metrics " + "collection. " + "Defaults " + "to " + "`false`.", + "example": False, + "type": "boolean", + }, + "enabled": { + "description": "Enable " + "AWS " + "metrics " + "collection. " + "Defaults " + "to " + "`true`.", + "example": True, + "type": "boolean", + }, + "namespace_filters": { + "description": "AWS " + "Metrics " + "namespace " + "filters. " + "Defaults " + "to " + "`exclude_only`.", + "oneOf": [ + { + "description": "Exclude " + "only " + "these " + "namespaces " + "from " + "metrics " + "collection. " + "Defaults " + "to " + '`["AWS/SQS", ' + '"AWS/ElasticMapReduce", ' + '"AWS/Usage"]`.\n' + "`AWS/SQS`, " + "`AWS/ElasticMapReduce`, " + "and " + "`AWS/Usage` " + "are " + "excluded " + "by " + "default " + "to " + "reduce " + "your " + "AWS " + "CloudWatch " + "costs " + "from " + "`GetMetricData` " + "API " + "calls.", + "properties": { + "exclude_only": { + "description": "Exclude " + "only " + "these " + "namespaces " + "from " + "metrics " + "collection. " + "Defaults " + "to " + '`["AWS/SQS", ' + '"AWS/ElasticMapReduce", ' + '"AWS/Usage"]`.\n' + "`AWS/SQS`, " + "`AWS/ElasticMapReduce`, " + "and " + "`AWS/Usage` " + "are " + "excluded " + "by " + "default " + "to " + "reduce " + "your " + "AWS " + "CloudWatch " + "costs " + "from " + "`GetMetricData` " + "API " + "calls.", + "example": [ + "AWS/SQS", + "AWS/ElasticMapReduce", + "AWS/Usage", + ], + "items": { + "example": "AWS/SQS", + "type": "string", + }, + "type": "array", + } + }, + "required": ["exclude_only"], + "type": "object", + }, + { + "description": "Include only these namespaces.", + "properties": { + "include_only": { + "description": "Include " + "only " + "these " + "namespaces.", + "example": ["AWS/EC2"], + "items": { + "example": "AWS/EC2", + "type": "string", + }, + "type": "array", + } + }, + "required": ["include_only"], + "type": "object", + }, + ], + }, + "tag_filters": { + "description": "AWS " + "Metrics " + "collection " + "tag " + "filters " + "list. " + "Defaults " + "to " + "`[]`.", + "items": { + "description": "AWS " + "Metrics " + "Collection " + "tag " + "filters " + "list. " + "Defaults " + "to " + "`[]`.\n" + "The " + "array " + "of " + "custom " + "AWS " + "resource " + "tags " + "(in " + "the " + "form " + "`key:value`) " + "defines " + "a " + "filter " + "that " + "Datadog " + "uses " + "when " + "collecting " + "metrics " + "from " + "a " + "specified " + "service.\n" + "Wildcards, " + "such " + "as " + "`?` " + "(match " + "a " + "single " + "character) " + "and " + "`*` " + "(match " + "multiple " + "characters), " + "and " + "exclusion " + "using " + "`!` " + "before " + "the " + "tag " + "are " + "supported.\n" + "For " + "EC2, " + "only " + "hosts " + "that " + "match " + "one " + "of " + "the " + "defined " + "tags " + "will " + "be " + "imported " + "into " + "Datadog. " + "The " + "rest " + "will " + "be " + "ignored.\n" + "For " + "example, " + "`env:production,instance-type:c?.*,!region:us-east-1`.", + "properties": { + "namespace": { + "description": "The " + "AWS " + "service " + "for " + "which " + "the " + "tag " + "filters " + "defined " + "in " + "`tags` " + "will " + "be " + "applied.", + "example": "AWS/EC2", + "type": "string", + }, + "tags": { + "description": "The " + "AWS " + "resource " + "tags " + "to " + "filter " + "on " + "for " + "the " + "service " + "specified " + "by " + "`namespace`.", + "items": { + "description": "Tag " + "in " + "the " + "form " + "`key:value`.", + "example": "datadog:true", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "resources_config": { + "description": "AWS Resources Collection config.", + "properties": { + "cloud_security_posture_management_collection": { + "description": "Enable " + "Cloud " + "Security " + "Management " + "to " + "scan " + "AWS " + "resources " + "for " + "vulnerabilities, " + "misconfigurations, " + "identity " + "risks, " + "and " + "compliance " + "violations. " + "Defaults " + "to " + "`false`. " + "Requires " + "`extended_collection` " + "to " + "be " + "set " + "to " + "`true`.", + "example": False, + "type": "boolean", + }, + "extended_collection": { + "description": "Whether " + "Datadog " + "collects " + "additional " + "attributes " + "and " + "configuration " + "information " + "about " + "the " + "resources " + "in " + "your " + "AWS " + "account. " + "Defaults " + "to " + "`true`. " + "Required " + "for " + "`cloud_security_posture_management_collection`.", + "example": True, + "type": "boolean", + }, + }, + "type": "object", + }, + "traces_config": { + "description": "AWS Traces Collection config.", + "properties": { + "xray_services": { + "description": "AWS " + "X-Ray " + "services " + "to " + "collect " + "traces " + "from. " + "Defaults " + "to " + "`include_only`.", + "oneOf": [ + { + "description": "Include all services.", + "properties": { + "include_all": { + "description": "Include all services.", + "example": False, + "type": "boolean", + } + }, + "required": ["include_all"], + "type": "object", + }, + { + "description": "Include " + "only " + "these " + "services. " + "Defaults " + "to " + "`[]`.", + "nullable": True, + "properties": { + "include_only": { + "description": "Include " + "only " + "these " + "services.", + "example": ["AWS/AppSync"], + "items": { + "example": "AWS/AppSync", + "type": "string", + }, + "type": "array", + } + }, + "required": ["include_only"], + "type": "object", + }, + ], + } + }, + "type": "object", + }, + }, + "required": ["aws_account_id"], + "type": "object", + }, + "id": { + "description": "Unique Datadog ID of " + "the AWS Account " + "Integration Config.\n" + "To get the config ID " + "for an account, use the " + "[List all AWS " + "integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations)\n" + "endpoint and query by " + "AWS Account ID.", + "example": "00000000-abcd-0001-0000-000000000000", + "type": "string", + }, + "type": { + "default": "account", + "description": "AWS Account resource type.", + "enum": ["account"], + "example": "account", + "type": "string", + "x-enum-varnames": ["ACCOUNT"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA": { + "description": "Data on your newly generated service account.", + "properties": { + "data": { + "description": "Additional metadata on your generated service account.", + "properties": { + "attributes": { + "description": "Attributes associated with your service account.", + "properties": { + "account_tags": { + "description": "Tags " + "to " + "be " + "associated " + "with " + "GCP " + "metrics " + "and " + "service " + "checks " + "from " + "your " + "account.", + "items": {"description": "Account Level Tag", "type": "string"}, + "type": "array", + }, + "automute": { + "description": "Silence " + "monitors " + "for " + "expected " + "GCE " + "instance " + "shutdowns.", + "type": "boolean", + }, + "client_email": { + "description": "Your service account email address.", + "example": "datadog-service-account@test-project.iam.gserviceaccount.com", + "type": "string", + }, + "cloud_run_revision_filters": { + "deprecated": True, + "description": "List " + "of " + "filters " + "to " + "limit " + "the " + "Cloud " + "Run " + "revisions " + "that " + "are " + "pulled " + "into " + "Datadog " + "by " + "using " + "tags.\n" + "Only " + "Cloud " + "Run " + "revision " + "resources " + "that " + "apply " + "to " + "specified " + "filters " + "are " + "imported " + "into " + "Datadog.\n" + "**Note:** " + "This " + "field " + "is " + "deprecated. " + "Instead, " + "use " + "`monitored_resource_configs` " + "with " + "`type=cloud_run_revision`", + "example": ["$KEY:$VALUE"], + "items": { + "description": "Cloud Run revision filters", + "type": "string", + }, + "type": "array", + }, + "host_filters": { + "deprecated": True, + "description": "List " + "of " + "filters " + "to " + "limit " + "the " + "VM " + "instances " + "that " + "are " + "pulled " + "into " + "Datadog " + "by " + "using " + "tags.\n" + "Only " + "VM " + "instance " + "resources " + "that " + "apply " + "to " + "specified " + "filters " + "are " + "imported " + "into " + "Datadog.\n" + "**Note:** " + "This " + "field " + "is " + "deprecated. " + "Instead, " + "use " + "`monitored_resource_configs` " + "with " + "`type=gce_instance`", + "example": ["$KEY:$VALUE"], + "items": {"description": "VM instance filters", "type": "string"}, + "type": "array", + }, + "is_cspm_enabled": { + "description": "When " + "enabled, " + "Datadog " + "will " + "activate " + "the " + "Cloud " + "Security " + "Monitoring " + "product " + "for " + "this " + "service " + "account. " + "Note: " + "This " + "requires " + "resource_collection_enabled " + "to " + "be " + "set " + "to " + "true.", + "type": "boolean", + }, + "is_per_project_quota_enabled": { + "default": False, + "description": "When " + "enabled, " + "Datadog " + "applies " + "the " + "`X-Goog-User-Project` " + "header, " + "attributing " + "Google " + "Cloud " + "billing " + "and " + "quota " + "usage " + "to " + "the " + "project " + "being " + "monitored " + "rather " + "than " + "the " + "default " + "service " + "account " + "project.", + "example": True, + "type": "boolean", + }, + "is_resource_change_collection_enabled": { + "default": False, + "description": "When " + "enabled, " + "Datadog " + "scans " + "for " + "all " + "resource " + "change " + "data " + "in " + "your " + "Google " + "Cloud " + "environment.", + "example": True, + "type": "boolean", + }, + "is_security_command_center_enabled": { + "default": False, + "description": "When " + "enabled, " + "Datadog " + "will " + "attempt " + "to " + "collect " + "Security " + "Command " + "Center " + "Findings. " + "Note: " + "This " + "requires " + "additional " + "permissions " + "on " + "the " + "service " + "account.", + "example": True, + "type": "boolean", + }, + "metric_namespace_configs": { + "description": "Configurations for GCP metric namespaces.", + "example": [{"disabled": True, "id": "aiplatform"}], + "items": { + "description": "Configuration for a GCP metric namespace.", + "properties": { + "disabled": { + "default": False, + "description": "When " + "disabled, " + "Datadog " + "does " + "not " + "collect " + "metrics " + "that " + "are " + "related " + "to " + "this " + "GCP " + "metric " + "namespace.", + "example": True, + "type": "boolean", + }, + "id": { + "description": "The id of the GCP metric namespace.", + "example": "aiplatform", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "monitored_resource_configs": { + "description": "Configurations for GCP monitored resources.", + "example": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}], + "items": { + "description": "Configuration for a GCP monitored resource.", + "properties": { + "filters": { + "description": "List " + "of " + "filters " + "to " + "limit " + "the " + "monitored " + "resources " + "that " + "are " + "pulled " + "into " + "Datadog " + "by " + "using " + "tags.\n" + "Only " + "monitored " + "resources " + "that " + "apply " + "to " + "specified " + "filters " + "are " + "imported " + "into " + "Datadog.", + "example": ["$KEY:$VALUE"], + "items": { + "description": "A monitored resource filter", + "type": "string", + }, + "type": "array", + }, + "type": { + "description": "The " + "GCP " + "monitored " + "resource " + "type. " + "Only " + "a " + "subset " + "of " + "resource " + "types " + "are " + "supported.", + "enum": [ + "cloud_function", + "cloud_run_revision", + "gce_instance", + ], + "example": "gce_instance", + "type": "string", + "x-enum-varnames": [ + "CLOUD_FUNCTION", + "CLOUD_RUN_REVISION", + "GCE_INSTANCE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "resource_collection_enabled": { + "description": "When " + "enabled, " + "Datadog " + "scans " + "for " + "all " + "resources " + "in " + "your " + "GCP " + "environment.", + "type": "boolean", + }, + }, + "type": "object", + }, + "type": { + "default": "gcp_service_account", + "description": "The type of account.", + "enum": ["gcp_service_account"], + "example": "gcp_service_account", + "type": "string", + "x-enum-varnames": ["GCP_SERVICE_ACCOUNT"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "UPDATEGCPSTSACCOUNT_REQUEST_BODY_SCHEMA": { + "description": "Service account info.", + "properties": { + "data": { + "description": "Data on your service account.", + "properties": { + "attributes": { + "description": "Attributes associated with your service account.", + "properties": { + "account_tags": { + "description": "Tags " + "to " + "be " + "associated " + "with " + "GCP " + "metrics " + "and " + "service " + "checks " + "from " + "your " + "account.", + "items": {"description": "Account Level Tag", "type": "string"}, + "type": "array", + }, + "automute": { + "description": "Silence " + "monitors " + "for " + "expected " + "GCE " + "instance " + "shutdowns.", + "type": "boolean", + }, + "client_email": { + "description": "Your service account email address.", + "example": "datadog-service-account@test-project.iam.gserviceaccount.com", + "type": "string", + }, + "cloud_run_revision_filters": { + "deprecated": True, + "description": "List " + "of " + "filters " + "to " + "limit " + "the " + "Cloud " + "Run " + "revisions " + "that " + "are " + "pulled " + "into " + "Datadog " + "by " + "using " + "tags.\n" + "Only " + "Cloud " + "Run " + "revision " + "resources " + "that " + "apply " + "to " + "specified " + "filters " + "are " + "imported " + "into " + "Datadog.\n" + "**Note:** " + "This " + "field " + "is " + "deprecated. " + "Instead, " + "use " + "`monitored_resource_configs` " + "with " + "`type=cloud_run_revision`", + "example": ["$KEY:$VALUE"], + "items": { + "description": "Cloud Run revision filters", + "type": "string", + }, + "type": "array", + }, + "host_filters": { + "deprecated": True, + "description": "List " + "of " + "filters " + "to " + "limit " + "the " + "VM " + "instances " + "that " + "are " + "pulled " + "into " + "Datadog " + "by " + "using " + "tags.\n" + "Only " + "VM " + "instance " + "resources " + "that " + "apply " + "to " + "specified " + "filters " + "are " + "imported " + "into " + "Datadog.\n" + "**Note:** " + "This " + "field " + "is " + "deprecated. " + "Instead, " + "use " + "`monitored_resource_configs` " + "with " + "`type=gce_instance`", + "example": ["$KEY:$VALUE"], + "items": {"description": "VM instance filters", "type": "string"}, + "type": "array", + }, + "is_cspm_enabled": { + "description": "When " + "enabled, " + "Datadog " + "will " + "activate " + "the " + "Cloud " + "Security " + "Monitoring " + "product " + "for " + "this " + "service " + "account. " + "Note: " + "This " + "requires " + "resource_collection_enabled " + "to " + "be " + "set " + "to " + "true.", + "type": "boolean", + }, + "is_per_project_quota_enabled": { + "default": False, + "description": "When " + "enabled, " + "Datadog " + "applies " + "the " + "`X-Goog-User-Project` " + "header, " + "attributing " + "Google " + "Cloud " + "billing " + "and " + "quota " + "usage " + "to " + "the " + "project " + "being " + "monitored " + "rather " + "than " + "the " + "default " + "service " + "account " + "project.", + "example": True, + "type": "boolean", + }, + "is_resource_change_collection_enabled": { + "default": False, + "description": "When " + "enabled, " + "Datadog " + "scans " + "for " + "all " + "resource " + "change " + "data " + "in " + "your " + "Google " + "Cloud " + "environment.", + "example": True, + "type": "boolean", + }, + "is_security_command_center_enabled": { + "default": False, + "description": "When " + "enabled, " + "Datadog " + "will " + "attempt " + "to " + "collect " + "Security " + "Command " + "Center " + "Findings. " + "Note: " + "This " + "requires " + "additional " + "permissions " + "on " + "the " + "service " + "account.", + "example": True, + "type": "boolean", + }, + "metric_namespace_configs": { + "description": "Configurations for GCP metric namespaces.", + "example": [{"disabled": True, "id": "aiplatform"}], + "items": { + "description": "Configuration for a GCP metric namespace.", + "properties": { + "disabled": { + "default": False, + "description": "When " + "disabled, " + "Datadog " + "does " + "not " + "collect " + "metrics " + "that " + "are " + "related " + "to " + "this " + "GCP " + "metric " + "namespace.", + "example": True, + "type": "boolean", + }, + "id": { + "description": "The id of the GCP metric namespace.", + "example": "aiplatform", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "monitored_resource_configs": { + "description": "Configurations for GCP monitored resources.", + "example": [{"filters": ["$KEY:$VALUE"], "type": "gce_instance"}], + "items": { + "description": "Configuration for a GCP monitored resource.", + "properties": { + "filters": { + "description": "List " + "of " + "filters " + "to " + "limit " + "the " + "monitored " + "resources " + "that " + "are " + "pulled " + "into " + "Datadog " + "by " + "using " + "tags.\n" + "Only " + "monitored " + "resources " + "that " + "apply " + "to " + "specified " + "filters " + "are " + "imported " + "into " + "Datadog.", + "example": ["$KEY:$VALUE"], + "items": { + "description": "A monitored resource filter", + "type": "string", + }, + "type": "array", + }, + "type": { + "description": "The " + "GCP " + "monitored " + "resource " + "type. " + "Only " + "a " + "subset " + "of " + "resource " + "types " + "are " + "supported.", + "enum": [ + "cloud_function", + "cloud_run_revision", + "gce_instance", + ], + "example": "gce_instance", + "type": "string", + "x-enum-varnames": [ + "CLOUD_FUNCTION", + "CLOUD_RUN_REVISION", + "GCE_INSTANCE", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "resource_collection_enabled": { + "description": "When " + "enabled, " + "Datadog " + "scans " + "for " + "all " + "resources " + "in " + "your " + "GCP " + "environment.", + "type": "boolean", + }, + }, + "type": "object", + }, + "id": { + "description": "Your service account's unique ID.", + "example": "d291291f-12c2-22g4-j290-123456678897", + "type": "string", + }, + "type": { + "default": "gcp_service_account", + "description": "The type of account.", + "enum": ["gcp_service_account"], + "example": "gcp_service_account", + "type": "string", + "x-enum-varnames": ["GCP_SERVICE_ACCOUNT"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "CREATECONFLUENTACCOUNT_REQUEST_BODY_SCHEMA": { + "description": "Payload schema when adding a Confluent account.", + "properties": { + "data": { + "description": "The data body for adding a Confluent account.", + "properties": { + "attributes": { + "description": "Attributes associated with the account creation request.", + "properties": { + "api_key": { + "description": "The " + "API " + "key " + "associated " + "with " + "your " + "Confluent " + "account.", + "example": "TESTAPIKEY123", + "type": "string", + }, + "api_secret": { + "description": "The " + "API " + "secret " + "associated " + "with " + "your " + "Confluent " + "account.", + "example": "test-api-secret-123", + "type": "string", + }, + "resources": { + "description": "A " + "list " + "of " + "Confluent " + "resources " + "associated " + "with " + "the " + "Confluent " + "account.", + "items": { + "description": "Attributes " + "object " + "for " + "updating " + "a " + "Confluent " + "resource.", + "properties": { + "enable_custom_metrics": { + "default": False, + "description": "Enable " + "the " + "`custom.consumer_lag_offset` " + "metric, " + "which " + "contains " + "extra " + "metric " + "tags.", + "example": False, + "type": "boolean", + }, + "id": { + "description": "The " + "ID " + "associated " + "with " + "a " + "Confluent " + "resource.", + "example": "resource-id-123", + "type": "string", + }, + "resource_type": { + "description": "The " + "resource " + "type " + "of " + "the " + "Resource. " + "Can " + "be " + "`kafka`, " + "`connector`, " + "`ksql`, " + "or " + "`schema_registry`.", + "example": "kafka", + "type": "string", + }, + "tags": { + "description": "A " + "list " + "of " + "strings " + "representing " + "tags. " + "Can " + "be " + "a " + "single " + "key, " + "or " + "key-value " + "pairs " + "separated " + "by " + "a " + "colon.", + "example": ["myTag", "myTag2:myValue"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["resource_type"], + "type": "object", + }, + "type": "array", + }, + "tags": { + "description": "A " + "list " + "of " + "strings " + "representing " + "tags. " + "Can " + "be " + "a " + "single " + "key, " + "or " + "key-value " + "pairs " + "separated " + "by " + "a " + "colon.", + "example": ["myTag", "myTag2:myValue"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["api_key", "api_secret"], + "type": "object", + }, + "type": { + "default": "confluent-cloud-accounts", + "description": "The JSON:API type for " + "this API. Should " + "always be " + "`confluent-cloud-accounts`.", + "enum": ["confluent-cloud-accounts"], + "example": "confluent-cloud-accounts", + "type": "string", + "x-enum-varnames": ["CONFLUENT_CLOUD_ACCOUNTS"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEFASTLYACCOUNT_REQUEST_BODY_SCHEMA": { + "description": "Payload schema when adding a Fastly account.", + "properties": { + "data": { + "description": "Data object for creating a Fastly account.", + "properties": { + "attributes": { + "description": "Attributes object for creating a Fastly account.", + "properties": { + "api_key": { + "description": "The API key for the Fastly account.", + "example": "ABCDEFG123", + "type": "string", + }, + "name": { + "description": "The name of the Fastly account.", + "example": "test-name", + "type": "string", + }, + "services": { + "description": "A " + "list " + "of " + "services " + "belonging " + "to " + "the " + "parent " + "account.", + "items": { + "description": "The schema representation of a Fastly service.", + "properties": { + "id": { + "description": "The ID of the Fastly service", + "example": "6abc7de6893AbcDe9fghIj", + "type": "string", + }, + "tags": { + "description": "A list of tags for the Fastly service.", + "example": ["myTag", "myTag2:myValue"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["id"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["api_key", "name"], + "type": "object", + }, + "type": { + "default": "fastly-accounts", + "description": "The JSON:API type for " + "this API. Should " + "always be " + "`fastly-accounts`.", + "enum": ["fastly-accounts"], + "example": "fastly-accounts", + "type": "string", + "x-enum-varnames": ["FASTLY_ACCOUNTS"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEIPALLOWLIST_REQUEST_BODY_SCHEMA": { + "description": "Update the IP allowlist.", + "properties": { + "data": { + "description": "IP allowlist data.", + "properties": { + "attributes": { + "description": "Attributes of the IP allowlist.", + "properties": { + "enabled": { + "description": "Whether the IP allowlist logic is enabled or not.", + "type": "boolean", + }, + "entries": { + "description": "Array of entries in the IP allowlist.", + "items": { + "description": "IP allowlist entry object.", + "properties": { + "data": { + "description": "Data of the IP allowlist entry object.", + "properties": { + "attributes": { + "description": "Attributes " + "of " + "the " + "IP " + "allowlist " + "entry.", + "properties": { + "cidr_block": { + "description": "The " + "CIDR " + "block " + "describing " + "the " + "IP " + "range " + "of " + "the " + "entry.", + "type": "string", + }, + "created_at": { + "description": "Creation " + "time " + "of " + "the " + "entry.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "modified_at": { + "description": "Time " + "of " + "last " + "entry " + "modification.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "note": { + "description": "A " + "note " + "describing " + "the " + "IP " + "allowlist " + "entry.", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "IP " + "allowlist " + "entry.", + "type": "string", + }, + "type": { + "default": "ip_allowlist_entry", + "description": "IP allowlist Entry type.", + "enum": ["ip_allowlist_entry"], + "example": "ip_allowlist_entry", + "type": "string", + "x-enum-varnames": ["IP_ALLOWLIST_ENTRY"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "id": {"description": "The unique identifier of the org.", "type": "string"}, + "type": { + "default": "ip_allowlist", + "description": "IP allowlist type.", + "enum": ["ip_allowlist"], + "example": "ip_allowlist", + "type": "string", + "x-enum-varnames": ["IP_ALLOWLIST"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "AGGREGATELOGS_REQUEST_BODY_SCHEMA": { + "description": "The object sent with the request to retrieve a list of logs from your " + "organization.", + "properties": { + "compute": { + "description": "The list of metrics or timeseries to " + "compute for the retrieved buckets.", + "items": { + "description": "A compute rule to compute metrics or timeseries", + "properties": { + "aggregation": { + "description": "An aggregation function", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + ], + }, + "interval": { + "description": "The " + "time " + "buckets' " + "size " + "(only " + "used " + "for " + "type=timeseries)\n" + "Defaults " + "to a " + "resolution " + "of " + "150 " + "points", + "example": "5m", + "type": "string", + }, + "metric": { + "description": "The metric to use", + "example": "@duration", + "type": "string", + }, + "type": { + "default": "total", + "description": "The type of compute", + "enum": ["timeseries", "total"], + "type": "string", + "x-enum-varnames": ["TIMESERIES", "TOTAL"], + }, + }, + "required": ["aggregation"], + "type": "object", + }, + "type": "array", + }, + "filter": { + "description": "The search and filter query settings", + "properties": { + "from": { + "default": "now-15m", + "description": "The minimum time " + "for the requested " + "logs, supports date " + "math and regular " + "timestamps " + "(milliseconds).", + "example": "now-15m", + "type": "string", + }, + "indexes": { + "default": ["*"], + "description": "For customers " + "with multiple " + "indexes, the " + "indexes to " + "search. Defaults " + "to ['*'] which " + "means all " + "indexes.", + "example": ["main", "web"], + "items": {"description": "The name of a log index.", "type": "string"}, + "type": "array", + }, + "query": { + "default": "*", + "description": "The search query - following the log search syntax.", + "example": "service:web* AND @http.status_code:[200 TO 299]", + "type": "string", + }, + "storage_tier": { + "default": "indexes", + "description": "Specifies storage type as indexes, online-archives or flex", + "enum": ["indexes", "online-archives", "flex"], + "example": "indexes", + "type": "string", + "x-enum-varnames": ["INDEXES", "ONLINE_ARCHIVES", "FLEX"], + }, + "to": { + "default": "now", + "description": "The maximum time for " + "the requested logs, " + "supports date math " + "and regular " + "timestamps " + "(milliseconds).", + "example": "now", + "type": "string", + }, + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group by", + "items": { + "description": "A group by rule", + "properties": { + "facet": { + "description": "The name of the facet to use (required)", + "example": "host", + "type": "string", + }, + "histogram": { + "description": "Used " + "to " + "perform " + "a " + "histogram " + "computation " + "(only " + "for " + "measure " + "facets).\n" + "Note: " + "at " + "most " + "100 " + "buckets " + "are " + "allowed, " + "the " + "number " + "of " + "buckets " + "is " + "(max " + "- " + "min)/interval.", + "properties": { + "interval": { + "description": "The bin size of the histogram buckets", + "example": 10, + "format": "double", + "type": "number", + }, + "max": { + "description": "The " + "maximum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "greater " + "than " + "this " + "one " + "are " + "filtered " + "out)", + "example": 100, + "format": "double", + "type": "number", + }, + "min": { + "description": "The " + "minimum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "smaller " + "than " + "this " + "one " + "are " + "filtered " + "out)", + "example": 50, + "format": "double", + "type": "number", + }, + }, + "required": ["interval", "min", "max"], + "type": "object", + }, + "limit": { + "default": 10, + "description": "The " + "maximum " + "buckets " + "to " + "return " + "for " + "this " + "group " + "by. " + "Note: " + "at " + "most " + "10000 " + "buckets " + "are " + "allowed.\n" + "If " + "grouping " + "by " + "multiple " + "facets, " + "the " + "product " + "of " + "limits " + "must " + "not " + "exceed " + "10000.", + "format": "int64", + "type": "integer", + }, + "missing": { + "description": "The " + "value " + "to " + "use " + "for " + "logs " + "that " + "don't " + "have " + "the " + "facet " + "used " + "to " + "group " + "by", + "oneOf": [ + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "string " + "valued " + "facet.", + "type": "string", + }, + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "a " + "number " + "valued " + "facet.", + "format": "double", + "type": "number", + }, + ], + }, + "sort": { + "description": "A sort rule", + "example": {"aggregation": "count", "order": "asc"}, + "properties": { + "aggregation": { + "description": "An aggregation function", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + ], + }, + "metric": { + "description": "The " + "metric " + "to " + "sort " + "by " + "(only " + "used " + "for " + "`type=measure`)", + "example": "@duration", + "type": "string", + }, + "order": { + "description": "The order to use, ascending or descending", + "enum": ["asc", "desc"], + "example": "asc", + "type": "string", + "x-enum-varnames": ["ASCENDING", "DESCENDING"], + }, + "type": { + "default": "alphabetical", + "description": "The type of sorting algorithm", + "enum": ["alphabetical", "measure"], + "type": "string", + "x-enum-varnames": ["ALPHABETICAL", "MEASURE"], + }, + }, + "type": "object", + }, + "total": { + "default": False, + "description": "A " + "resulting " + "object " + "to put " + "the " + "given " + "computes " + "in " + "over " + "all " + "the " + "matching " + "records.", + "oneOf": [ + { + "description": "If " + "set " + "to " + "true, " + "creates " + "an " + "additional " + "bucket " + "labeled " + '"$facet_total"', + "type": "boolean", + }, + { + "description": "A " + "string " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket", + "type": "string", + }, + { + "description": "A " + "number " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket", + "format": "double", + "type": "number", + }, + ], + }, + }, + "required": ["facet"], + "type": "object", + }, + "type": "array", + }, + "options": { + "deprecated": True, + "description": "Global query options that are used during " + "the query.\n" + "Note: These fields are currently " + "deprecated and do not affect the query " + "results.", + "properties": { + "timeOffset": { + "description": "The time offset (in seconds) to apply to the query.", + "format": "int64", + "type": "integer", + }, + "timezone": { + "default": "UTC", + "description": "The timezone " + "can be " + "specified as " + "GMT, UTC, an " + "offset from " + "UTC (like " + "UTC+1), or as " + "a Timezone " + "Database " + "identifier " + "(like " + "America/New_York).", + "example": "GMT", + "type": "string", + }, + }, + "type": "object", + }, + "page": { + "description": "Paging settings", + "properties": { + "cursor": { + "description": "The returned paging " + "point to use to get " + "the next results. " + "Note: at most 1000 " + "results can be " + "paged.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "CREATELOGSARCHIVE_REQUEST_BODY_SCHEMA": { + "description": "The logs archive.", + "properties": { + "data": { + "description": "The definition of an archive.", + "properties": { + "attributes": { + "description": "The attributes associated with the archive.", + "properties": { + "destination": { + "description": "An archive's destination.", + "oneOf": [ + { + "description": "The Azure archive destination.", + "properties": { + "container": { + "description": "The " + "container " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "example": "container-name", + "type": "string", + }, + "integration": { + "description": "The " + "Azure " + "archive's " + "integration " + "destination.", + "properties": { + "client_id": { + "description": "A client ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string", + }, + "tenant_id": { + "description": "A tenant ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string", + }, + }, + "required": ["tenant_id", "client_id"], + "type": "object", + }, + "path": { + "description": "The archive path.", + "type": "string", + }, + "region": { + "description": "The " + "region " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "type": "string", + }, + "storage_account": { + "description": "The associated storage account.", + "example": "account-name", + "type": "string", + }, + "type": { + "default": "azure", + "description": "Type " + "of " + "the " + "Azure " + "archive " + "destination.", + "enum": ["azure"], + "example": "azure", + "type": "string", + "x-enum-varnames": ["AZURE"], + }, + }, + "required": [ + "storage_account", + "container", + "integration", + "type", + ], + "type": "object", + }, + { + "description": "The GCS archive destination.", + "properties": { + "bucket": { + "description": "The " + "bucket " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "example": "bucket-name", + "type": "string", + }, + "integration": { + "description": "The " + "GCS " + "archive's " + "integration " + "destination.", + "properties": { + "client_email": { + "description": "A client email.", + "example": "youremail@example.com", + "type": "string", + }, + "project_id": { + "description": "A project ID.", + "example": "project-id", + "type": "string", + }, + }, + "required": ["client_email"], + "type": "object", + }, + "path": { + "description": "The archive path.", + "type": "string", + }, + "type": { + "default": "gcs", + "description": "Type " + "of " + "the " + "GCS " + "archive " + "destination.", + "enum": ["gcs"], + "example": "gcs", + "type": "string", + "x-enum-varnames": ["GCS"], + }, + }, + "required": ["bucket", "integration", "type"], + "type": "object", + }, + { + "description": "The S3 archive destination.", + "properties": { + "bucket": { + "description": "The " + "bucket " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "example": "bucket-name", + "type": "string", + }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An " + "Amazon " + "Resource " + "Name " + "(ARN) " + "used " + "to " + "identify " + "an " + "AWS " + "KMS " + "key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string", + }, + "type": { + "description": "Type " + "of " + "S3 " + "encryption " + "for " + "a " + "destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS", + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS", + ], + }, + }, + "required": ["type"], + "type": "object", + }, + "integration": { + "description": "The " + "S3 " + "Archive's " + "integration " + "destination.", + "properties": { + "account_id": { + "description": "The " + "account " + "ID " + "for " + "the " + "integration.", + "example": "123456789012", + "type": "string", + }, + "role_name": { + "description": "The " + "path " + "of " + "the " + "integration.", + "example": "role-name", + "type": "string", + }, + }, + "required": ["role_name", "account_id"], + "type": "object", + }, + "path": { + "description": "The archive path.", + "type": "string", + }, + "storage_class": { + "default": "STANDARD", + "description": "The " + "storage " + "class " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "enum": [ + "STANDARD", + "STANDARD_IA", + "ONEZONE_IA", + "INTELLIGENT_TIERING", + "GLACIER_IR", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "STANDARD_IA", + "ONEZONE_IA", + "INTELLIGENT_TIERING", + "GLACIER_IR", + ], + }, + "type": { + "default": "s3", + "description": "Type " + "of " + "the " + "S3 " + "archive " + "destination.", + "enum": ["s3"], + "example": "s3", + "type": "string", + "x-enum-varnames": ["S3"], + }, + }, + "required": ["bucket", "integration", "type"], + "type": "object", + }, + ], + }, + "include_tags": { + "default": False, + "description": "To " + "store " + "the " + "tags " + "in " + "the " + "archive, " + "set " + "the " + "value " + '"true".\n' + "If " + "it " + "is " + "set " + "to " + '"false", ' + "the " + "tags " + "will " + "be " + "deleted " + "when " + "the " + "logs " + "are " + "sent " + "to " + "the " + "archive.", + "example": False, + "type": "boolean", + }, + "name": { + "description": "The archive name.", + "example": "Nginx Archive", + "type": "string", + }, + "query": { + "description": "The " + "archive " + "query/filter. " + "Logs " + "matching " + "this " + "query " + "are " + "included " + "in " + "the " + "archive.", + "example": "source:nginx", + "type": "string", + }, + "rehydration_max_scan_size_in_gb": { + "description": "Maximum " + "scan " + "size " + "for " + "rehydration " + "from " + "this " + "archive.", + "example": 100, + "format": "int64", + "nullable": True, + "type": "integer", + }, + "rehydration_tags": { + "description": "An " + "array " + "of " + "tags " + "to " + "add " + "to " + "rehydrated " + "logs " + "from " + "an " + "archive.", + "example": ["team:intake", "team:app"], + "items": { + "description": "A given tag in the `:` format.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["name", "query", "destination"], + "type": "object", + }, + "type": { + "default": "archives", + "description": "The type of the " + "resource. The value " + "should always be " + "archives.", + "example": "archives", + "type": "string", + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "UPDATEARCHIVECONFIGURATION_REQUEST_BODY_SCHEMA": { + "description": "The logs archive.", + "properties": { + "data": { + "description": "The definition of an archive.", + "properties": { + "attributes": { + "description": "The attributes associated with the archive.", + "properties": { + "destination": { + "description": "An archive's destination.", + "oneOf": [ + { + "description": "The Azure archive destination.", + "properties": { + "container": { + "description": "The " + "container " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "example": "container-name", + "type": "string", + }, + "integration": { + "description": "The " + "Azure " + "archive's " + "integration " + "destination.", + "properties": { + "client_id": { + "description": "A client ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string", + }, + "tenant_id": { + "description": "A tenant ID.", + "example": "aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa", + "type": "string", + }, + }, + "required": ["tenant_id", "client_id"], + "type": "object", + }, + "path": { + "description": "The archive path.", + "type": "string", + }, + "region": { + "description": "The " + "region " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "type": "string", + }, + "storage_account": { + "description": "The associated storage account.", + "example": "account-name", + "type": "string", + }, + "type": { + "default": "azure", + "description": "Type " + "of " + "the " + "Azure " + "archive " + "destination.", + "enum": ["azure"], + "example": "azure", + "type": "string", + "x-enum-varnames": ["AZURE"], + }, + }, + "required": [ + "storage_account", + "container", + "integration", + "type", + ], + "type": "object", + }, + { + "description": "The GCS archive destination.", + "properties": { + "bucket": { + "description": "The " + "bucket " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "example": "bucket-name", + "type": "string", + }, + "integration": { + "description": "The " + "GCS " + "archive's " + "integration " + "destination.", + "properties": { + "client_email": { + "description": "A client email.", + "example": "youremail@example.com", + "type": "string", + }, + "project_id": { + "description": "A project ID.", + "example": "project-id", + "type": "string", + }, + }, + "required": ["client_email"], + "type": "object", + }, + "path": { + "description": "The archive path.", + "type": "string", + }, + "type": { + "default": "gcs", + "description": "Type " + "of " + "the " + "GCS " + "archive " + "destination.", + "enum": ["gcs"], + "example": "gcs", + "type": "string", + "x-enum-varnames": ["GCS"], + }, + }, + "required": ["bucket", "integration", "type"], + "type": "object", + }, + { + "description": "The S3 archive destination.", + "properties": { + "bucket": { + "description": "The " + "bucket " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "example": "bucket-name", + "type": "string", + }, + "encryption": { + "description": "The S3 encryption settings.", + "properties": { + "key": { + "description": "An " + "Amazon " + "Resource " + "Name " + "(ARN) " + "used " + "to " + "identify " + "an " + "AWS " + "KMS " + "key.", + "example": "arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms", + "type": "string", + }, + "type": { + "description": "Type " + "of " + "S3 " + "encryption " + "for " + "a " + "destination.", + "enum": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS", + ], + "example": "SSE_S3", + "type": "string", + "x-enum-varnames": [ + "NO_OVERRIDE", + "SSE_S3", + "SSE_KMS", + ], + }, + }, + "required": ["type"], + "type": "object", + }, + "integration": { + "description": "The " + "S3 " + "Archive's " + "integration " + "destination.", + "properties": { + "account_id": { + "description": "The " + "account " + "ID " + "for " + "the " + "integration.", + "example": "123456789012", + "type": "string", + }, + "role_name": { + "description": "The " + "path " + "of " + "the " + "integration.", + "example": "role-name", + "type": "string", + }, + }, + "required": ["role_name", "account_id"], + "type": "object", + }, + "path": { + "description": "The archive path.", + "type": "string", + }, + "storage_class": { + "default": "STANDARD", + "description": "The " + "storage " + "class " + "where " + "the " + "archive " + "will " + "be " + "stored.", + "enum": [ + "STANDARD", + "STANDARD_IA", + "ONEZONE_IA", + "INTELLIGENT_TIERING", + "GLACIER_IR", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "STANDARD_IA", + "ONEZONE_IA", + "INTELLIGENT_TIERING", + "GLACIER_IR", + ], + }, + "type": { + "default": "s3", + "description": "Type " + "of " + "the " + "S3 " + "archive " + "destination.", + "enum": ["s3"], + "example": "s3", + "type": "string", + "x-enum-varnames": ["S3"], + }, + }, + "required": ["bucket", "integration", "type"], + "type": "object", + }, + ], + }, + "include_tags": { + "default": False, + "description": "To " + "store " + "the " + "tags " + "in " + "the " + "archive, " + "set " + "the " + "value " + '"true".\n' + "If " + "it " + "is " + "set " + "to " + '"false", ' + "the " + "tags " + "will " + "be " + "deleted " + "when " + "the " + "logs " + "are " + "sent " + "to " + "the " + "archive.", + "example": False, + "type": "boolean", + }, + "name": { + "description": "The archive name.", + "example": "Nginx Archive", + "type": "string", + }, + "query": { + "description": "The " + "archive " + "query/filter. " + "Logs " + "matching " + "this " + "query " + "are " + "included " + "in " + "the " + "archive.", + "example": "source:nginx", + "type": "string", + }, + "rehydration_max_scan_size_in_gb": { + "description": "Maximum " + "scan " + "size " + "for " + "rehydration " + "from " + "this " + "archive.", + "example": 100, + "format": "int64", + "nullable": True, + "type": "integer", + }, + "rehydration_tags": { + "description": "An " + "array " + "of " + "tags " + "to " + "add " + "to " + "rehydrated " + "logs " + "from " + "an " + "archive.", + "example": ["team:intake", "team:app"], + "items": { + "description": "A given tag in the `:` format.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["name", "query", "destination"], + "type": "object", + }, + "type": { + "default": "archives", + "description": "The type of the " + "resource. The value " + "should always be " + "archives.", + "example": "archives", + "type": "string", + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "CREATECUSTOMLOGDESTINATION_REQUEST_BODY_SCHEMA": { + "description": "The custom destination.", + "properties": { + "data": { + "description": "The definition of a custom destination.", + "properties": { + "attributes": { + "description": "The attributes associated with the custom destination.", + "properties": { + "enabled": { + "default": True, + "description": "Whether " + "logs " + "matching " + "this " + "custom " + "destination " + "should " + "be " + "forwarded " + "or " + "not.", + "example": True, + "type": "boolean", + }, + "forward_tags": { + "default": True, + "description": "Whether " + "tags " + "from " + "the " + "forwarded " + "logs " + "should " + "be " + "forwarded " + "or " + "not.", + "example": True, + "type": "boolean", + }, + "forward_tags_restriction_list": { + "default": [], + "description": "List " + "of " + "[keys " + "of " + "tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) " + "to " + "be " + "filtered.\n" + "\n" + "An " + "empty " + "list " + "represents " + "no " + "restriction " + "is " + "in " + "place " + "and " + "either " + "all " + "or " + "no " + "tags " + "will " + "be\n" + "forwarded " + "depending " + "on " + "`forward_tags_restriction_list_type` " + "parameter.", + "example": ["datacenter", "host"], + "items": { + "description": "The " + "[key " + "part " + "of " + "a " + "tag](https://docs.datadoghq.com/getting_started/tagging/#define-tags).", + "type": "string", + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + }, + "forward_tags_restriction_list_type": { + "default": "ALLOW_LIST", + "description": "How " + "`forward_tags_restriction_list` " + "parameter " + "should " + "be " + "interpreted.\n" + "If " + "`ALLOW_LIST`, " + "then " + "only " + "tags " + "whose " + "keys " + "on " + "the " + "forwarded " + "logs " + "match " + "the " + "ones " + "on " + "the " + "restriction " + "list\n" + "are " + "forwarded.\n" + "\n" + "`BLOCK_LIST` " + "works " + "the " + "opposite " + "way. " + "It " + "does " + "not " + "forward " + "the " + "tags " + "matching " + "the " + "ones " + "on " + "the " + "list.", + "enum": ["ALLOW_LIST", "BLOCK_LIST"], + "example": "ALLOW_LIST", + "type": "string", + "x-enum-varnames": ["ALLOW_LIST", "BLOCK_LIST"], + }, + "forwarder_destination": { + "description": "A custom destination's location to forward logs.", + "oneOf": [ + { + "description": "The HTTP destination.", + "properties": { + "auth": { + "description": "Authentication " + "method " + "of " + "the " + "HTTP " + "requests.", + "oneOf": [ + { + "description": "Basic " + "access " + "authentication.", + "properties": { + "password": { + "description": "The " + "password " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-password", + "type": "string", + "writeOnly": True, + }, + "type": { + "default": "basic", + "description": "Type " + "of " + "the " + "basic " + "access " + "authentication.", + "enum": ["basic"], + "example": "basic", + "type": "string", + "x-enum-varnames": ["BASIC"], + }, + "username": { + "description": "The " + "username " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-username", + "type": "string", + "writeOnly": True, + }, + }, + "required": [ + "type", + "username", + "password", + ], + "type": "object", + }, + { + "description": "Custom " + "header " + "access " + "authentication.", + "properties": { + "header_name": { + "description": "The " + "header " + "name " + "of " + "the " + "authentication.", + "example": "CUSTOM-HEADER-NAME", + "type": "string", + }, + "header_value": { + "description": "The " + "header " + "value " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "CUSTOM-HEADER-AUTHENTICATION-VALUE", + "type": "string", + "writeOnly": True, + }, + "type": { + "default": "custom_header", + "description": "Type " + "of " + "the " + "custom " + "header " + "access " + "authentication.", + "enum": ["custom_header"], + "example": "custom_header", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_HEADER" + ], + }, + }, + "required": [ + "type", + "header_name", + "header_value", + ], + "type": "object", + }, + ], + }, + "endpoint": { + "description": "The " + "destination " + "for " + "which " + "logs " + "will " + "be " + "forwarded " + "to.\n" + "Must " + "have " + "HTTPS " + "scheme " + "and " + "forwarding " + "back " + "to " + "Datadog " + "is " + "not " + "allowed.", + "example": "https://example.com", + "type": "string", + }, + "type": { + "default": "http", + "description": "Type of the HTTP destination.", + "enum": ["http"], + "example": "http", + "type": "string", + "x-enum-varnames": ["HTTP"], + }, + }, + "required": ["type", "endpoint", "auth"], + "type": "object", + }, + { + "description": "The " + "Splunk " + "HTTP " + "Event " + "Collector " + "(HEC) " + "destination.", + "properties": { + "access_token": { + "description": "Access " + "token " + "of " + "the " + "Splunk " + "HTTP " + "Event " + "Collector. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "splunk_access_token", + "type": "string", + "writeOnly": True, + }, + "endpoint": { + "description": "The " + "destination " + "for " + "which " + "logs " + "will " + "be " + "forwarded " + "to.\n" + "Must " + "have " + "HTTPS " + "scheme " + "and " + "forwarding " + "back " + "to " + "Datadog " + "is " + "not " + "allowed.", + "example": "https://example.com", + "type": "string", + }, + "type": { + "default": "splunk_hec", + "description": "Type " + "of " + "the " + "Splunk " + "HTTP " + "Event " + "Collector " + "(HEC) " + "destination.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["type", "endpoint", "access_token"], + "type": "object", + }, + { + "description": "The Elasticsearch destination.", + "properties": { + "auth": { + "description": "Basic access authentication.", + "properties": { + "password": { + "description": "The " + "password " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-password", + "type": "string", + "writeOnly": True, + }, + "username": { + "description": "The " + "username " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-username", + "type": "string", + "writeOnly": True, + }, + }, + "required": ["username", "password"], + "type": "object", + }, + "endpoint": { + "description": "The " + "destination " + "for " + "which " + "logs " + "will " + "be " + "forwarded " + "to.\n" + "Must " + "have " + "HTTPS " + "scheme " + "and " + "forwarding " + "back " + "to " + "Datadog " + "is " + "not " + "allowed.", + "example": "https://example.com", + "type": "string", + }, + "index_name": { + "description": "Name " + "of " + "the " + "Elasticsearch " + "index " + "(must " + "follow " + "[Elasticsearch's " + "criteria](https://www.elastic.co/guide/en/elasticsearch/reference/8.11/indices-create-index.html#indices-create-api-path-params)).", + "example": "nginx-logs", + "type": "string", + }, + "index_rotation": { + "description": "Date " + "pattern " + "with " + "US " + "locale " + "and " + "UTC " + "timezone " + "to " + "be " + "appended " + "to " + "the " + "index " + "name " + "after " + "adding " + "`-`\n" + "(that " + "is, " + "`${index_name}-${indexPattern}`).\n" + "You " + "can " + "customize " + "the " + "index " + "rotation " + "naming " + "pattern " + "by " + "choosing " + "one " + "of " + "these " + "options:\n" + "- " + "Hourly: " + "`yyyy-MM-dd-HH` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-10-19-09`)\n" + "- " + "Daily: " + "`yyyy-MM-dd` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-10-19`)\n" + "- " + "Weekly: " + "`yyyy-'W'ww` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-W42`)\n" + "- " + "Monthly: " + "`yyyy-MM` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-10`)\n" + "\n" + "If " + "this " + "field " + "is " + "missing " + "or " + "is " + "blank, " + "it " + "means " + "that " + "the " + "index " + "name " + "will " + "always " + "be " + "the " + "same\n" + "(that " + "is, " + "no " + "rotation).", + "example": "yyyy-MM-dd", + "type": "string", + }, + "type": { + "default": "elasticsearch", + "description": "Type " + "of " + "the " + "Elasticsearch " + "destination.", + "enum": ["elasticsearch"], + "example": "elasticsearch", + "type": "string", + "x-enum-varnames": ["ELASTICSEARCH"], + }, + }, + "required": ["type", "endpoint", "auth", "index_name"], + "type": "object", + }, + { + "description": "The Microsoft Sentinel destination.", + "properties": { + "client_id": { + "description": "Client " + "ID " + "from " + "the " + "Datadog " + "Azure " + "integration.", + "example": "9a2f4d83-2b5e-429e-a35a-2b3c4182db71", + "type": "string", + }, + "data_collection_endpoint": { + "description": "Azure data collection endpoint.", + "example": "https://my-dce-5kyl.eastus-1.ingest.monitor.azure.com", + "type": "string", + }, + "data_collection_rule_id": { + "description": "Azure data collection rule ID.", + "example": "dcr-000a00a000a00000a000000aa000a0aa", + "type": "string", + }, + "stream_name": { + "description": "Azure stream name.", + "example": "Custom-MyTable", + "type": "string", + "writeOnly": True, + }, + "tenant_id": { + "description": "Tenant " + "ID " + "from " + "the " + "Datadog " + "Azure " + "integration.", + "example": "f3c9a8a1-4c2e-4d2e-b911-9f3c28c3c8b2", + "type": "string", + }, + "type": { + "default": "microsoft_sentinel", + "description": "Type " + "of " + "the " + "Microsoft " + "Sentinel " + "destination.", + "enum": ["microsoft_sentinel"], + "example": "microsoft_sentinel", + "type": "string", + "x-enum-varnames": ["MICROSOFT_SENTINEL"], + }, + }, + "required": [ + "type", + "tenant_id", + "client_id", + "data_collection_endpoint", + "data_collection_rule_id", + "stream_name", + ], + "type": "object", + }, + ], + }, + "name": { + "description": "The custom destination name.", + "example": "Nginx logs", + "type": "string", + }, + "query": { + "default": "", + "description": "The " + "custom " + "destination " + "query " + "and " + "filter. " + "Logs " + "matching " + "this " + "query " + "are " + "forwarded " + "to " + "the " + "destination.", + "example": "source:nginx", + "type": "string", + }, + }, + "required": ["name", "forwarder_destination"], + "type": "object", + }, + "type": { + "default": "custom_destination", + "description": "The type of the " + "resource. The value " + "should always be " + "`custom_destination`.", + "enum": ["custom_destination"], + "example": "custom_destination", + "type": "string", + "x-enum-varnames": ["CUSTOM_DESTINATION"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "type": "object", + }, + "UPDATELOGSCUSTOMDESTINATION_REQUEST_BODY_SCHEMA": { + "description": "The custom destination.", + "properties": { + "data": { + "description": "The definition of a custom destination.", + "properties": { + "attributes": { + "description": "The attributes associated with the custom destination.", + "properties": { + "enabled": { + "default": True, + "description": "Whether " + "logs " + "matching " + "this " + "custom " + "destination " + "should " + "be " + "forwarded " + "or " + "not.", + "example": True, + "type": "boolean", + }, + "forward_tags": { + "default": True, + "description": "Whether " + "tags " + "from " + "the " + "forwarded " + "logs " + "should " + "be " + "forwarded " + "or " + "not.", + "example": True, + "type": "boolean", + }, + "forward_tags_restriction_list": { + "default": [], + "description": "List " + "of " + "[keys " + "of " + "tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) " + "to " + "be " + "restricted " + "from " + "being " + "forwarded.\n" + "An " + "empty " + "list " + "represents " + "no " + "restriction " + "is " + "in " + "place " + "and " + "either " + "all " + "or " + "no " + "tags " + "will " + "be " + "forwarded " + "depending " + "on " + "`forward_tags_restriction_list_type` " + "parameter.", + "example": ["datacenter", "host"], + "items": { + "description": "The " + "[key " + "part " + "of " + "a " + "tag](https://docs.datadoghq.com/getting_started/tagging/#define-tags).", + "type": "string", + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + }, + "forward_tags_restriction_list_type": { + "default": "ALLOW_LIST", + "description": "How " + "`forward_tags_restriction_list` " + "parameter " + "should " + "be " + "interpreted.\n" + "If " + "`ALLOW_LIST`, " + "then " + "only " + "tags " + "whose " + "keys " + "on " + "the " + "forwarded " + "logs " + "match " + "the " + "ones " + "on " + "the " + "restriction " + "list\n" + "are " + "forwarded.\n" + "\n" + "`BLOCK_LIST` " + "works " + "the " + "opposite " + "way. " + "It " + "does " + "not " + "forward " + "the " + "tags " + "matching " + "the " + "ones " + "on " + "the " + "list.", + "enum": ["ALLOW_LIST", "BLOCK_LIST"], + "example": "ALLOW_LIST", + "type": "string", + "x-enum-varnames": ["ALLOW_LIST", "BLOCK_LIST"], + }, + "forwarder_destination": { + "description": "A custom destination's location to forward logs.", + "oneOf": [ + { + "description": "The HTTP destination.", + "properties": { + "auth": { + "description": "Authentication " + "method " + "of " + "the " + "HTTP " + "requests.", + "oneOf": [ + { + "description": "Basic " + "access " + "authentication.", + "properties": { + "password": { + "description": "The " + "password " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-password", + "type": "string", + "writeOnly": True, + }, + "type": { + "default": "basic", + "description": "Type " + "of " + "the " + "basic " + "access " + "authentication.", + "enum": ["basic"], + "example": "basic", + "type": "string", + "x-enum-varnames": ["BASIC"], + }, + "username": { + "description": "The " + "username " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-username", + "type": "string", + "writeOnly": True, + }, + }, + "required": [ + "type", + "username", + "password", + ], + "type": "object", + }, + { + "description": "Custom " + "header " + "access " + "authentication.", + "properties": { + "header_name": { + "description": "The " + "header " + "name " + "of " + "the " + "authentication.", + "example": "CUSTOM-HEADER-NAME", + "type": "string", + }, + "header_value": { + "description": "The " + "header " + "value " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "CUSTOM-HEADER-AUTHENTICATION-VALUE", + "type": "string", + "writeOnly": True, + }, + "type": { + "default": "custom_header", + "description": "Type " + "of " + "the " + "custom " + "header " + "access " + "authentication.", + "enum": ["custom_header"], + "example": "custom_header", + "type": "string", + "x-enum-varnames": [ + "CUSTOM_HEADER" + ], + }, + }, + "required": [ + "type", + "header_name", + "header_value", + ], + "type": "object", + }, + ], + }, + "endpoint": { + "description": "The " + "destination " + "for " + "which " + "logs " + "will " + "be " + "forwarded " + "to.\n" + "Must " + "have " + "HTTPS " + "scheme " + "and " + "forwarding " + "back " + "to " + "Datadog " + "is " + "not " + "allowed.", + "example": "https://example.com", + "type": "string", + }, + "type": { + "default": "http", + "description": "Type of the HTTP destination.", + "enum": ["http"], + "example": "http", + "type": "string", + "x-enum-varnames": ["HTTP"], + }, + }, + "required": ["type", "endpoint", "auth"], + "type": "object", + }, + { + "description": "The " + "Splunk " + "HTTP " + "Event " + "Collector " + "(HEC) " + "destination.", + "properties": { + "access_token": { + "description": "Access " + "token " + "of " + "the " + "Splunk " + "HTTP " + "Event " + "Collector. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "splunk_access_token", + "type": "string", + "writeOnly": True, + }, + "endpoint": { + "description": "The " + "destination " + "for " + "which " + "logs " + "will " + "be " + "forwarded " + "to.\n" + "Must " + "have " + "HTTPS " + "scheme " + "and " + "forwarding " + "back " + "to " + "Datadog " + "is " + "not " + "allowed.", + "example": "https://example.com", + "type": "string", + }, + "type": { + "default": "splunk_hec", + "description": "Type " + "of " + "the " + "Splunk " + "HTTP " + "Event " + "Collector " + "(HEC) " + "destination.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["type", "endpoint", "access_token"], + "type": "object", + }, + { + "description": "The Elasticsearch destination.", + "properties": { + "auth": { + "description": "Basic access authentication.", + "properties": { + "password": { + "description": "The " + "password " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-password", + "type": "string", + "writeOnly": True, + }, + "username": { + "description": "The " + "username " + "of " + "the " + "authentication. " + "This " + "field " + "is " + "not " + "returned " + "by " + "the " + "API.", + "example": "datadog-custom-destination-username", + "type": "string", + "writeOnly": True, + }, + }, + "required": ["username", "password"], + "type": "object", + }, + "endpoint": { + "description": "The " + "destination " + "for " + "which " + "logs " + "will " + "be " + "forwarded " + "to.\n" + "Must " + "have " + "HTTPS " + "scheme " + "and " + "forwarding " + "back " + "to " + "Datadog " + "is " + "not " + "allowed.", + "example": "https://example.com", + "type": "string", + }, + "index_name": { + "description": "Name " + "of " + "the " + "Elasticsearch " + "index " + "(must " + "follow " + "[Elasticsearch's " + "criteria](https://www.elastic.co/guide/en/elasticsearch/reference/8.11/indices-create-index.html#indices-create-api-path-params)).", + "example": "nginx-logs", + "type": "string", + }, + "index_rotation": { + "description": "Date " + "pattern " + "with " + "US " + "locale " + "and " + "UTC " + "timezone " + "to " + "be " + "appended " + "to " + "the " + "index " + "name " + "after " + "adding " + "`-`\n" + "(that " + "is, " + "`${index_name}-${indexPattern}`).\n" + "You " + "can " + "customize " + "the " + "index " + "rotation " + "naming " + "pattern " + "by " + "choosing " + "one " + "of " + "these " + "options:\n" + "- " + "Hourly: " + "`yyyy-MM-dd-HH` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-10-19-09`)\n" + "- " + "Daily: " + "`yyyy-MM-dd` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-10-19`)\n" + "- " + "Weekly: " + "`yyyy-'W'ww` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-W42`)\n" + "- " + "Monthly: " + "`yyyy-MM` " + "(as " + "an " + "example, " + "it " + "would " + "render: " + "`2022-10`)\n" + "\n" + "If " + "this " + "field " + "is " + "missing " + "or " + "is " + "blank, " + "it " + "means " + "that " + "the " + "index " + "name " + "will " + "always " + "be " + "the " + "same\n" + "(that " + "is, " + "no " + "rotation).", + "example": "yyyy-MM-dd", + "type": "string", + }, + "type": { + "default": "elasticsearch", + "description": "Type " + "of " + "the " + "Elasticsearch " + "destination.", + "enum": ["elasticsearch"], + "example": "elasticsearch", + "type": "string", + "x-enum-varnames": ["ELASTICSEARCH"], + }, + }, + "required": ["type", "endpoint", "auth", "index_name"], + "type": "object", + }, + { + "description": "The Microsoft Sentinel destination.", + "properties": { + "client_id": { + "description": "Client " + "ID " + "from " + "the " + "Datadog " + "Azure " + "integration.", + "example": "9a2f4d83-2b5e-429e-a35a-2b3c4182db71", + "type": "string", + }, + "data_collection_endpoint": { + "description": "Azure data collection endpoint.", + "example": "https://my-dce-5kyl.eastus-1.ingest.monitor.azure.com", + "type": "string", + }, + "data_collection_rule_id": { + "description": "Azure data collection rule ID.", + "example": "dcr-000a00a000a00000a000000aa000a0aa", + "type": "string", + }, + "stream_name": { + "description": "Azure stream name.", + "example": "Custom-MyTable", + "type": "string", + "writeOnly": True, + }, + "tenant_id": { + "description": "Tenant " + "ID " + "from " + "the " + "Datadog " + "Azure " + "integration.", + "example": "f3c9a8a1-4c2e-4d2e-b911-9f3c28c3c8b2", + "type": "string", + }, + "type": { + "default": "microsoft_sentinel", + "description": "Type " + "of " + "the " + "Microsoft " + "Sentinel " + "destination.", + "enum": ["microsoft_sentinel"], + "example": "microsoft_sentinel", + "type": "string", + "x-enum-varnames": ["MICROSOFT_SENTINEL"], + }, + }, + "required": [ + "type", + "tenant_id", + "client_id", + "data_collection_endpoint", + "data_collection_rule_id", + "stream_name", + ], + "type": "object", + }, + ], + }, + "name": { + "description": "The custom destination name.", + "example": "Nginx logs", + "type": "string", + }, + "query": { + "default": "", + "description": "The " + "custom " + "destination " + "query " + "and " + "filter. " + "Logs " + "matching " + "this " + "query " + "are " + "forwarded " + "to " + "the " + "destination.", + "example": "source:nginx", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The custom destination ID.", + "example": "be5d7a69-d0c8-4d4d-8ee8-bba292d98139", + "type": "string", + }, + "type": { + "default": "custom_destination", + "description": "The type of the " + "resource. The value " + "should always be " + "`custom_destination`.", + "enum": ["custom_destination"], + "example": "custom_destination", + "type": "string", + "x-enum-varnames": ["CUSTOM_DESTINATION"], + }, + }, + "required": ["type", "id"], + "type": "object", + } + }, + "type": "object", + }, + "CREATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA": { + "description": "The new log-based metric body.", + "properties": { + "data": { + "description": "The new log-based metric properties.", + "properties": { + "attributes": { + "description": "The object " + "describing the " + "Datadog " + "log-based " + "metric to " + "create.", + "properties": { + "compute": { + "description": "The compute rule to compute the log-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": ["count", "distribution"], + "example": "distribution", + "type": "string", + "x-enum-varnames": ["COUNT", "DISTRIBUTION"], + }, + "include_percentiles": { + "description": "Toggle " + "to " + "include " + "or " + "exclude " + "percentile " + "aggregations " + "for " + "distribution " + "metrics.\n" + "Only " + "present " + "when " + "the " + "`aggregation_type` " + "is " + "`distribution`.", + "example": True, + "type": "boolean", + }, + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "log-based " + "metric " + "will " + "aggregate " + "on " + "(only " + "used " + "if " + "the " + "aggregation " + "type " + "is " + "a " + '"distribution").', + "example": "@duration", + "type": "string", + }, + }, + "required": ["aggregation_type"], + "type": "object", + }, + "filter": { + "description": "The " + "log-based " + "metric " + "filter. " + "Logs " + "matching " + "this " + "filter " + "will " + "be " + "aggregated " + "in " + "this " + "metric.", + "properties": { + "query": { + "default": "*", + "description": "The " + "search " + "query " + "- " + "following " + "the " + "log " + "search " + "syntax.", + "example": "service:web* " + "AND " + "@http.status_code:[200 " + "TO " + "299]", + "type": "string", + } + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "log-based " + "metric " + "will " + "be " + "aggregated " + "over.", + "example": "@http.status_code", + "type": "string", + }, + "tag_name": { + "description": "Eventual " + "name " + "of " + "the " + "tag " + "that " + "gets " + "created. " + "By " + "default, " + "the " + "path " + "attribute " + "is " + "used " + "as " + "the " + "tag " + "name.", + "example": "status_code", + "type": "string", + }, + }, + "required": ["path"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["compute"], + "type": "object", + }, + "id": { + "description": "The name of the log-based metric.", + "example": "logs.page.load.count", + "type": "string", + }, + "type": { + "default": "logs_metrics", + "description": "The type of the " + "resource. The value " + "should always be " + "logs_metrics.", + "enum": ["logs_metrics"], + "example": "logs_metrics", + "type": "string", + "x-enum-varnames": ["LOGS_METRICS"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATELOGBASEDMETRIC_REQUEST_BODY_SCHEMA": { + "description": "The new log-based metric body.", + "properties": { + "data": { + "description": "The new log-based metric properties.", + "properties": { + "attributes": { + "description": "The log-based metric properties that will be updated.", + "properties": { + "compute": { + "description": "The compute rule to compute the log-based metric.", + "properties": { + "include_percentiles": { + "description": "Toggle " + "to " + "include " + "or " + "exclude " + "percentile " + "aggregations " + "for " + "distribution " + "metrics.\n" + "Only " + "present " + "when " + "the " + "`aggregation_type` " + "is " + "`distribution`.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "filter": { + "description": "The " + "log-based " + "metric " + "filter. " + "Logs " + "matching " + "this " + "filter " + "will " + "be " + "aggregated " + "in " + "this " + "metric.", + "properties": { + "query": { + "default": "*", + "description": "The " + "search " + "query " + "- " + "following " + "the " + "log " + "search " + "syntax.", + "example": "service:web* " + "AND " + "@http.status_code:[200 " + "TO " + "299]", + "type": "string", + } + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "log-based " + "metric " + "will " + "be " + "aggregated " + "over.", + "example": "@http.status_code", + "type": "string", + }, + "tag_name": { + "description": "Eventual " + "name " + "of " + "the " + "tag " + "that " + "gets " + "created. " + "By " + "default, " + "the " + "path " + "attribute " + "is " + "used " + "as " + "the " + "tag " + "name.", + "example": "status_code", + "type": "string", + }, + }, + "required": ["path"], + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "type": { + "default": "logs_metrics", + "description": "The type of the " + "resource. The value " + "should always be " + "logs_metrics.", + "enum": ["logs_metrics"], + "example": "logs_metrics", + "type": "string", + "x-enum-varnames": ["LOGS_METRICS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the metric that you would like to edit " + "the tag configuration on.", + "properties": { + "data": { + "description": "Object for a single tag configuration to be edited.", + "example": { + "attributes": {"group_by": ["app", "datacenter"], "include_percentiles": False}, + "id": "http.endpoint.request", + "type": "manage_tags", + }, + "properties": { + "attributes": { + "description": "Object " + "containing the " + "definition of a " + "metric tag " + "configuration " + "to be updated.", + "properties": { + "aggregations": { + "description": "Deprecated. " + "You " + "no " + "longer " + "need " + "to " + "configure " + "specific " + "time " + "and " + "space " + "aggregations " + "for " + "Metrics " + "Without " + "Limits.", + "example": [ + {"space": "sum", "time": "sum"}, + {"space": "sum", "time": "count"}, + ], + "items": { + "description": "A " + "time " + "and " + "space " + "aggregation " + "combination " + "for " + "use " + "in " + "query.", + "example": {"space": "sum", "time": "sum"}, + "properties": { + "space": { + "description": "A space aggregation for use in query.", + "enum": ["avg", "max", "min", "sum"], + "example": "sum", + "type": "string", + "x-enum-varnames": ["AVG", "MAX", "MIN", "SUM"], + }, + "time": { + "description": "A time aggregation for use in query.", + "enum": ["avg", "count", "max", "min", "sum"], + "example": "sum", + "type": "string", + "x-enum-varnames": [ + "AVG", + "COUNT", + "MAX", + "MIN", + "SUM", + ], + }, + }, + "required": ["time", "space"], + "type": "object", + }, + "type": "array", + }, + "exclude_tags_mode": { + "description": "When " + "set " + "to " + "true, " + "the " + "configuration " + "will " + "exclude " + "the " + "configured " + "tags " + "and " + "include " + "any " + "other " + "submitted " + "tags.\n" + "When " + "set " + "to " + "false, " + "the " + "configuration " + "will " + "include " + "the " + "configured " + "tags " + "and " + "exclude " + "any " + "other " + "submitted " + "tags.\n" + "Defaults " + "to " + "false. " + "Requires " + "`tags` " + "property.", + "type": "boolean", + }, + "include_percentiles": { + "description": "Toggle " + "to " + "include/exclude " + "percentiles " + "for " + "a " + "distribution " + "metric.\n" + "Defaults " + "to " + "false. " + "Can " + "only " + "be " + "applied " + "to " + "metrics " + "that " + "have " + "a " + "`metric_type` " + "of " + "`distribution`.", + "example": True, + "type": "boolean", + }, + "tags": { + "default": [], + "description": "A " + "list " + "of " + "tag " + "keys " + "that " + "will " + "be " + "queryable " + "for " + "your " + "metric.", + "example": ["app", "datacenter"], + "items": {"description": "Tag keys to group by.", "type": "string"}, + "type": "array", + }, + }, + "type": "object", + }, + "id": { + "description": "The metric name for this resource.", + "example": "test.metric.latency", + "type": "string", + }, + "type": { + "default": "manage_tags", + "description": "The metric tag configuration resource type.", + "enum": ["manage_tags"], + "example": "manage_tags", + "type": "string", + "x-enum-varnames": ["MANAGE_TAGS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEMETRICTAGCONFIGURATION_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the metric that you would like to " + "configure tags for.", + "properties": { + "data": { + "description": "Object for a single metric to be configure tags on.", + "example": { + "attributes": { + "include_percentiles": False, + "metric_type": "distribution", + "tags": ["app", "datacenter"], + }, + "id": "http.endpoint.request", + "type": "manage_tags", + }, + "properties": { + "attributes": { + "description": "Object " + "containing the " + "definition of a " + "metric tag " + "configuration " + "to be created.", + "properties": { + "aggregations": { + "description": "Deprecated. " + "You " + "no " + "longer " + "need " + "to " + "configure " + "specific " + "time " + "and " + "space " + "aggregations " + "for " + "Metrics " + "Without " + "Limits.", + "example": [ + {"space": "sum", "time": "sum"}, + {"space": "sum", "time": "count"}, + ], + "items": { + "description": "A " + "time " + "and " + "space " + "aggregation " + "combination " + "for " + "use " + "in " + "query.", + "example": {"space": "sum", "time": "sum"}, + "properties": { + "space": { + "description": "A space aggregation for use in query.", + "enum": ["avg", "max", "min", "sum"], + "example": "sum", + "type": "string", + "x-enum-varnames": ["AVG", "MAX", "MIN", "SUM"], + }, + "time": { + "description": "A time aggregation for use in query.", + "enum": ["avg", "count", "max", "min", "sum"], + "example": "sum", + "type": "string", + "x-enum-varnames": [ + "AVG", + "COUNT", + "MAX", + "MIN", + "SUM", + ], + }, + }, + "required": ["time", "space"], + "type": "object", + }, + "type": "array", + }, + "exclude_tags_mode": { + "description": "When " + "set " + "to " + "true, " + "the " + "configuration " + "will " + "exclude " + "the " + "configured " + "tags " + "and " + "include " + "any " + "other " + "submitted " + "tags.\n" + "When " + "set " + "to " + "false, " + "the " + "configuration " + "will " + "include " + "the " + "configured " + "tags " + "and " + "exclude " + "any " + "other " + "submitted " + "tags.\n" + "Defaults " + "to " + "false. " + "Requires " + "`tags` " + "property.", + "type": "boolean", + }, + "include_percentiles": { + "description": "Toggle " + "to " + "include/exclude " + "percentiles " + "for " + "a " + "distribution " + "metric.\n" + "Defaults " + "to " + "false. " + "Can " + "only " + "be " + "applied " + "to " + "metrics " + "that " + "have " + "a " + "`metric_type` " + "of " + "`distribution`.", + "example": True, + "type": "boolean", + }, + "metric_type": { + "default": "gauge", + "description": "The metric's type.", + "enum": ["gauge", "count", "rate", "distribution"], + "example": "count", + "type": "string", + "x-enum-varnames": ["GAUGE", "COUNT", "RATE", "DISTRIBUTION"], + }, + "tags": { + "default": [], + "description": "A " + "list " + "of " + "tag " + "keys " + "that " + "will " + "be " + "queryable " + "for " + "your " + "metric.", + "example": ["app", "datacenter"], + "items": {"description": "Tag keys to group by.", "type": "string"}, + "type": "array", + }, + }, + "required": ["tags", "metric_type"], + "type": "object", + }, + "id": { + "description": "The metric name for this resource.", + "example": "test.metric.latency", + "type": "string", + }, + "type": { + "default": "manage_tags", + "description": "The metric tag configuration resource type.", + "enum": ["manage_tags"], + "example": "manage_tags", + "type": "string", + "x-enum-varnames": ["MANAGE_TAGS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA": { + "description": "Request for creating a monitor notification rule.", + "properties": { + "data": { + "description": "Object to create a monitor notification rule.", + "properties": { + "attributes": { + "additionalProperties": False, + "description": "Attributes of the monitor notification rule.", + "properties": { + "conditional_recipients": { + "description": "Use " + "conditional " + "recipients " + "to " + "define " + "different " + "recipients " + "for " + "different " + "situations.", + "properties": { + "conditions": { + "description": "Conditions of the notification rule.", + "items": { + "description": "Conditions " + "for " + "`conditional_recipients`.", + "properties": { + "recipients": { + "description": "A " + "list " + "of " + "recipients " + "to " + "notify. " + "Uses " + "the " + "same " + "format " + "as " + "the " + "monitor " + "`message` " + "field. " + "Must " + "not " + "start " + "with " + "an " + "'@'.", + "example": ["slack-test-channel", "jira-test"], + "items": { + "description": "individual recipient.", + "maxLength": 255, + "type": "string", + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + "scope": { + "description": "The " + "scope " + "to " + "which " + "the " + "monitor " + "applied.", + "example": "transition_type:alert", + "maxLength": 3000, + "minLength": 1, + "type": "string", + }, + }, + "required": ["scope", "recipients"], + "type": "object", + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + }, + "fallback_recipients": { + "description": "A " + "list " + "of " + "recipients " + "to " + "notify. " + "Uses " + "the " + "same " + "format " + "as " + "the " + "monitor " + "`message` " + "field. " + "Must " + "not " + "start " + "with " + "an " + "'@'.", + "example": ["slack-test-channel", "jira-test"], + "items": { + "description": "individual recipient.", + "maxLength": 255, + "type": "string", + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + }, + "required": ["conditions"], + "type": "object", + }, + "filter": { + "description": "Filter " + "used " + "to " + "associate " + "the " + "notification " + "rule " + "with " + "monitors.", + "oneOf": [ + { + "additionalProperties": False, + "description": "Filter " + "monitors " + "by " + "tags. " + "Monitors " + "must " + "match " + "all " + "tags.", + "properties": { + "tags": { + "description": "A list of monitor tags.", + "example": ["team:product", "host:abc"], + "items": {"maxLength": 255, "type": "string"}, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + } + }, + "required": ["tags"], + "type": "object", + } + ], + }, + "name": { + "description": "The name of the monitor notification rule.", + "example": "A notification rule name", + "maxLength": 1000, + "minLength": 1, + "type": "string", + }, + "recipients": { + "description": "A " + "list " + "of " + "recipients " + "to " + "notify. " + "Uses " + "the " + "same " + "format " + "as " + "the " + "monitor " + "`message` " + "field. " + "Must " + "not " + "start " + "with " + "an " + "'@'.", + "example": ["slack-test-channel", "jira-test"], + "items": { + "description": "individual recipient.", + "maxLength": 255, + "type": "string", + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + }, + "required": ["name"], + "type": "object", + }, + "type": { + "default": "monitor-notification-rule", + "description": "Monitor notification rule resource type.", + "enum": ["monitor-notification-rule"], + "example": "monitor-notification-rule", + "type": "string", + "x-enum-varnames": ["MONITOR_NOTIFICATION_RULE"], + }, + }, + "required": ["attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEMONITORNOTIFICATIONRULE_REQUEST_BODY_SCHEMA": { + "description": "Request for updating a monitor notification rule.", + "properties": { + "data": { + "description": "Object to update a monitor notification rule.", + "properties": { + "attributes": { + "additionalProperties": False, + "description": "Attributes of the monitor notification rule.", + "properties": { + "conditional_recipients": { + "description": "Use " + "conditional " + "recipients " + "to " + "define " + "different " + "recipients " + "for " + "different " + "situations.", + "properties": { + "conditions": { + "description": "Conditions of the notification rule.", + "items": { + "description": "Conditions " + "for " + "`conditional_recipients`.", + "properties": { + "recipients": { + "description": "A " + "list " + "of " + "recipients " + "to " + "notify. " + "Uses " + "the " + "same " + "format " + "as " + "the " + "monitor " + "`message` " + "field. " + "Must " + "not " + "start " + "with " + "an " + "'@'.", + "example": ["slack-test-channel", "jira-test"], + "items": { + "description": "individual recipient.", + "maxLength": 255, + "type": "string", + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + "scope": { + "description": "The " + "scope " + "to " + "which " + "the " + "monitor " + "applied.", + "example": "transition_type:alert", + "maxLength": 3000, + "minLength": 1, + "type": "string", + }, + }, + "required": ["scope", "recipients"], + "type": "object", + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + }, + "fallback_recipients": { + "description": "A " + "list " + "of " + "recipients " + "to " + "notify. " + "Uses " + "the " + "same " + "format " + "as " + "the " + "monitor " + "`message` " + "field. " + "Must " + "not " + "start " + "with " + "an " + "'@'.", + "example": ["slack-test-channel", "jira-test"], + "items": { + "description": "individual recipient.", + "maxLength": 255, + "type": "string", + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + }, + "required": ["conditions"], + "type": "object", + }, + "filter": { + "description": "Filter " + "used " + "to " + "associate " + "the " + "notification " + "rule " + "with " + "monitors.", + "oneOf": [ + { + "additionalProperties": False, + "description": "Filter " + "monitors " + "by " + "tags. " + "Monitors " + "must " + "match " + "all " + "tags.", + "properties": { + "tags": { + "description": "A list of monitor tags.", + "example": ["team:product", "host:abc"], + "items": {"maxLength": 255, "type": "string"}, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + } + }, + "required": ["tags"], + "type": "object", + } + ], + }, + "name": { + "description": "The name of the monitor notification rule.", + "example": "A notification rule name", + "maxLength": 1000, + "minLength": 1, + "type": "string", + }, + "recipients": { + "description": "A " + "list " + "of " + "recipients " + "to " + "notify. " + "Uses " + "the " + "same " + "format " + "as " + "the " + "monitor " + "`message` " + "field. " + "Must " + "not " + "start " + "with " + "an " + "'@'.", + "example": ["slack-test-channel", "jira-test"], + "items": { + "description": "individual recipient.", + "maxLength": 255, + "type": "string", + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": True, + }, + }, + "required": ["name"], + "type": "object", + }, + "id": { + "description": "The ID of the monitor notification rule.", + "example": "00000000-0000-1234-0000-000000000000", + "type": "string", + }, + "type": { + "default": "monitor-notification-rule", + "description": "Monitor notification rule resource type.", + "enum": ["monitor-notification-rule"], + "example": "monitor-notification-rule", + "type": "string", + "x-enum-varnames": ["MONITOR_NOTIFICATION_RULE"], + }, + }, + "required": ["id", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA": { + "description": "Request for creating a monitor configuration policy.", + "properties": { + "data": { + "description": "A monitor configuration policy data.", + "properties": { + "attributes": { + "description": "Policy and policy type for a monitor configuration policy.", + "properties": { + "policy": { + "description": "Configuration for the policy.", + "oneOf": [ + { + "description": "Tag " + "attributes " + "of " + "a " + "monitor " + "configuration " + "policy.", + "properties": { + "tag_key": { + "description": "The key of the tag.", + "example": "datacenter", + "maxLength": 255, + "type": "string", + }, + "tag_key_required": { + "description": "If " + "a " + "tag " + "key " + "is " + "required " + "for " + "monitor " + "creation.", + "example": True, + "type": "boolean", + }, + "valid_tag_values": { + "description": "Valid values for the tag.", + "example": ["prod", "staging"], + "items": {"maxLength": 255, "type": "string"}, + "type": "array", + }, + }, + "required": [ + "tag_key", + "tag_key_required", + "valid_tag_values", + ], + "type": "object", + } + ], + }, + "policy_type": { + "default": "tag", + "description": "The monitor configuration policy type.", + "enum": ["tag"], + "example": "tag", + "type": "string", + "x-enum-varnames": ["TAG"], + }, + }, + "required": ["policy_type", "policy"], + "type": "object", + }, + "type": { + "default": "monitor-config-policy", + "description": "Monitor configuration policy resource type.", + "enum": ["monitor-config-policy"], + "example": "monitor-config-policy", + "type": "string", + "x-enum-varnames": ["MONITOR_CONFIG_POLICY"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "EDITMONITORCONFIGPOLICY_REQUEST_BODY_SCHEMA": { + "description": "Request for editing a monitor configuration policy.", + "properties": { + "data": { + "description": "A monitor configuration policy data.", + "properties": { + "attributes": { + "description": "Policy and policy type for a monitor configuration policy.", + "properties": { + "policy": { + "description": "Configuration for the policy.", + "oneOf": [ + { + "description": "Tag " + "attributes " + "of " + "a " + "monitor " + "configuration " + "policy.", + "properties": { + "tag_key": { + "description": "The key of the tag.", + "example": "datacenter", + "maxLength": 255, + "type": "string", + }, + "tag_key_required": { + "description": "If " + "a " + "tag " + "key " + "is " + "required " + "for " + "monitor " + "creation.", + "example": True, + "type": "boolean", + }, + "valid_tag_values": { + "description": "Valid values for the tag.", + "example": ["prod", "staging"], + "items": {"maxLength": 255, "type": "string"}, + "type": "array", + }, + }, + "type": "object", + } + ], + }, + "policy_type": { + "default": "tag", + "description": "The monitor configuration policy type.", + "enum": ["tag"], + "example": "tag", + "type": "string", + "x-enum-varnames": ["TAG"], + }, + }, + "required": ["policy_type", "policy"], + "type": "object", + }, + "id": { + "description": "ID of this monitor configuration policy.", + "example": "00000000-0000-1234-0000-000000000000", + "type": "string", + }, + "type": { + "default": "monitor-config-policy", + "description": "Monitor configuration policy resource type.", + "enum": ["monitor-config-policy"], + "example": "monitor-config-policy", + "type": "string", + "x-enum-varnames": ["MONITOR_CONFIG_POLICY"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA": { + "description": "Request for creating a monitor user template.", + "properties": { + "data": { + "description": "Monitor user template data.", + "properties": { + "attributes": { + "additionalProperties": False, + "description": "Attributes for a monitor user template.", + "properties": { + "description": { + "description": "A brief description of the monitor user template.", + "example": "This is a template for monitoring user activity.", + "nullable": True, + "type": "string", + }, + "monitor_definition": { + "additionalProperties": {}, + "description": "A " + "valid " + "monitor " + "definition " + "in " + "the " + "same " + "format " + "as " + "the " + "[V1 " + "Monitor " + "API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).", + "example": { + "message": "You " + "may " + "need " + "to " + "add " + "web " + "hosts " + "if " + "this " + "is " + "consistently " + "high.", + "name": "Bytes received on host0", + "query": "avg(last_5m):sum:system.net.bytes_rcvd{host:host0} " + "> " + "100", + "type": "query alert", + }, + "type": "object", + }, + "tags": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTags` " + "object.", + "example": ["product:Our Custom App", "integration:Azure"], + "items": { + "description": "Tags " + "associated " + "with " + "the " + "monitor " + "user " + "template. " + "Must " + "be " + "key " + "value. " + "Only " + "'product' " + "and " + "'integration' " + "keys " + "are\n" + "allowed. " + "The " + "value " + "is " + "the " + "name " + "of " + "the " + "category " + "to " + "display " + "the " + "template " + "under. " + "Integrations " + "can " + "be " + "filtered " + "out " + "in " + "the " + "UI.\n" + "(Review " + "note: " + "This " + "modeling " + "of " + "'categories' " + "is " + "subject " + "to " + "change.)", + "example": "us-east1", + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "template_variables": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTemplateVariables` " + "object.", + "items": { + "additionalProperties": False, + "description": "List " + "of " + "objects " + "representing " + "template " + "variables " + "on " + "the " + "monitor " + "which " + "can " + "have " + "selectable " + "values.", + "properties": { + "available_values": { + "description": "Available values for the variable.", + "example": ["value1", "value2"], + "items": { + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "defaults": { + "description": "Default " + "values " + "of " + "the " + "template " + "variable.", + "example": ["defaultValue"], + "items": { + "minLength": 0, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "name": { + "description": "The name of the template variable.", + "example": "regionName", + "type": "string", + }, + "tag_key": { + "description": "The " + "tag " + "key " + "associated " + "with " + "the " + "variable. " + "This " + "works " + "the " + "same " + "as " + "dashboard " + "template " + "variables.", + "example": "datacenter", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "title": { + "description": "The title of the monitor user template.", + "example": "Postgres CPU Monitor", + "type": "string", + }, + }, + "required": ["title", "monitor_definition", "tags"], + "type": "object", + }, + "type": { + "default": "monitor-user-template", + "description": "Monitor user template resource type.", + "enum": ["monitor-user-template"], + "example": "monitor-user-template", + "type": "string", + "x-enum-varnames": ["MONITOR_USER_TEMPLATE"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "VALIDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA": { + "description": "Request for creating a monitor user template.", + "properties": { + "data": { + "description": "Monitor user template data.", + "properties": { + "attributes": { + "additionalProperties": False, + "description": "Attributes for a monitor user template.", + "properties": { + "description": { + "description": "A brief description of the monitor user template.", + "example": "This is a template for monitoring user activity.", + "nullable": True, + "type": "string", + }, + "monitor_definition": { + "additionalProperties": {}, + "description": "A " + "valid " + "monitor " + "definition " + "in " + "the " + "same " + "format " + "as " + "the " + "[V1 " + "Monitor " + "API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).", + "example": { + "message": "You " + "may " + "need " + "to " + "add " + "web " + "hosts " + "if " + "this " + "is " + "consistently " + "high.", + "name": "Bytes received on host0", + "query": "avg(last_5m):sum:system.net.bytes_rcvd{host:host0} " + "> " + "100", + "type": "query alert", + }, + "type": "object", + }, + "tags": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTags` " + "object.", + "example": ["product:Our Custom App", "integration:Azure"], + "items": { + "description": "Tags " + "associated " + "with " + "the " + "monitor " + "user " + "template. " + "Must " + "be " + "key " + "value. " + "Only " + "'product' " + "and " + "'integration' " + "keys " + "are\n" + "allowed. " + "The " + "value " + "is " + "the " + "name " + "of " + "the " + "category " + "to " + "display " + "the " + "template " + "under. " + "Integrations " + "can " + "be " + "filtered " + "out " + "in " + "the " + "UI.\n" + "(Review " + "note: " + "This " + "modeling " + "of " + "'categories' " + "is " + "subject " + "to " + "change.)", + "example": "us-east1", + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "template_variables": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTemplateVariables` " + "object.", + "items": { + "additionalProperties": False, + "description": "List " + "of " + "objects " + "representing " + "template " + "variables " + "on " + "the " + "monitor " + "which " + "can " + "have " + "selectable " + "values.", + "properties": { + "available_values": { + "description": "Available values for the variable.", + "example": ["value1", "value2"], + "items": { + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "defaults": { + "description": "Default " + "values " + "of " + "the " + "template " + "variable.", + "example": ["defaultValue"], + "items": { + "minLength": 0, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "name": { + "description": "The name of the template variable.", + "example": "regionName", + "type": "string", + }, + "tag_key": { + "description": "The " + "tag " + "key " + "associated " + "with " + "the " + "variable. " + "This " + "works " + "the " + "same " + "as " + "dashboard " + "template " + "variables.", + "example": "datacenter", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "title": { + "description": "The title of the monitor user template.", + "example": "Postgres CPU Monitor", + "type": "string", + }, + }, + "required": ["title", "monitor_definition", "tags"], + "type": "object", + }, + "type": { + "default": "monitor-user-template", + "description": "Monitor user template resource type.", + "enum": ["monitor-user-template"], + "example": "monitor-user-template", + "type": "string", + "x-enum-varnames": ["MONITOR_USER_TEMPLATE"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEMONITORUSERTEMPLATE_REQUEST_BODY_SCHEMA": { + "description": "Request for creating a new monitor user template version.", + "properties": { + "data": { + "description": "Monitor user template data.", + "properties": { + "attributes": { + "additionalProperties": False, + "description": "Attributes for a monitor user template.", + "properties": { + "description": { + "description": "A brief description of the monitor user template.", + "example": "This is a template for monitoring user activity.", + "nullable": True, + "type": "string", + }, + "monitor_definition": { + "additionalProperties": {}, + "description": "A " + "valid " + "monitor " + "definition " + "in " + "the " + "same " + "format " + "as " + "the " + "[V1 " + "Monitor " + "API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).", + "example": { + "message": "You " + "may " + "need " + "to " + "add " + "web " + "hosts " + "if " + "this " + "is " + "consistently " + "high.", + "name": "Bytes received on host0", + "query": "avg(last_5m):sum:system.net.bytes_rcvd{host:host0} " + "> " + "100", + "type": "query alert", + }, + "type": "object", + }, + "tags": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTags` " + "object.", + "example": ["product:Our Custom App", "integration:Azure"], + "items": { + "description": "Tags " + "associated " + "with " + "the " + "monitor " + "user " + "template. " + "Must " + "be " + "key " + "value. " + "Only " + "'product' " + "and " + "'integration' " + "keys " + "are\n" + "allowed. " + "The " + "value " + "is " + "the " + "name " + "of " + "the " + "category " + "to " + "display " + "the " + "template " + "under. " + "Integrations " + "can " + "be " + "filtered " + "out " + "in " + "the " + "UI.\n" + "(Review " + "note: " + "This " + "modeling " + "of " + "'categories' " + "is " + "subject " + "to " + "change.)", + "example": "us-east1", + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "template_variables": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTemplateVariables` " + "object.", + "items": { + "additionalProperties": False, + "description": "List " + "of " + "objects " + "representing " + "template " + "variables " + "on " + "the " + "monitor " + "which " + "can " + "have " + "selectable " + "values.", + "properties": { + "available_values": { + "description": "Available values for the variable.", + "example": ["value1", "value2"], + "items": { + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "defaults": { + "description": "Default " + "values " + "of " + "the " + "template " + "variable.", + "example": ["defaultValue"], + "items": { + "minLength": 0, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "name": { + "description": "The name of the template variable.", + "example": "regionName", + "type": "string", + }, + "tag_key": { + "description": "The " + "tag " + "key " + "associated " + "with " + "the " + "variable. " + "This " + "works " + "the " + "same " + "as " + "dashboard " + "template " + "variables.", + "example": "datacenter", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "title": { + "description": "The title of the monitor user template.", + "example": "Postgres CPU Monitor", + "type": "string", + }, + }, + "required": ["title", "monitor_definition", "tags"], + "type": "object", + }, + "id": { + "description": "The unique identifier.", + "example": "00000000-0000-1234-0000-000000000000", + "type": "string", + }, + "type": { + "default": "monitor-user-template", + "description": "Monitor user template resource type.", + "enum": ["monitor-user-template"], + "example": "monitor-user-template", + "type": "string", + "x-enum-varnames": ["MONITOR_USER_TEMPLATE"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "VALIDATEMONITORTEMPLATE_REQUEST_BODY_SCHEMA": { + "description": "Request for creating a new monitor user template version.", + "properties": { + "data": { + "description": "Monitor user template data.", + "properties": { + "attributes": { + "additionalProperties": False, + "description": "Attributes for a monitor user template.", + "properties": { + "description": { + "description": "A brief description of the monitor user template.", + "example": "This is a template for monitoring user activity.", + "nullable": True, + "type": "string", + }, + "monitor_definition": { + "additionalProperties": {}, + "description": "A " + "valid " + "monitor " + "definition " + "in " + "the " + "same " + "format " + "as " + "the " + "[V1 " + "Monitor " + "API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).", + "example": { + "message": "You " + "may " + "need " + "to " + "add " + "web " + "hosts " + "if " + "this " + "is " + "consistently " + "high.", + "name": "Bytes received on host0", + "query": "avg(last_5m):sum:system.net.bytes_rcvd{host:host0} " + "> " + "100", + "type": "query alert", + }, + "type": "object", + }, + "tags": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTags` " + "object.", + "example": ["product:Our Custom App", "integration:Azure"], + "items": { + "description": "Tags " + "associated " + "with " + "the " + "monitor " + "user " + "template. " + "Must " + "be " + "key " + "value. " + "Only " + "'product' " + "and " + "'integration' " + "keys " + "are\n" + "allowed. " + "The " + "value " + "is " + "the " + "name " + "of " + "the " + "category " + "to " + "display " + "the " + "template " + "under. " + "Integrations " + "can " + "be " + "filtered " + "out " + "in " + "the " + "UI.\n" + "(Review " + "note: " + "This " + "modeling " + "of " + "'categories' " + "is " + "subject " + "to " + "change.)", + "example": "us-east1", + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "template_variables": { + "description": "The " + "definition " + "of " + "`MonitorUserTemplateTemplateVariables` " + "object.", + "items": { + "additionalProperties": False, + "description": "List " + "of " + "objects " + "representing " + "template " + "variables " + "on " + "the " + "monitor " + "which " + "can " + "have " + "selectable " + "values.", + "properties": { + "available_values": { + "description": "Available values for the variable.", + "example": ["value1", "value2"], + "items": { + "minLength": 1, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "defaults": { + "description": "Default " + "values " + "of " + "the " + "template " + "variable.", + "example": ["defaultValue"], + "items": { + "minLength": 0, + "type": "string", + "uniqueItems": True, + }, + "type": "array", + }, + "name": { + "description": "The name of the template variable.", + "example": "regionName", + "type": "string", + }, + "tag_key": { + "description": "The " + "tag " + "key " + "associated " + "with " + "the " + "variable. " + "This " + "works " + "the " + "same " + "as " + "dashboard " + "template " + "variables.", + "example": "datacenter", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + "title": { + "description": "The title of the monitor user template.", + "example": "Postgres CPU Monitor", + "type": "string", + }, + }, + "required": ["title", "monitor_definition", "tags"], + "type": "object", + }, + "id": { + "description": "The unique identifier.", + "example": "00000000-0000-1234-0000-000000000000", + "type": "string", + }, + "type": { + "default": "monitor-user-template", + "description": "Monitor user template resource type.", + "enum": ["monitor-user-template"], + "example": "monitor-user-template", + "type": "string", + "x-enum-varnames": ["MONITOR_USER_TEMPLATE"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEONCALLESCALATIONPOLICY_REQUEST_BODY_SCHEMA": { + "description": "Represents a request to create a new escalation policy, including the " + "policy data.", + "example": { + "data": { + "attributes": { + "name": "Escalation Policy 1", + "resolve_page_on_policy_end": True, + "retries": 2, + "steps": [ + { + "assignment": "default", + "escalate_after_seconds": 3600, + "targets": [ + {"id": "00000000-aba1-0000-0000-000000000000", "type": "users"}, + {"id": "00000000-aba2-0000-0000-000000000000", "type": "schedules"}, + {"id": "00000000-aba3-0000-0000-000000000000", "type": "teams"}, + ], + }, + { + "assignment": "round-robin", + "escalate_after_seconds": 3600, + "targets": [ + {"id": "00000000-aba1-0000-0000-000000000000", "type": "users"}, + {"id": "00000000-abb1-0000-0000-000000000000", "type": "users"}, + ], + }, + ], + }, + "relationships": { + "teams": { + "data": [{"id": "00000000-da3a-0000-0000-000000000000", "type": "teams"}] + } + }, + "type": "policies", + } + }, + "properties": { + "data": { + "description": "Represents the data for creating an " + "escalation policy, including its attributes, " + "relationships, and resource type.", + "properties": { + "attributes": { + "description": "Defines the " + "attributes for " + "creating an " + "escalation " + "policy, " + "including its " + "description, " + "name, " + "resolution " + "behavior, " + "retries, and " + "steps.", + "properties": { + "name": { + "description": "Specifies the name for the new escalation policy.", + "example": "On-Call Escalation Policy", + "type": "string", + }, + "resolve_page_on_policy_end": { + "description": "Indicates " + "whether " + "the " + "page " + "is " + "automatically " + "resolved " + "when " + "the " + "policy " + "ends.", + "type": "boolean", + }, + "retries": { + "description": "Specifies " + "how " + "many " + "times " + "the " + "escalation " + "sequence " + "is " + "retried " + "if " + "there " + "is " + "no " + "response.", + "format": "int64", + "type": "integer", + }, + "steps": { + "description": "A " + "list " + "of " + "escalation " + "steps, " + "each " + "defining " + "assignment, " + "escalation " + "timeout, " + "and " + "targets " + "for " + "the " + "new " + "policy.", + "items": { + "description": "Defines " + "a " + "single " + "escalation " + "step " + "within " + "an " + "escalation " + "policy " + "creation " + "request. " + "Contains " + "assignment " + "strategy, " + "escalation " + "timeout, " + "and " + "a " + "list " + "of " + "targets.", + "properties": { + "assignment": { + "description": "Specifies " + "how " + "this " + "escalation " + "step " + "will " + "assign " + "targets " + "(example " + "`default` " + "or " + "`round-robin`).", + "enum": ["default", "round-robin"], + "type": "string", + "x-enum-varnames": ["DEFAULT", "ROUND_ROBIN"], + }, + "escalate_after_seconds": { + "description": "Defines " + "how " + "many " + "seconds " + "to " + "wait " + "before " + "escalating " + "to " + "the " + "next " + "step.", + "example": 3600, + "format": "int64", + "type": "integer", + }, + "targets": { + "description": "Specifies " + "the " + "collection " + "of " + "escalation " + "targets " + "for " + "this " + "step.", + "example": ["users"], + "items": { + "description": "Defines " + "a " + "single " + "escalation " + "target " + "within " + "a " + "step " + "for " + "an " + "escalation " + "policy " + "creation " + "request. " + "Contains " + "`id` " + "and " + "`type`.", + "properties": { + "id": { + "description": "Specifies " + "the " + "unique " + "identifier " + "for " + "this " + "target.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string", + }, + "type": { + "description": "Specifies " + "the " + "type " + "of " + "escalation " + "target " + "(example " + "`users`, " + "`schedules`, " + "or " + "`teams`).", + "enum": ["users", "schedules", "teams"], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS", + "SCHEDULES", + "TEAMS", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["targets"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["name", "steps"], + "type": "object", + }, + "relationships": { + "description": "Represents " + "relationships " + "in an " + "escalation " + "policy " + "creation " + "request, " + "including " + "references " + "to teams.", + "properties": { + "teams": { + "description": "Associates " + "teams " + "with " + "this " + "schedule " + "in " + "a " + "data " + "structure.", + "properties": { + "data": { + "description": "An " + "array " + "of " + "team " + "references " + "for " + "this " + "schedule.", + "items": { + "description": "Relates " + "a " + "team " + "to " + "this " + "schedule, " + "identified " + "by " + "`id` " + "and " + "`type` " + "(must " + "be " + "`teams`).", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "team " + "in " + "this " + "relationship.", + "example": "00000000-da3a-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "teams", + "description": "Teams resource type.", + "enum": ["teams"], + "example": "teams", + "type": "string", + "x-enum-varnames": ["TEAMS"], + }, + }, + "required": ["type", "id"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "policies", + "description": "Indicates that the resource is of type `policies`.", + "enum": ["policies"], + "example": "policies", + "type": "string", + "x-enum-varnames": ["POLICIES"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEONCALLESCALATIONPOLICY_REQUEST_BODY_SCHEMA": { + "description": "Represents a request to update an existing escalation policy, " + "including the updated policy data.", + "example": { + "data": { + "attributes": { + "name": "Escalation Policy 1", + "resolve_page_on_policy_end": False, + "retries": 2, + "steps": [ + { + "assignment": "default", + "escalate_after_seconds": 3600, + "id": "00000000-aba1-0000-0000-000000000000", + "targets": [ + {"id": "00000000-aba1-0000-0000-000000000000", "type": "users"}, + {"id": "00000000-aba2-0000-0000-000000000000", "type": "schedules"}, + ], + } + ], + }, + "id": "a3000000-0000-0000-0000-000000000000", + "relationships": { + "teams": { + "data": [{"id": "00000000-da3a-0000-0000-000000000000", "type": "teams"}] + } + }, + "type": "policies", + } + }, + "properties": { + "data": { + "description": "Represents the data for updating an existing " + "escalation policy, including its ID, " + "attributes, relationships, and resource type.", + "properties": { + "attributes": { + "description": "Defines the " + "attributes that " + "can be updated " + "for an " + "escalation " + "policy, such as " + "description, " + "name, " + "resolution " + "behavior, " + "retries, and " + "steps.", + "properties": { + "name": { + "description": "Specifies the name of the escalation policy.", + "example": "On-Call Escalation Policy", + "type": "string", + }, + "resolve_page_on_policy_end": { + "description": "Indicates " + "whether " + "the " + "page " + "is " + "automatically " + "resolved " + "when " + "the " + "policy " + "ends.", + "type": "boolean", + }, + "retries": { + "description": "Specifies " + "how " + "many " + "times " + "the " + "escalation " + "sequence " + "is " + "retried " + "if " + "there " + "is " + "no " + "response.", + "format": "int64", + "type": "integer", + }, + "steps": { + "description": "A " + "list " + "of " + "escalation " + "steps, " + "each " + "defining " + "assignment, " + "escalation " + "timeout, " + "and " + "targets.", + "items": { + "description": "Defines " + "a " + "single " + "escalation " + "step " + "within " + "an " + "escalation " + "policy " + "update " + "request. " + "Contains " + "assignment " + "strategy, " + "escalation " + "timeout, " + "an " + "optional " + "step " + "ID, " + "and " + "a " + "list " + "of " + "targets.", + "properties": { + "assignment": { + "description": "Specifies " + "how " + "this " + "escalation " + "step " + "will " + "assign " + "targets " + "(example " + "`default` " + "or " + "`round-robin`).", + "enum": ["default", "round-robin"], + "type": "string", + "x-enum-varnames": ["DEFAULT", "ROUND_ROBIN"], + }, + "escalate_after_seconds": { + "description": "Defines " + "how " + "many " + "seconds " + "to " + "wait " + "before " + "escalating " + "to " + "the " + "next " + "step.", + "example": 3600, + "format": "int64", + "type": "integer", + }, + "id": { + "description": "Specifies " + "the " + "unique " + "identifier " + "of " + "this " + "step.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string", + }, + "targets": { + "description": "Specifies " + "the " + "collection " + "of " + "escalation " + "targets " + "for " + "this " + "step.", + "items": { + "description": "Defines " + "a " + "single " + "escalation " + "target " + "within " + "a " + "step " + "for " + "an " + "escalation " + "policy " + "creation " + "request. " + "Contains " + "`id` " + "and " + "`type`.", + "properties": { + "id": { + "description": "Specifies " + "the " + "unique " + "identifier " + "for " + "this " + "target.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string", + }, + "type": { + "description": "Specifies " + "the " + "type " + "of " + "escalation " + "target " + "(example " + "`users`, " + "`schedules`, " + "or " + "`teams`).", + "enum": ["users", "schedules", "teams"], + "example": "users", + "type": "string", + "x-enum-varnames": [ + "USERS", + "SCHEDULES", + "TEAMS", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["targets"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["name", "steps"], + "type": "object", + }, + "id": { + "description": "Specifies the unique " + "identifier of the " + "escalation policy being " + "updated.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string", + }, + "relationships": { + "description": "Represents " + "relationships " + "in an " + "escalation " + "policy " + "update " + "request, " + "including " + "references " + "to teams.", + "properties": { + "teams": { + "description": "Associates " + "teams " + "with " + "this " + "schedule " + "in " + "a " + "data " + "structure.", + "properties": { + "data": { + "description": "An " + "array " + "of " + "team " + "references " + "for " + "this " + "schedule.", + "items": { + "description": "Relates " + "a " + "team " + "to " + "this " + "schedule, " + "identified " + "by " + "`id` " + "and " + "`type` " + "(must " + "be " + "`teams`).", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "team " + "in " + "this " + "relationship.", + "example": "00000000-da3a-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "teams", + "description": "Teams resource type.", + "enum": ["teams"], + "example": "teams", + "type": "string", + "x-enum-varnames": ["TEAMS"], + }, + }, + "required": ["type", "id"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "policies", + "description": "Indicates that the resource is of type `policies`.", + "enum": ["policies"], + "example": "policies", + "type": "string", + "x-enum-varnames": ["POLICIES"], + }, + }, + "required": ["type", "id", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEONCALLSCHEDULE_REQUEST_BODY_SCHEMA": { + "description": "The top-level request body for schedule creation, wrapping a `data` " + "object.", + "example": { + "data": { + "attributes": { + "layers": [ + { + "effective_date": "2025-02-03T05:00:00Z", + "end_date": "2025-12-31T00:00:00Z", + "interval": {"days": 1}, + "members": [{"user": {"id": "00000000-aba1-0000-0000-000000000000"}}], + "name": "Layer 1", + "restrictions": [ + { + "end_day": "friday", + "end_time": "17:00:00", + "start_day": "monday", + "start_time": "09:00:00", + } + ], + "rotation_start": "2025-02-01T00:00:00Z", + } + ], + "name": "On-Call Schedule", + "time_zone": "America/New_York", + }, + "relationships": { + "teams": { + "data": [{"id": "00000000-da3a-0000-0000-000000000000", "type": "teams"}] + } + }, + "type": "schedules", + } + }, + "properties": { + "data": { + "description": "The core data wrapper for creating a " + "schedule, encompassing attributes, " + "relationships, and the resource type.", + "properties": { + "attributes": { + "description": "Describes the " + "main attributes " + "for creating a " + "new schedule, " + "including name, " + "layers, and " + "time zone.", + "properties": { + "layers": { + "description": "The " + "layers " + "of " + "On-Call " + "coverage " + "that " + "define " + "rotation " + "intervals " + "and " + "restrictions.", + "items": { + "description": "Describes " + "a " + "schedule " + "layer, " + "including " + "rotation " + "intervals, " + "members, " + "restrictions, " + "and " + "timeline " + "settings.", + "properties": { + "effective_date": { + "description": "The " + "date/time " + "when " + "this " + "layer " + "becomes " + "active " + "(in " + "ISO " + "8601).", + "example": "2025-01-01T00:00:00Z", + "format": "date-time", + "type": "string", + }, + "end_date": { + "description": "The " + "date/time " + "after " + "which " + "this " + "layer " + "no " + "longer " + "applies " + "(in " + "ISO " + "8601).", + "format": "date-time", + "type": "string", + }, + "interval": { + "description": "Defines " + "how " + "often " + "the " + "rotation " + "repeats, " + "using " + "a " + "combination " + "of " + "days " + "and " + "optional " + "seconds. " + "Should " + "be " + "at " + "least " + "1 " + "hour.", + "properties": { + "days": { + "description": "The " + "number " + "of " + "days " + "in " + "each " + "rotation " + "cycle.", + "example": 1, + "format": "int32", + "maximum": 400, + "type": "integer", + }, + "seconds": { + "description": "Any " + "additional " + "seconds " + "for " + "the " + "rotation " + "cycle " + "(up " + "to " + "30 " + "days).", + "example": 300, + "format": "int64", + "maximum": 2592000, + "type": "integer", + }, + }, + "type": "object", + }, + "members": { + "description": "A " + "list " + "of " + "members " + "who " + "participate " + "in " + "this " + "layer's " + "rotation.", + "items": { + "description": "Defines " + "a " + "single " + "member " + "within " + "a " + "schedule " + "layer, " + "including " + "the " + "reference " + "to " + "the " + "underlying " + "user.", + "properties": { + "user": { + "description": "Identifies " + "the " + "user " + "participating " + "in " + "this " + "layer " + "as " + "a " + "single " + "object " + "with " + "an " + "`id`.", + "properties": { + "id": { + "description": "The user's ID.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "The name of this layer.", + "example": "Primary On-Call Layer", + "type": "string", + }, + "restrictions": { + "description": "Zero " + "or " + "more " + "time-based " + "restrictions " + "(for " + "example, " + "only " + "weekdays, " + "during " + "business " + "hours).", + "items": { + "description": "Defines " + "a " + "single " + "time " + "restriction " + "rule " + "with " + "start " + "and " + "end " + "times " + "and " + "the " + "applicable " + "weekdays.", + "properties": { + "end_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY", + ], + }, + "end_time": { + "description": "Specifies " + "the " + "ending " + "time " + "for " + "this " + "restriction.", + "type": "string", + }, + "start_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY", + ], + }, + "start_time": { + "description": "Specifies " + "the " + "starting " + "time " + "for " + "this " + "restriction.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "rotation_start": { + "description": "The " + "date/time " + "when " + "the " + "rotation " + "for " + "this " + "layer " + "starts " + "(in " + "ISO " + "8601).", + "example": "2025-01-01T00:00:00Z", + "format": "date-time", + "type": "string", + }, + }, + "required": [ + "name", + "interval", + "rotation_start", + "effective_date", + "members", + ], + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "A human-readable name for the new schedule.", + "example": "Team A On-Call", + "type": "string", + }, + "time_zone": { + "description": "The time zone in which the schedule is defined.", + "example": "America/New_York", + "type": "string", + }, + }, + "required": ["name", "time_zone", "layers"], + "type": "object", + }, + "relationships": { + "description": "Gathers " + "relationship " + "objects for " + "the schedule " + "creation " + "request, " + "including " + "the teams to " + "associate.", + "properties": { + "teams": { + "description": "Associates " + "teams " + "with " + "this " + "schedule " + "in " + "a " + "data " + "structure.", + "properties": { + "data": { + "description": "An " + "array " + "of " + "team " + "references " + "for " + "this " + "schedule.", + "items": { + "description": "Relates " + "a " + "team " + "to " + "this " + "schedule, " + "identified " + "by " + "`id` " + "and " + "`type` " + "(must " + "be " + "`teams`).", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "team " + "in " + "this " + "relationship.", + "example": "00000000-da3a-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "teams", + "description": "Teams resource type.", + "enum": ["teams"], + "example": "teams", + "type": "string", + "x-enum-varnames": ["TEAMS"], + }, + }, + "required": ["type", "id"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "schedules", + "description": "Schedules resource type.", + "enum": ["schedules"], + "example": "schedules", + "type": "string", + "x-enum-varnames": ["SCHEDULES"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEONCALLSCHEDULE_REQUEST_BODY_SCHEMA": { + "description": "A top-level wrapper for a schedule update request, referring to the " + "`data` object with the new details.", + "example": { + "data": { + "attributes": { + "layers": [ + { + "effective_date": "2025-02-03T05:00:00Z", + "end_date": "2025-12-31T00:00:00Z", + "interval": {"seconds": 3600}, + "members": [{"user": {"id": "00000000-aba1-0000-0000-000000000000"}}], + "name": "Layer 1", + "restrictions": [ + { + "end_day": "friday", + "end_time": "17:00:00", + "start_day": "monday", + "start_time": "09:00:00", + } + ], + "rotation_start": "2025-02-01T00:00:00Z", + } + ], + "name": "On-Call Schedule Updated", + "time_zone": "America/New_York", + }, + "id": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "relationships": { + "teams": { + "data": [{"id": "00000000-da3a-0000-0000-000000000000", "type": "teams"}] + } + }, + "type": "schedules", + } + }, + "properties": { + "data": { + "description": "Contains all data needed to update an " + "existing schedule, including its attributes " + "(such as name and time zone) and any " + "relationships to teams.", + "properties": { + "attributes": { + "description": "Defines the " + "updatable " + "attributes for " + "a schedule, " + "such as name, " + "time zone, and " + "layers.", + "properties": { + "layers": { + "description": "The " + "updated " + "list " + "of " + "layers " + "(rotations) " + "for " + "this " + "schedule.", + "items": { + "description": "Represents " + "a " + "layer " + "within " + "a " + "schedule " + "update, " + "including " + "rotation " + "details, " + "members,\n" + "and " + "optional " + "restrictions.", + "properties": { + "effective_date": { + "description": "When " + "this " + "updated " + "layer " + "takes " + "effect " + "(ISO " + "8601 " + "format).", + "example": "2025-02-03T05:00:00Z", + "format": "date-time", + "type": "string", + }, + "end_date": { + "description": "When " + "this " + "updated " + "layer " + "should " + "stop " + "being " + "active " + "(ISO " + "8601 " + "format).", + "example": "2025-12-31T00:00:00Z", + "format": "date-time", + "type": "string", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "the " + "layer " + "being " + "updated.", + "example": "00000000-0000-0000-0000-000000000001", + "type": "string", + }, + "interval": { + "description": "Defines " + "how " + "often " + "the " + "rotation " + "repeats, " + "using " + "a " + "combination " + "of " + "days " + "and " + "optional " + "seconds. " + "Should " + "be " + "at " + "least " + "1 " + "hour.", + "properties": { + "days": { + "description": "The " + "number " + "of " + "days " + "in " + "each " + "rotation " + "cycle.", + "example": 1, + "format": "int32", + "maximum": 400, + "type": "integer", + }, + "seconds": { + "description": "Any " + "additional " + "seconds " + "for " + "the " + "rotation " + "cycle " + "(up " + "to " + "30 " + "days).", + "example": 300, + "format": "int64", + "maximum": 2592000, + "type": "integer", + }, + }, + "type": "object", + }, + "members": { + "description": "The members assigned to this layer.", + "items": { + "description": "Defines " + "a " + "single " + "member " + "within " + "a " + "schedule " + "layer, " + "including " + "the " + "reference " + "to " + "the " + "underlying " + "user.", + "properties": { + "user": { + "description": "Identifies " + "the " + "user " + "participating " + "in " + "this " + "layer " + "as " + "a " + "single " + "object " + "with " + "an " + "`id`.", + "properties": { + "id": { + "description": "The user's ID.", + "example": "00000000-aba1-0000-0000-000000000000", + "type": "string", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "The " + "name " + "for " + "this " + "layer " + "(for " + "example, " + '"Secondary ' + 'Coverage").', + "example": "Primary On-Call Layer", + "type": "string", + }, + "restrictions": { + "description": "Any " + "time " + "restrictions " + "that " + "define " + "when " + "this " + "layer " + "is " + "active.", + "items": { + "description": "Defines " + "a " + "single " + "time " + "restriction " + "rule " + "with " + "start " + "and " + "end " + "times " + "and " + "the " + "applicable " + "weekdays.", + "properties": { + "end_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY", + ], + }, + "end_time": { + "description": "Specifies " + "the " + "ending " + "time " + "for " + "this " + "restriction.", + "type": "string", + }, + "start_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY", + ], + }, + "start_time": { + "description": "Specifies " + "the " + "starting " + "time " + "for " + "this " + "restriction.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "rotation_start": { + "description": "The " + "date/time " + "at " + "which " + "the " + "rotation " + "begins " + "(ISO " + "8601 " + "format).", + "example": "2025-02-01T00:00:00Z", + "format": "date-time", + "type": "string", + }, + }, + "required": [ + "effective_date", + "interval", + "members", + "name", + "rotation_start", + ], + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "A short name for the schedule.", + "example": "Primary On-Call", + "type": "string", + }, + "time_zone": { + "description": "The " + "time " + "zone " + "used " + "when " + "interpreting " + "rotation " + "times.", + "example": "America/New_York", + "type": "string", + }, + }, + "required": ["name", "time_zone", "layers"], + "type": "object", + }, + "id": { + "description": "The ID of the schedule to be updated.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string", + }, + "relationships": { + "description": "Houses " + "relationships " + "for the " + "schedule " + "update, " + "typically " + "referencing " + "teams.", + "properties": { + "teams": { + "description": "Associates " + "teams " + "with " + "this " + "schedule " + "in " + "a " + "data " + "structure.", + "properties": { + "data": { + "description": "An " + "array " + "of " + "team " + "references " + "for " + "this " + "schedule.", + "items": { + "description": "Relates " + "a " + "team " + "to " + "this " + "schedule, " + "identified " + "by " + "`id` " + "and " + "`type` " + "(must " + "be " + "`teams`).", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "team " + "in " + "this " + "relationship.", + "example": "00000000-da3a-0000-0000-000000000000", + "type": "string", + }, + "type": { + "default": "teams", + "description": "Teams resource type.", + "enum": ["teams"], + "example": "teams", + "type": "string", + "x-enum-varnames": ["TEAMS"], + }, + }, + "required": ["type", "id"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "schedules", + "description": "Schedules resource type.", + "enum": ["schedules"], + "example": "schedules", + "type": "string", + "x-enum-varnames": ["SCHEDULES"], + }, + }, + "required": ["type", "id", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "SETONCALLTEAMROUTINGRULES_REQUEST_BODY_SCHEMA": { + "description": "Represents a request to create or update team routing rules, " + "including the data payload.", + "example": { + "data": { + "attributes": { + "rules": [ + { + "actions": None, + "policy_id": "", + "query": "tags.service:test", + "time_restriction": { + "restrictions": [ + { + "end_day": "monday", + "end_time": "17:00:00", + "start_day": "monday", + "start_time": "09:00:00", + }, + { + "end_day": "tuesday", + "end_time": "17:00:00", + "start_day": "tuesday", + "start_time": "09:00:00", + }, + ], + "time_zone": "", + }, + "urgency": "high", + }, + { + "actions": [ + { + "channel": "channel", + "type": "send_slack_message", + "workspace": "workspace", + } + ], + "policy_id": "fad4eee1-13f5-40d8-886b-4e56d8d5d1c6", + "query": "", + "time_restriction": None, + "urgency": "low", + }, + ] + }, + "id": "27590dae-47be-4a7d-9abf-8f4e45124020", + "type": "team_routing_rules", + } + }, + "properties": { + "data": { + "description": "Holds the data necessary to create or update " + "team routing rules, including attributes, ID, " + "and resource type.", + "properties": { + "attributes": { + "description": "Represents the " + "attributes of a " + "request to " + "update or " + "create team " + "routing rules.", + "properties": { + "rules": { + "description": "A " + "list " + "of " + "routing " + "rule " + "items " + "that " + "define " + "how " + "incoming " + "pages " + "should " + "be " + "handled.", + "items": { + "description": "Defines " + "an " + "individual " + "routing " + "rule " + "item " + "that " + "contains " + "the " + "rule " + "data " + "for " + "the " + "request.", + "properties": { + "actions": { + "description": "Specifies " + "the " + "list " + "of " + "actions " + "to " + "perform " + "when " + "the " + "routing " + "rule " + "is " + "matched.", + "items": { + "description": "Defines " + "an " + "action " + "that " + "is " + "executed " + "when " + "a " + "routing " + "rule " + "matches " + "certain " + "criteria.", + "oneOf": [ + { + "description": "Sends " + "a " + "message " + "to " + "a " + "Slack " + "channel.", + "properties": { + "channel": { + "description": "The channel ID.", + "example": "CHANNEL", + "type": "string", + }, + "type": { + "default": "send_slack_message", + "description": "Indicates " + "that " + "the " + "action " + "is " + "a " + "send " + "Slack " + "message " + "action.", + "enum": ["send_slack_message"], + "example": "send_slack_message", + "type": "string", + "x-enum-varnames": [ + "SEND_SLACK_MESSAGE" + ], + }, + "workspace": { + "description": "The workspace ID.", + "example": "WORKSPACE", + "type": "string", + }, + }, + "required": [ + "type", + "channel", + "workspace", + ], + "type": "object", + }, + { + "description": "Sends " + "a " + "message " + "to " + "a " + "Microsoft " + "Teams " + "channel.", + "properties": { + "channel": { + "description": "The channel ID.", + "example": "CHANNEL", + "type": "string", + }, + "team": { + "description": "The team ID.", + "example": "TEAM", + "type": "string", + }, + "tenant": { + "description": "The tenant ID.", + "example": "TENANT", + "type": "string", + }, + "type": { + "default": "send_teams_message", + "description": "Indicates " + "that " + "the " + "action " + "is " + "a " + "send " + "Microsoft " + "Teams " + "message " + "action.", + "enum": ["send_teams_message"], + "example": "send_teams_message", + "type": "string", + "x-enum-varnames": [ + "SEND_TEAMS_MESSAGE" + ], + }, + }, + "required": [ + "type", + "channel", + "tenant", + "team", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "policy_id": { + "description": "Identifies " + "the " + "policy " + "to " + "be " + "applied " + "when " + "this " + "routing " + "rule " + "matches.", + "type": "string", + }, + "query": { + "description": "Defines " + "the " + "query " + "or " + "condition " + "that " + "triggers " + "this " + "routing " + "rule.", + "type": "string", + }, + "time_restriction": { + "description": "Holds " + "time " + "zone " + "information " + "and " + "a " + "list " + "of " + "time " + "restrictions " + "for " + "a " + "routing " + "rule.", + "properties": { + "restrictions": { + "description": "Defines " + "the " + "list " + "of " + "time-based " + "restrictions.", + "items": { + "description": "Defines " + "a " + "single " + "time " + "restriction " + "rule " + "with " + "start " + "and " + "end " + "times " + "and " + "the " + "applicable " + "weekdays.", + "properties": { + "end_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY", + ], + }, + "end_time": { + "description": "Specifies " + "the " + "ending " + "time " + "for " + "this " + "restriction.", + "type": "string", + }, + "start_day": { + "description": "A day of the week.", + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", + ], + "type": "string", + "x-enum-varnames": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY", + ], + }, + "start_time": { + "description": "Specifies " + "the " + "starting " + "time " + "for " + "this " + "restriction.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "time_zone": { + "description": "Specifies " + "the " + "time " + "zone " + "applicable " + "to " + "the " + "restrictions.", + "example": "", + "type": "string", + }, + }, + "required": ["time_zone", "restrictions"], + "type": "object", + }, + "urgency": { + "description": "Specifies " + "the " + "level " + "of " + "urgency " + "for " + "a " + "routing " + "rule " + "(low, " + "high, " + "or " + "dynamic).", + "enum": ["low", "high", "dynamic"], + "example": "low", + "type": "string", + "x-enum-varnames": ["LOW", "HIGH", "DYNAMIC"], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "id": { + "description": "Specifies the unique " + "identifier for this set " + "of team routing rules.", + "type": "string", + }, + "type": { + "default": "team_routing_rules", + "description": "Team routing rules resource type.", + "enum": ["team_routing_rules"], + "example": "team_routing_rules", + "type": "string", + "x-enum-varnames": ["TEAM_ROUTING_RULES"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "CREATEPOWERPACK_REQUEST_BODY_SCHEMA": { + "description": "Powerpacks are templated groups of dashboard widgets you can save " + "from an existing dashboard and turn into reusable packs in the widget " + "tray.", + "properties": { + "data": { + "description": "Powerpack data object.", + "properties": { + "attributes": { + "description": "Powerpack attribute object.", + "properties": { + "description": { + "description": "Description of this powerpack.", + "example": "Powerpack for ABC", + "type": "string", + }, + "group_widget": { + "description": "Powerpack group widget definition object.", + "properties": { + "definition": { + "description": "Powerpack group widget object.", + "properties": { + "layout_type": { + "description": "Layout type of widgets.", + "example": "ordered", + "type": "string", + }, + "show_title": { + "description": "Boolean " + "indicating " + "whether " + "powerpack " + "group " + "title " + "should " + "be " + "visible " + "or " + "not.", + "example": True, + "type": "boolean", + }, + "title": { + "description": "Name for the group widget.", + "example": "Sample Powerpack", + "type": "string", + }, + "type": { + "description": "Type of widget, must be group.", + "example": "group", + "type": "string", + }, + "widgets": { + "description": "Widgets inside the powerpack.", + "example": [ + { + "definition": { + "content": "example", + "type": "note", + }, + "layout": { + "height": 5, + "width": 10, + "x": 0, + "y": 0, + }, + } + ], + "items": { + "description": "Powerpack " + "group " + "widget " + "definition " + "of " + "individual " + "widgets.", + "properties": { + "definition": { + "additionalProperties": {}, + "description": "Information " + "about " + "widget.", + "example": { + "definition": { + "content": "example", + "type": "note", + } + }, + "type": "object", + }, + "layout": { + "description": "Powerpack " + "inner " + "widget " + "layout.", + "properties": { + "height": { + "description": "The " + "height " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "width": { + "description": "The " + "width " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "x": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "x " + "(horizontal) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "y": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "y " + "(vertical) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + }, + "required": [ + "x", + "y", + "width", + "height", + ], + "type": "object", + }, + }, + "required": ["definition"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["widgets", "layout_type", "type"], + "type": "object", + }, + "layout": { + "description": "Powerpack group widget layout.", + "properties": { + "height": { + "description": "The " + "height " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "width": { + "description": "The " + "width " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "x": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "x " + "(horizontal) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "y": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "y " + "(vertical) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + }, + "required": ["x", "y", "width", "height"], + "type": "object", + }, + "live_span": { + "description": "The " + "available " + "timeframes " + "depend " + "on " + "the " + "widget " + "you " + "are " + "using.", + "enum": [ + "1m", + "5m", + "10m", + "15m", + "30m", + "1h", + "4h", + "1d", + "2d", + "1w", + "1mo", + "3mo", + "6mo", + "1y", + "alert", + ], + "example": "5m", + "type": "string", + "x-enum-varnames": [ + "PAST_ONE_MINUTE", + "PAST_FIVE_MINUTES", + "PAST_TEN_MINUTES", + "PAST_FIFTEEN_MINUTES", + "PAST_THIRTY_MINUTES", + "PAST_ONE_HOUR", + "PAST_FOUR_HOURS", + "PAST_ONE_DAY", + "PAST_TWO_DAYS", + "PAST_ONE_WEEK", + "PAST_ONE_MONTH", + "PAST_THREE_MONTHS", + "PAST_SIX_MONTHS", + "PAST_ONE_YEAR", + "ALERT", + ], + }, + }, + "required": ["definition"], + "type": "object", + }, + "name": { + "description": "Name of the powerpack.", + "example": "Sample Powerpack", + "type": "string", + }, + "tags": { + "description": "List of tags to identify this powerpack.", + "example": ["tag:foo1"], + "items": {"maxLength": 80, "type": "string"}, + "maxItems": 8, + "type": "array", + }, + "template_variables": { + "description": "List of template variables for this powerpack.", + "example": [{"defaults": ["*"], "name": "test"}], + "items": { + "description": "Powerpack template variables.", + "properties": { + "available_values": { + "description": "The " + "list " + "of " + "values " + "that " + "the " + "template " + "variable " + "drop-down " + "is " + "limited " + "to.", + "example": ["my-host", "host1", "host2"], + "items": { + "description": "Template variable value.", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + "defaults": { + "description": "One " + "or " + "many " + "template " + "variable " + "default " + "values " + "within " + "the " + "saved " + "view, " + "which " + "are " + "unioned " + "together " + "using " + "`OR` " + "if " + "more " + "than " + "one " + "is " + "specified.", + "items": { + "description": "One " + "or " + "many " + "default " + "values " + "of " + "the " + "template " + "variable.", + "minLength": 1, + "type": "string", + }, + "type": "array", + }, + "name": { + "description": "The name of the variable.", + "example": "datacenter", + "type": "string", + }, + "prefix": { + "description": "The " + "tag " + "prefix " + "associated " + "with " + "the " + "variable. " + "Only " + "tags " + "with " + "this " + "prefix " + "appear " + "in " + "the " + "variable " + "drop-down.", + "example": "host", + "nullable": True, + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["group_widget", "name"], + "type": "object", + }, + "id": {"description": "ID of the powerpack.", "type": "string"}, + "relationships": { + "description": "Powerpack relationship object.", + "properties": { + "author": { + "description": "Relationship to user.", + "properties": { + "data": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + } + }, + "type": "object", + }, + "type": { + "description": "Type of widget, must be powerpack.", + "example": "powerpack", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "UPDATEPOWERPACK_REQUEST_BODY_SCHEMA": { + "description": "Powerpacks are templated groups of dashboard widgets you can save " + "from an existing dashboard and turn into reusable packs in the widget " + "tray.", + "properties": { + "data": { + "description": "Powerpack data object.", + "properties": { + "attributes": { + "description": "Powerpack attribute object.", + "properties": { + "description": { + "description": "Description of this powerpack.", + "example": "Powerpack for ABC", + "type": "string", + }, + "group_widget": { + "description": "Powerpack group widget definition object.", + "properties": { + "definition": { + "description": "Powerpack group widget object.", + "properties": { + "layout_type": { + "description": "Layout type of widgets.", + "example": "ordered", + "type": "string", + }, + "show_title": { + "description": "Boolean " + "indicating " + "whether " + "powerpack " + "group " + "title " + "should " + "be " + "visible " + "or " + "not.", + "example": True, + "type": "boolean", + }, + "title": { + "description": "Name for the group widget.", + "example": "Sample Powerpack", + "type": "string", + }, + "type": { + "description": "Type of widget, must be group.", + "example": "group", + "type": "string", + }, + "widgets": { + "description": "Widgets inside the powerpack.", + "example": [ + { + "definition": { + "content": "example", + "type": "note", + }, + "layout": { + "height": 5, + "width": 10, + "x": 0, + "y": 0, + }, + } + ], + "items": { + "description": "Powerpack " + "group " + "widget " + "definition " + "of " + "individual " + "widgets.", + "properties": { + "definition": { + "additionalProperties": {}, + "description": "Information " + "about " + "widget.", + "example": { + "definition": { + "content": "example", + "type": "note", + } + }, + "type": "object", + }, + "layout": { + "description": "Powerpack " + "inner " + "widget " + "layout.", + "properties": { + "height": { + "description": "The " + "height " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "width": { + "description": "The " + "width " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "x": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "x " + "(horizontal) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "y": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "y " + "(vertical) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + }, + "required": [ + "x", + "y", + "width", + "height", + ], + "type": "object", + }, + }, + "required": ["definition"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["widgets", "layout_type", "type"], + "type": "object", + }, + "layout": { + "description": "Powerpack group widget layout.", + "properties": { + "height": { + "description": "The " + "height " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "width": { + "description": "The " + "width " + "of " + "the " + "widget. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "x": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "x " + "(horizontal) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "y": { + "description": "The " + "position " + "of " + "the " + "widget " + "on " + "the " + "y " + "(vertical) " + "axis. " + "Should " + "be " + "a " + "non-negative " + "integer.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + }, + "required": ["x", "y", "width", "height"], + "type": "object", + }, + "live_span": { + "description": "The " + "available " + "timeframes " + "depend " + "on " + "the " + "widget " + "you " + "are " + "using.", + "enum": [ + "1m", + "5m", + "10m", + "15m", + "30m", + "1h", + "4h", + "1d", + "2d", + "1w", + "1mo", + "3mo", + "6mo", + "1y", + "alert", + ], + "example": "5m", + "type": "string", + "x-enum-varnames": [ + "PAST_ONE_MINUTE", + "PAST_FIVE_MINUTES", + "PAST_TEN_MINUTES", + "PAST_FIFTEEN_MINUTES", + "PAST_THIRTY_MINUTES", + "PAST_ONE_HOUR", + "PAST_FOUR_HOURS", + "PAST_ONE_DAY", + "PAST_TWO_DAYS", + "PAST_ONE_WEEK", + "PAST_ONE_MONTH", + "PAST_THREE_MONTHS", + "PAST_SIX_MONTHS", + "PAST_ONE_YEAR", + "ALERT", + ], + }, + }, + "required": ["definition"], + "type": "object", + }, + "name": { + "description": "Name of the powerpack.", + "example": "Sample Powerpack", + "type": "string", + }, + "tags": { + "description": "List of tags to identify this powerpack.", + "example": ["tag:foo1"], + "items": {"maxLength": 80, "type": "string"}, + "maxItems": 8, + "type": "array", + }, + "template_variables": { + "description": "List of template variables for this powerpack.", + "example": [{"defaults": ["*"], "name": "test"}], + "items": { + "description": "Powerpack template variables.", + "properties": { + "available_values": { + "description": "The " + "list " + "of " + "values " + "that " + "the " + "template " + "variable " + "drop-down " + "is " + "limited " + "to.", + "example": ["my-host", "host1", "host2"], + "items": { + "description": "Template variable value.", + "type": "string", + }, + "nullable": True, + "type": "array", + }, + "defaults": { + "description": "One " + "or " + "many " + "template " + "variable " + "default " + "values " + "within " + "the " + "saved " + "view, " + "which " + "are " + "unioned " + "together " + "using " + "`OR` " + "if " + "more " + "than " + "one " + "is " + "specified.", + "items": { + "description": "One " + "or " + "many " + "default " + "values " + "of " + "the " + "template " + "variable.", + "minLength": 1, + "type": "string", + }, + "type": "array", + }, + "name": { + "description": "The name of the variable.", + "example": "datacenter", + "type": "string", + }, + "prefix": { + "description": "The " + "tag " + "prefix " + "associated " + "with " + "the " + "variable. " + "Only " + "tags " + "with " + "this " + "prefix " + "appear " + "in " + "the " + "variable " + "drop-down.", + "example": "host", + "nullable": True, + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["group_widget", "name"], + "type": "object", + }, + "id": {"description": "ID of the powerpack.", "type": "string"}, + "relationships": { + "description": "Powerpack relationship object.", + "properties": { + "author": { + "description": "Relationship to user.", + "properties": { + "data": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + } + }, + "type": "object", + }, + "type": { + "description": "Type of widget, must be powerpack.", + "example": "powerpack", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "QUERYSCALARDATA_REQUEST_BODY_SCHEMA": { + "description": "A wrapper request around one scalar query to be executed.", + "properties": { + "data": { + "description": "A single scalar query to be executed.", + "properties": { + "attributes": { + "description": "The object describing a scalar formula request.", + "properties": { + "formulas": { + "description": "List " + "of " + "formulas " + "to " + "be " + "calculated " + "and " + "returned " + "as " + "responses.", + "items": { + "description": "A " + "formula " + "for " + "calculation " + "based " + "on " + "one " + "or " + "more " + "queries.", + "properties": { + "formula": { + "description": "Formula " + "string, " + "referencing " + "one " + "or " + "more " + "queries " + "with " + "their " + "name " + "property.", + "example": "a+b", + "type": "string", + }, + "limit": { + "description": "Message " + "for " + "specifying " + "limits " + "to " + "the " + "number " + "of " + "values " + "returned " + "by " + "a " + "query.\n" + "This " + "limit " + "is " + "only " + "for " + "scalar " + "queries " + "and " + "has " + "no " + "effect " + "on " + "timeseries " + "queries.", + "properties": { + "count": { + "description": "The " + "number " + "of " + "results " + "to " + "which " + "to " + "limit.", + "example": 10, + "format": "int32", + "maximum": 2147483647, + "type": "integer", + }, + "order": { + "default": "desc", + "description": "Direction of sort.", + "enum": ["asc", "desc"], + "type": "string", + "x-enum-varnames": ["ASC", "DESC"], + }, + }, + "type": "object", + }, + }, + "required": ["formula"], + "type": "object", + }, + "type": "array", + }, + "from": { + "description": "Start " + "date " + "(inclusive) " + "of " + "the " + "query " + "in " + "milliseconds " + "since " + "the " + "Unix " + "epoch.", + "example": 1568899800000, + "format": "int64", + "type": "integer", + }, + "queries": { + "description": "List " + "of " + "queries " + "to " + "be " + "run " + "and " + "used " + "as " + "inputs " + "to " + "the " + "formulas.", + "example": [ + { + "aggregator": "avg", + "data_source": "metrics", + "query": "avg:system.cpu.user{*} by {env}", + } + ], + "items": { + "description": "An " + "individual " + "scalar " + "query " + "to " + "one " + "of " + "the " + "basic " + "Datadog " + "data " + "sources.", + "example": { + "aggregator": "avg", + "data_source": "metrics", + "query": "avg:system.cpu.user{*} by {env}", + }, + "oneOf": [ + { + "description": "An individual scalar metrics query.", + "properties": { + "aggregator": { + "default": "avg", + "description": "The " + "type " + "of " + "aggregation " + "that " + "can " + "be " + "performed " + "on " + "metrics-based " + "queries.", + "enum": [ + "avg", + "min", + "max", + "sum", + "last", + "percentile", + "mean", + "l2norm", + "area", + ], + "example": "avg", + "type": "string", + "x-enum-varnames": [ + "AVG", + "MIN", + "MAX", + "SUM", + "LAST", + "PERCENTILE", + "MEAN", + "L2NORM", + "AREA", + ], + }, + "data_source": { + "default": "metrics", + "description": "A " + "data " + "source " + "that " + "is " + "powered " + "by " + "the " + "Metrics " + "platform.", + "enum": ["metrics", "cloud_cost"], + "example": "metrics", + "type": "string", + "x-enum-varnames": ["METRICS", "CLOUD_COST"], + }, + "name": { + "description": "The " + "variable " + "name " + "for " + "use " + "in " + "formulas.", + "type": "string", + }, + "query": { + "description": "A " + "classic " + "metrics " + "query " + "string.", + "example": "avg:system.cpu.user{*} by {env}", + "type": "string", + }, + }, + "required": ["data_source", "query", "aggregator"], + "type": "object", + }, + { + "description": "An individual scalar events query.", + "properties": { + "compute": { + "description": "The " + "instructions " + "for " + "what " + "to " + "compute " + "for " + "this " + "query.", + "properties": { + "aggregation": { + "default": "count", + "description": "The " + "type " + "of " + "aggregation " + "that " + "can " + "be " + "performed " + "on " + "events-based " + "queries.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + ], + "example": "count", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PC75", + "PC90", + "PC95", + "PC98", + "PC99", + "SUM", + "MIN", + "MAX", + "AVG", + ], + }, + "interval": { + "description": "Interval " + "for " + "compute " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "type": "integer", + }, + "metric": { + "description": "The " + '"measure" ' + "attribute " + "on " + "which " + "to " + "perform " + "the " + "computation.", + "type": "string", + }, + }, + "required": ["aggregation"], + "type": "object", + }, + "data_source": { + "default": "logs", + "description": "A " + "data " + "source " + "that " + "is " + "powered " + "by " + "the " + "Events " + "Platform.", + "enum": ["logs", "rum", "dora"], + "example": "logs", + "type": "string", + "x-enum-varnames": ["LOGS", "RUM", "DORA"], + }, + "group_by": { + "description": "The " + "list " + "of " + "facets " + "on " + "which " + "to " + "split " + "results.", + "items": { + "description": "A " + "dimension " + "on " + "which " + "to " + "split " + "a " + "query's " + "results.", + "properties": { + "facet": { + "description": "The " + "facet " + "by " + "which " + "to " + "split " + "groups.", + "example": "@error.type", + "type": "string", + }, + "limit": { + "default": 10, + "description": "The " + "maximum " + "buckets " + "to " + "return " + "for " + "this " + "group " + "by. " + "Note: " + "at " + "most " + "10000 " + "buckets " + "are " + "allowed.\n" + "If " + "grouping " + "by " + "multiple " + "facets, " + "the " + "product " + "of " + "limits " + "must " + "not " + "exceed " + "10000.", + "example": 10, + "format": "int32", + "maximum": 10000, + "type": "integer", + }, + "sort": { + "description": "The " + "dimension " + "by " + "which " + "to " + "sort " + "a " + "query's " + "results.", + "properties": { + "aggregation": { + "default": "count", + "description": "The " + "type " + "of " + "aggregation " + "that " + "can " + "be " + "performed " + "on " + "events-based " + "queries.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + ], + "example": "count", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PC75", + "PC90", + "PC95", + "PC98", + "PC99", + "SUM", + "MIN", + "MAX", + "AVG", + ], + }, + "metric": { + "description": "The " + "metric's " + "calculated " + "value " + "which " + "should " + "be " + "used " + "to " + "define " + "the " + "sort " + "order " + "of " + "a " + "query's " + "results.", + "example": "@duration", + "type": "string", + }, + "order": { + "default": "desc", + "description": "Direction " + "of " + "sort.", + "enum": ["asc", "desc"], + "type": "string", + "x-enum-varnames": [ + "ASC", + "DESC", + ], + }, + "type": { + "description": "The " + "type " + "of " + "sort " + "to " + "use " + "on " + "the " + "calculated " + "value.", + "enum": [ + "alphabetical", + "measure", + ], + "type": "string", + "x-enum-varnames": [ + "ALPHABETICAL", + "MEASURE", + ], + }, + }, + "required": ["aggregation"], + "type": "object", + }, + }, + "required": ["facet"], + "type": "object", + }, + "type": "array", + }, + "indexes": { + "description": "The " + "indexes " + "in " + "which " + "to " + "search.", + "example": ["main"], + "items": { + "description": "The unique index name.", + "example": "main", + "type": "string", + }, + "type": "array", + }, + "name": { + "description": "The " + "variable " + "name " + "for " + "use " + "in " + "formulas.", + "type": "string", + }, + "search": { + "description": "Configuration " + "of " + "the " + "search/filter " + "for " + "an " + "events " + "query.", + "properties": { + "query": { + "description": "The " + "search/filter " + "string " + "for " + "an " + "events " + "query.", + "example": "status:warn service:foo", + "type": "string", + } + }, + "type": "object", + }, + }, + "required": ["data_source", "compute"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "to": { + "description": "End " + "date " + "(exclusive) " + "of " + "the " + "query " + "in " + "milliseconds " + "since " + "the " + "Unix " + "epoch.", + "example": 1568923200000, + "format": "int64", + "type": "integer", + }, + }, + "required": ["to", "from", "queries"], + "type": "object", + }, + "type": { + "default": "scalar_request", + "description": "The type of the " + "resource. The value " + "should always be " + "scalar_request.", + "enum": ["scalar_request"], + "example": "scalar_request", + "type": "string", + "x-enum-varnames": ["SCALAR_REQUEST"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "QUERYTIMESERIESDATA_REQUEST_BODY_SCHEMA": { + "description": "A request wrapper around a single timeseries query to be executed.", + "properties": { + "data": { + "description": "A single timeseries query to be executed.", + "properties": { + "attributes": { + "description": "The object describing a timeseries formula request.", + "properties": { + "formulas": { + "description": "List " + "of " + "formulas " + "to " + "be " + "calculated " + "and " + "returned " + "as " + "responses.", + "items": { + "description": "A " + "formula " + "for " + "calculation " + "based " + "on " + "one " + "or " + "more " + "queries.", + "properties": { + "formula": { + "description": "Formula " + "string, " + "referencing " + "one " + "or " + "more " + "queries " + "with " + "their " + "name " + "property.", + "example": "a+b", + "type": "string", + }, + "limit": { + "description": "Message " + "for " + "specifying " + "limits " + "to " + "the " + "number " + "of " + "values " + "returned " + "by " + "a " + "query.\n" + "This " + "limit " + "is " + "only " + "for " + "scalar " + "queries " + "and " + "has " + "no " + "effect " + "on " + "timeseries " + "queries.", + "properties": { + "count": { + "description": "The " + "number " + "of " + "results " + "to " + "which " + "to " + "limit.", + "example": 10, + "format": "int32", + "maximum": 2147483647, + "type": "integer", + }, + "order": { + "default": "desc", + "description": "Direction of sort.", + "enum": ["asc", "desc"], + "type": "string", + "x-enum-varnames": ["ASC", "DESC"], + }, + }, + "type": "object", + }, + }, + "required": ["formula"], + "type": "object", + }, + "type": "array", + }, + "from": { + "description": "Start " + "date " + "(inclusive) " + "of " + "the " + "query " + "in " + "milliseconds " + "since " + "the " + "Unix " + "epoch.", + "example": 1568899800000, + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "A " + "time " + "interval " + "in " + "milliseconds.\n" + "May " + "be " + "overridden " + "by " + "a " + "larger " + "interval " + "if " + "the " + "query " + "would " + "result " + "in\n" + "too " + "many " + "points " + "for " + "the " + "specified " + "timeframe.\n" + "Defaults " + "to " + "a " + "reasonable " + "interval " + "for " + "the " + "given " + "timeframe.", + "example": 5000, + "format": "int64", + "type": "integer", + }, + "queries": { + "description": "List " + "of " + "queries " + "to " + "be " + "run " + "and " + "used " + "as " + "inputs " + "to " + "the " + "formulas.", + "example": [ + { + "data_source": "metrics", + "query": "avg:system.cpu.user{*} by {env}", + } + ], + "items": { + "description": "An " + "individual " + "timeseries " + "query " + "to " + "one " + "of " + "the " + "basic " + "Datadog " + "data " + "sources.", + "example": { + "data_source": "metrics", + "query": "avg:system.cpu.user{*} by {env}", + }, + "oneOf": [ + { + "description": "An " + "individual " + "timeseries " + "metrics " + "query.", + "properties": { + "data_source": { + "default": "metrics", + "description": "A " + "data " + "source " + "that " + "is " + "powered " + "by " + "the " + "Metrics " + "platform.", + "enum": ["metrics", "cloud_cost"], + "example": "metrics", + "type": "string", + "x-enum-varnames": ["METRICS", "CLOUD_COST"], + }, + "name": { + "description": "The " + "variable " + "name " + "for " + "use " + "in " + "formulas.", + "type": "string", + }, + "query": { + "description": "A " + "classic " + "metrics " + "query " + "string.", + "example": "avg:system.cpu.user{*} by {env}", + "type": "string", + }, + }, + "required": ["data_source", "query"], + "type": "object", + }, + { + "description": "An individual timeseries events query.", + "properties": { + "compute": { + "description": "The " + "instructions " + "for " + "what " + "to " + "compute " + "for " + "this " + "query.", + "properties": { + "aggregation": { + "default": "count", + "description": "The " + "type " + "of " + "aggregation " + "that " + "can " + "be " + "performed " + "on " + "events-based " + "queries.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + ], + "example": "count", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PC75", + "PC90", + "PC95", + "PC98", + "PC99", + "SUM", + "MIN", + "MAX", + "AVG", + ], + }, + "interval": { + "description": "Interval " + "for " + "compute " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "type": "integer", + }, + "metric": { + "description": "The " + '"measure" ' + "attribute " + "on " + "which " + "to " + "perform " + "the " + "computation.", + "type": "string", + }, + }, + "required": ["aggregation"], + "type": "object", + }, + "data_source": { + "default": "logs", + "description": "A " + "data " + "source " + "that " + "is " + "powered " + "by " + "the " + "Events " + "Platform.", + "enum": ["logs", "rum", "dora"], + "example": "logs", + "type": "string", + "x-enum-varnames": ["LOGS", "RUM", "DORA"], + }, + "group_by": { + "description": "The " + "list " + "of " + "facets " + "on " + "which " + "to " + "split " + "results.", + "items": { + "description": "A " + "dimension " + "on " + "which " + "to " + "split " + "a " + "query's " + "results.", + "properties": { + "facet": { + "description": "The " + "facet " + "by " + "which " + "to " + "split " + "groups.", + "example": "@error.type", + "type": "string", + }, + "limit": { + "default": 10, + "description": "The " + "maximum " + "buckets " + "to " + "return " + "for " + "this " + "group " + "by. " + "Note: " + "at " + "most " + "10000 " + "buckets " + "are " + "allowed.\n" + "If " + "grouping " + "by " + "multiple " + "facets, " + "the " + "product " + "of " + "limits " + "must " + "not " + "exceed " + "10000.", + "example": 10, + "format": "int32", + "maximum": 10000, + "type": "integer", + }, + "sort": { + "description": "The " + "dimension " + "by " + "which " + "to " + "sort " + "a " + "query's " + "results.", + "properties": { + "aggregation": { + "default": "count", + "description": "The " + "type " + "of " + "aggregation " + "that " + "can " + "be " + "performed " + "on " + "events-based " + "queries.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + ], + "example": "count", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PC75", + "PC90", + "PC95", + "PC98", + "PC99", + "SUM", + "MIN", + "MAX", + "AVG", + ], + }, + "metric": { + "description": "The " + "metric's " + "calculated " + "value " + "which " + "should " + "be " + "used " + "to " + "define " + "the " + "sort " + "order " + "of " + "a " + "query's " + "results.", + "example": "@duration", + "type": "string", + }, + "order": { + "default": "desc", + "description": "Direction " + "of " + "sort.", + "enum": ["asc", "desc"], + "type": "string", + "x-enum-varnames": [ + "ASC", + "DESC", + ], + }, + "type": { + "description": "The " + "type " + "of " + "sort " + "to " + "use " + "on " + "the " + "calculated " + "value.", + "enum": [ + "alphabetical", + "measure", + ], + "type": "string", + "x-enum-varnames": [ + "ALPHABETICAL", + "MEASURE", + ], + }, + }, + "required": ["aggregation"], + "type": "object", + }, + }, + "required": ["facet"], + "type": "object", + }, + "type": "array", + }, + "indexes": { + "description": "The " + "indexes " + "in " + "which " + "to " + "search.", + "example": ["main"], + "items": { + "description": "The unique index name.", + "example": "main", + "type": "string", + }, + "type": "array", + }, + "name": { + "description": "The " + "variable " + "name " + "for " + "use " + "in " + "formulas.", + "type": "string", + }, + "search": { + "description": "Configuration " + "of " + "the " + "search/filter " + "for " + "an " + "events " + "query.", + "properties": { + "query": { + "description": "The " + "search/filter " + "string " + "for " + "an " + "events " + "query.", + "example": "status:warn service:foo", + "type": "string", + } + }, + "type": "object", + }, + }, + "required": ["data_source", "compute"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "to": { + "description": "End " + "date " + "(exclusive) " + "of " + "the " + "query " + "in " + "milliseconds " + "since " + "the " + "Unix " + "epoch.", + "example": 1568923200000, + "format": "int64", + "type": "integer", + }, + }, + "required": ["to", "from", "queries"], + "type": "object", + }, + "type": { + "default": "timeseries_request", + "description": "The type of the " + "resource. The value " + "should always be " + "timeseries_request.", + "enum": ["timeseries_request"], + "example": "timeseries_request", + "type": "string", + "x-enum-varnames": ["TIMESERIES_REQUEST"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEREFERENCETABLE_REQUEST_BODY_SCHEMA": { + "description": "The definition of `CreateTableRequest` object.", + "example": { + "data": { + "attributes": { + "description": "this is a cloud table generated via a cloud bucket sync", + "file_metadata": { + "access_details": { + "aws_detail": { + "aws_account_id": "test-account-id", + "aws_bucket_name": "test-bucket", + "file_path": "test_rt.csv", + } + }, + "sync_enabled": True, + }, + "schema": { + "fields": [ + {"name": "name", "type": "STRING"}, + {"name": "account_id", "type": "STRING"}, + ], + "primary_keys": ["account_id"], + }, + "source": "S3", + "table_name": "test_reference_table", + "tags": ["test_tag"], + }, + "type": "reference_table", + } + }, + "properties": { + "data": { + "description": "The definition of `CreateTableRequestData` object.", + "properties": { + "attributes": { + "description": "The definition " + "of " + "`CreateTableRequestDataAttributes` " + "object.", + "properties": { + "description": { + "description": "The description of the reference table.", + "type": "string", + }, + "file_metadata": { + "description": "The " + "definition " + "of " + "`CreateTableRequestDataAttributesFileMetadata` " + "object.", + "oneOf": [ + { + "additionalProperties": False, + "description": "Cloud " + "storage " + "file " + "metadata " + "for " + "create " + "requests. " + "Both " + "access_details " + "and " + "sync_enabled " + "are " + "required.", + "properties": { + "access_details": { + "description": "The " + "definition " + "of " + "`CreateTableRequestDataAttributesFileMetadataOneOfAccessDetails` " + "object.", + "properties": { + "aws_detail": { + "description": "The " + "definition " + "of " + "`CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsAwsDetail` " + "object.", + "properties": { + "aws_account_id": { + "description": "The " + "ID " + "of " + "the " + "AWS " + "account.", + "example": "123456789000", + "type": "string", + }, + "aws_bucket_name": { + "description": "The " + "name " + "of " + "the " + "Amazon " + "S3 " + "bucket.", + "example": "example-data-bucket", + "type": "string", + }, + "file_path": { + "description": "The " + "relative " + "file " + "path " + "from " + "the " + "S3 " + "bucket " + "root " + "to " + "the " + "CSV " + "file.", + "example": "reference-tables/users.csv", + "type": "string", + }, + }, + "required": [ + "aws_account_id", + "aws_bucket_name", + "file_path", + ], + "type": "object", + "x-oneOf-parent": ["AwsDetail"], + }, + "azure_detail": { + "description": "The " + "definition " + "of " + "`CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsAzureDetail` " + "object.", + "properties": { + "azure_client_id": { + "description": "The " + "Azure " + "client " + "ID.", + "example": "aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb", + "type": "string", + }, + "azure_container_name": { + "description": "The " + "name " + "of " + "the " + "Azure " + "container.", + "example": "reference-data", + "type": "string", + }, + "azure_storage_account_name": { + "description": "The " + "name " + "of " + "the " + "Azure " + "storage " + "account.", + "example": "examplestorageaccount", + "type": "string", + }, + "azure_tenant_id": { + "description": "The " + "ID " + "of " + "the " + "Azure " + "tenant.", + "example": "cccccccc-4444-5555-6666-dddddddddddd", + "type": "string", + }, + "file_path": { + "description": "The " + "relative " + "file " + "path " + "from " + "the " + "Azure " + "container " + "root " + "to " + "the " + "CSV " + "file.", + "example": "tables/users.csv", + "type": "string", + }, + }, + "required": [ + "azure_client_id", + "azure_container_name", + "azure_storage_account_name", + "azure_tenant_id", + "file_path", + ], + "type": "object", + "x-oneOf-parent": ["AzureDetail"], + }, + "gcp_detail": { + "description": "The " + "definition " + "of " + "`CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsGcpDetail` " + "object.", + "properties": { + "file_path": { + "description": "The " + "relative " + "file " + "path " + "from " + "the " + "GCS " + "bucket " + "root " + "to " + "the " + "CSV " + "file.", + "example": "data/reference_tables/users.csv", + "type": "string", + }, + "gcp_bucket_name": { + "description": "The " + "name " + "of " + "the " + "GCP " + "bucket.", + "example": "example-data-bucket", + "type": "string", + }, + "gcp_project_id": { + "description": "The " + "ID " + "of " + "the " + "GCP " + "project.", + "example": "example-gcp-project-12345", + "type": "string", + }, + "gcp_service_account_email": { + "description": "The " + "email " + "of " + "the " + "GCP " + "service " + "account.", + "example": "example-service@example-gcp-project-12345.iam.gserviceaccount.com", + "type": "string", + }, + }, + "required": [ + "file_path", + "gcp_bucket_name", + "gcp_project_id", + "gcp_service_account_email", + ], + "type": "object", + "x-oneOf-parent": ["GcpDetail"], + }, + }, + "type": "object", + }, + "sync_enabled": { + "description": "Whether " + "this " + "table " + "is " + "synced " + "automatically.", + "example": False, + "type": "boolean", + }, + }, + "required": ["access_details", "sync_enabled"], + "title": "CloudFileMetadataV2", + "type": "object", + }, + { + "additionalProperties": False, + "description": "Local " + "file " + "metadata " + "for " + "create " + "requests " + "using " + "the " + "upload " + "ID.", + "properties": { + "upload_id": { + "description": "The upload ID.", + "example": "", + "type": "string", + } + }, + "required": ["upload_id"], + "title": "LocalFileMetadataV2", + "type": "object", + }, + ], + }, + "schema": { + "description": "The " + "definition " + "of " + "`CreateTableRequestDataAttributesSchema` " + "object.", + "properties": { + "fields": { + "description": "The `schema` `fields`.", + "items": { + "description": "The " + "definition " + "of " + "`CreateTableRequestDataAttributesSchemaFieldsItems` " + "object.", + "properties": { + "name": { + "description": "The field name.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "field " + "type " + "for " + "reference " + "table " + "schema " + "fields.", + "enum": ["STRING", "INT32"], + "example": "STRING", + "type": "string", + "x-enum-varnames": ["STRING", "INT32"], + }, + }, + "required": ["name", "type"], + "type": "object", + }, + "type": "array", + }, + "primary_keys": { + "description": "List " + "of " + "field " + "names " + "that " + "serve " + "as " + "primary " + "keys " + "for " + "the " + "table. " + "Only " + "one " + "primary " + "key " + "is " + "supported, " + "and " + "it " + "is " + "used " + "as " + "an " + "ID " + "to " + "retrieve " + "rows.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["fields", "primary_keys"], + "type": "object", + }, + "source": { + "description": "The " + "source " + "type " + "for " + "creating " + "reference " + "table " + "data. " + "Only " + "these " + "source " + "types " + "can " + "be " + "created " + "through " + "this " + "API.", + "enum": ["LOCAL_FILE", "S3", "GCS", "AZURE"], + "example": "LOCAL_FILE", + "type": "string", + "x-enum-varnames": ["LOCAL_FILE", "S3", "GCS", "AZURE"], + }, + "table_name": { + "description": "The name of the reference table.", + "example": "", + "type": "string", + }, + "tags": { + "description": "The tags of the reference table.", + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["table_name", "schema", "source"], + "type": "object", + }, + "id": {"description": "The ID of the reference table.", "type": "string"}, + "type": { + "default": "reference_table", + "description": "Reference table resource type.", + "enum": ["reference_table"], + "example": "reference_table", + "type": "string", + "x-enum-varnames": ["REFERENCE_TABLE"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "UPDATEREFERENCETABLE_REQUEST_BODY_SCHEMA": { + "description": "The definition of `PatchTableRequest` object.", + "example": { + "data": { + "attributes": { + "description": "this is a cloud table generated via a cloud bucket sync", + "file_metadata": { + "access_details": { + "aws_detail": { + "aws_account_id": "test-account-id", + "aws_bucket_name": "test-bucket", + "file_path": "test_rt.csv", + } + }, + "sync_enabled": True, + }, + "schema": { + "fields": [ + {"name": "id", "type": "INT32"}, + {"name": "name", "type": "STRING"}, + ], + "primary_keys": ["id"], + }, + "sync_enabled": False, + "tags": ["test_tag"], + }, + "id": "00000000-0000-0000-0000-000000000000", + "type": "reference_table", + } + }, + "properties": { + "data": { + "description": "The definition of `PatchTableRequestData` object.", + "properties": { + "attributes": { + "description": "The definition " + "of " + "`PatchTableRequestDataAttributes` " + "object.", + "properties": { + "description": { + "description": "The description of the reference table.", + "type": "string", + }, + "file_metadata": { + "description": "The " + "definition " + "of " + "`PatchTableRequestDataAttributesFileMetadata` " + "object.", + "oneOf": [ + { + "additionalProperties": False, + "description": "Cloud " + "storage " + "file " + "metadata " + "for " + "patch " + "requests. " + "Allows " + "partial " + "updates " + "of " + "access_details " + "and " + "sync_enabled.", + "properties": { + "access_details": { + "description": "The " + "definition " + "of " + "`PatchTableRequestDataAttributesFileMetadataOneOfAccessDetails` " + "object.", + "properties": { + "aws_detail": { + "description": "The " + "definition " + "of " + "`PatchTableRequestDataAttributesFileMetadataOneOfAccessDetailsAwsDetail` " + "object.", + "properties": { + "aws_account_id": { + "description": "The " + "ID " + "of " + "the " + "AWS " + "account.", + "example": "123456789000", + "type": "string", + }, + "aws_bucket_name": { + "description": "The " + "name " + "of " + "the " + "AWS " + "bucket.", + "example": "example-data-bucket", + "type": "string", + }, + "file_path": { + "description": "The " + "relative " + "file " + "path " + "from " + "the " + "S3 " + "bucket " + "root " + "to " + "the " + "CSV " + "file.", + "example": "reference-tables/users.csv", + "type": "string", + }, + }, + "type": "object", + "x-oneOf-parent": ["AwsDetail"], + }, + "azure_detail": { + "description": "The " + "definition " + "of " + "`PatchTableRequestDataAttributesFileMetadataOneOfAccessDetailsAzureDetail` " + "object.", + "properties": { + "azure_client_id": { + "description": "The " + "Azure " + "client " + "ID.", + "example": "aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb", + "type": "string", + }, + "azure_container_name": { + "description": "The " + "name " + "of " + "the " + "Azure " + "container.", + "example": "reference-data", + "type": "string", + }, + "azure_storage_account_name": { + "description": "The " + "name " + "of " + "the " + "Azure " + "storage " + "account.", + "example": "examplestorageaccount", + "type": "string", + }, + "azure_tenant_id": { + "description": "The " + "ID " + "of " + "the " + "Azure " + "tenant.", + "example": "cccccccc-4444-5555-6666-dddddddddddd", + "type": "string", + }, + "file_path": { + "description": "The " + "relative " + "file " + "path " + "from " + "the " + "Azure " + "container " + "root " + "to " + "the " + "CSV " + "file.", + "example": "tables/users.csv", + "type": "string", + }, + }, + "type": "object", + "x-oneOf-parent": ["AzureDetail"], + }, + "gcp_detail": { + "description": "The " + "definition " + "of " + "`PatchTableRequestDataAttributesFileMetadataOneOfAccessDetailsGcpDetail` " + "object.", + "properties": { + "file_path": { + "description": "The " + "relative " + "file " + "path " + "from " + "the " + "GCS " + "bucket " + "root " + "to " + "the " + "CSV " + "file.", + "example": "data/reference_tables/users.csv", + "type": "string", + }, + "gcp_bucket_name": { + "description": "The " + "name " + "of " + "the " + "GCP " + "bucket.", + "example": "example-data-bucket", + "type": "string", + }, + "gcp_project_id": { + "description": "The " + "ID " + "of " + "the " + "GCP " + "project.", + "example": "example-gcp-project-12345", + "type": "string", + }, + "gcp_service_account_email": { + "description": "The " + "email " + "of " + "the " + "GCP " + "service " + "account.", + "example": "example-service@example-gcp-project-12345.iam.gserviceaccount.com", + "type": "string", + }, + }, + "type": "object", + "x-oneOf-parent": ["GcpDetail"], + }, + }, + "type": "object", + }, + "sync_enabled": { + "description": "Whether " + "this " + "table " + "is " + "synced " + "automatically.", + "example": False, + "type": "boolean", + }, + }, + "title": "CloudFileMetadataV2", + "type": "object", + }, + { + "additionalProperties": False, + "description": "Local " + "file " + "metadata " + "for " + "patch " + "requests " + "using " + "upload " + "ID.", + "properties": { + "upload_id": { + "description": "The upload ID.", + "example": "", + "type": "string", + } + }, + "required": ["upload_id"], + "title": "LocalFileMetadataV2", + "type": "object", + }, + ], + }, + "schema": { + "description": "The " + "definition " + "of " + "`PatchTableRequestDataAttributesSchema` " + "object.", + "properties": { + "fields": { + "description": "The `schema` `fields`.", + "items": { + "description": "The " + "definition " + "of " + "`PatchTableRequestDataAttributesSchemaFieldsItems` " + "object.", + "properties": { + "name": { + "description": "The field name.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "field " + "type " + "for " + "reference " + "table " + "schema " + "fields.", + "enum": ["STRING", "INT32"], + "example": "STRING", + "type": "string", + "x-enum-varnames": ["STRING", "INT32"], + }, + }, + "required": ["name", "type"], + "type": "object", + }, + "type": "array", + }, + "primary_keys": { + "description": "List " + "of " + "field " + "names " + "that " + "serve " + "as " + "primary " + "keys " + "for " + "the " + "table. " + "Only " + "one " + "primary " + "key " + "is " + "supported, " + "and " + "it " + "is " + "used " + "as " + "an " + "ID " + "to " + "retrieve " + "rows.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["fields", "primary_keys"], + "type": "object", + }, + "sync_enabled": { + "description": "Whether this table is synced automatically.", + "type": "boolean", + }, + "tags": { + "description": "The tags of the reference table.", + "items": {"type": "string"}, + "type": "array", + }, + }, + "type": "object", + }, + "id": {"description": "The ID of the reference table.", "type": "string"}, + "type": { + "default": "reference_table", + "description": "Reference table resource type.", + "enum": ["reference_table"], + "example": "reference_table", + "type": "string", + "x-enum-varnames": ["REFERENCE_TABLE"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "CREATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the custom rule to create.", + "properties": { + "data": { + "description": "Object for a single WAF custom rule.", + "properties": { + "attributes": { + "description": "Create a new WAF custom rule.", + "properties": { + "action": { + "description": "The " + "definition " + "of " + "`ApplicationSecurityWafCustomRuleAction` " + "object.", + "properties": { + "action": { + "default": "block_request", + "description": "Override " + "the " + "default " + "action " + "to " + "take " + "when " + "the " + "WAF " + "custom " + "rule " + "would " + "block.", + "enum": ["redirect_request", "block_request"], + "example": "block_request", + "type": "string", + "x-enum-varnames": ["REDIRECT_REQUEST", "BLOCK_REQUEST"], + }, + "parameters": { + "description": "The " + "definition " + "of " + "`ApplicationSecurityWafCustomRuleActionParameters` " + "object.", + "properties": { + "location": { + "description": "The " + "location " + "to " + "redirect " + "to " + "when " + "the " + "WAF " + "custom " + "rule " + "triggers.", + "example": "/blocking", + "type": "string", + }, + "status_code": { + "default": 403, + "description": "The " + "status " + "code " + "to " + "return " + "when " + "the " + "WAF " + "custom " + "rule " + "triggers.", + "example": 403, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "blocking": { + "description": "Indicates " + "whether " + "the " + "WAF " + "custom " + "rule " + "will " + "block " + "the " + "request.", + "example": False, + "type": "boolean", + }, + "conditions": { + "description": "Conditions " + "for " + "which " + "the " + "WAF " + "Custom " + "Rule " + "will " + "triggers, " + "all " + "conditions " + "needs " + "to " + "match " + "in " + "order " + "for " + "the " + "WAF\n" + "rule " + "to " + "trigger", + "items": { + "description": "One condition of the WAF Custom Rule.", + "properties": { + "operator": { + "description": "Operator to use for the WAF Condition.", + "enum": [ + "match_regex", + "!match_regex", + "phrase_match", + "!phrase_match", + "is_xss", + "is_sqli", + "exact_match", + "!exact_match", + "ip_match", + "!ip_match", + "capture_data", + ], + "example": "match_regex", + "type": "string", + "x-enum-varnames": [ + "MATCH_REGEX", + "NOT_MATCH_REGEX", + "PHRASE_MATCH", + "NOT_PHRASE_MATCH", + "IS_XSS", + "IS_SQLI", + "EXACT_MATCH", + "NOT_EXACT_MATCH", + "IP_MATCH", + "NOT_IP_MATCH", + "CAPTURE_DATA", + ], + }, + "parameters": { + "description": "The scope of the WAF custom rule.", + "properties": { + "data": { + "description": "Identifier " + "of " + "a " + "list " + "of " + "data " + "from " + "the " + "denylist. " + "Can " + "only " + "be " + "used " + "as " + "substitution " + "from " + "the " + "list " + "parameter.", + "example": "blocked_users", + "type": "string", + }, + "inputs": { + "description": "List " + "of " + "inputs " + "on " + "which " + "at " + "least " + "one " + "should " + "match " + "with " + "the " + "given " + "operator.", + "items": { + "description": "Input " + "from " + "the " + "request " + "on " + "which " + "the " + "condition " + "should " + "apply.", + "properties": { + "address": { + "description": "Input " + "from " + "the " + "request " + "on " + "which " + "the " + "condition " + "should " + "apply.", + "enum": [ + "server.db.statement", + "server.io.fs.file", + "server.io.net.url", + "server.sys.shell.cmd", + "server.request.method", + "server.request.uri.raw", + "server.request.path_params", + "server.request.query", + "server.request.headers.no_cookies", + "server.request.cookies", + "server.request.trailers", + "server.request.body", + "server.response.status", + "server.response.headers.no_cookies", + "server.response.trailers", + "grpc.server.request.metadata", + "grpc.server.request.message", + "grpc.server.method", + "graphql.server.all_resolvers", + "usr.id", + "http.client_ip", + ], + "example": "server.db.statement", + "type": "string", + "x-enum-varnames": [ + "SERVER_DB_STATEMENT", + "SERVER_IO_FS_FILE", + "SERVER_IO_NET_URL", + "SERVER_SYS_SHELL_CMD", + "SERVER_REQUEST_METHOD", + "SERVER_REQUEST_URI_RAW", + "SERVER_REQUEST_PATH_PARAMS", + "SERVER_REQUEST_QUERY", + "SERVER_REQUEST_HEADERS_NO_COOKIES", + "SERVER_REQUEST_COOKIES", + "SERVER_REQUEST_TRAILERS", + "SERVER_REQUEST_BODY", + "SERVER_RESPONSE_STATUS", + "SERVER_RESPONSE_HEADERS_NO_COOKIES", + "SERVER_RESPONSE_TRAILERS", + "GRPC_SERVER_REQUEST_METADATA", + "GRPC_SERVER_REQUEST_MESSAGE", + "GRPC_SERVER_METHOD", + "GRAPHQL_SERVER_ALL_RESOLVERS", + "USR_ID", + "HTTP_CLIENT_IP", + ], + }, + "key_path": { + "description": "Specific " + "path " + "for " + "the " + "input.", + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["address"], + "type": "object", + }, + "type": "array", + }, + "list": { + "description": "List " + "of " + "value " + "to " + "use " + "with " + "the " + "condition. " + "Only " + "used " + "with " + "the " + "phrase_match, " + "!phrase_match, " + "exact_match " + "and\n" + "!exact_match " + "operator.", + "items": {"type": "string"}, + "type": "array", + }, + "options": { + "description": "Options " + "for " + "the " + "operator " + "of " + "this " + "condition.", + "properties": { + "case_sensitive": { + "default": False, + "description": "Evaluate " + "the " + "value " + "as " + "case " + "sensitive.", + "type": "boolean", + }, + "min_length": { + "default": 0, + "description": "Only " + "evaluate " + "this " + "condition " + "if " + "the " + "value " + "has " + "a " + "minimum " + "amount " + "of " + "characters.", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "regex": { + "description": "Regex " + "to " + "use " + "with " + "the " + "condition. " + "Only " + "used " + "with " + "match_regex " + "and " + "!match_regex " + "operator.", + "example": "path.*", + "type": "string", + }, + "value": { + "description": "Store " + "the " + "captured " + "value " + "in " + "the " + "specified " + "tag " + "name. " + "Only " + "used " + "with " + "the " + "capture_data " + "operator.", + "example": "custom_tag", + "type": "string", + }, + }, + "required": ["inputs"], + "type": "object", + }, + }, + "required": ["operator", "parameters"], + "type": "object", + }, + "type": "array", + }, + "enabled": { + "description": "Indicates whether the WAF custom rule is enabled.", + "example": False, + "type": "boolean", + }, + "name": { + "description": "The Name of the WAF custom rule.", + "example": "Block request from a bad useragent", + "type": "string", + }, + "path_glob": { + "description": "The path glob for the WAF custom rule.", + "example": "/api/search/*", + "type": "string", + }, + "scope": { + "description": "The scope of the WAF custom rule.", + "items": { + "description": "The scope of the WAF custom rule.", + "properties": { + "env": { + "description": "The " + "environment " + "scope " + "for " + "the " + "WAF " + "custom " + "rule.", + "example": "prod", + "type": "string", + }, + "service": { + "description": "The " + "service " + "scope " + "for " + "the " + "WAF " + "custom " + "rule.", + "example": "billing-service", + "type": "string", + }, + }, + "required": ["service", "env"], + "type": "object", + }, + "type": "array", + }, + "tags": { + "additionalProperties": {"type": "string"}, + "description": "Tags " + "associated " + "with " + "the " + "WAF " + "Custom " + "Rule. " + "The " + "concatenation " + "of " + "category " + "and " + "type " + "will " + "form " + "the " + "security\n" + "activity " + "field " + "associated " + "with " + "the " + "traces.", + "maxProperties": 32, + "properties": { + "category": { + "description": "The " + "category " + "of " + "the " + "WAF " + "Rule, " + "can " + "be " + "either " + "`business_logic`, " + "`attack_attempt` " + "or " + "`security_response`.", + "enum": [ + "attack_attempt", + "business_logic", + "security_response", + ], + "example": "business_logic", + "type": "string", + "x-enum-varnames": [ + "ATTACK_ATTEMPT", + "BUSINESS_LOGIC", + "SECURITY_RESPONSE", + ], + }, + "type": { + "description": "The " + "type " + "of " + "the " + "WAF " + "rule, " + "associated " + "with " + "the " + "category " + "will " + "form " + "the " + "security " + "activity.", + "example": "users.login.success", + "type": "string", + }, + }, + "required": ["category", "type"], + "type": "object", + }, + }, + "required": ["enabled", "blocking", "name", "tags", "conditions"], + "type": "object", + }, + "type": { + "default": "custom_rule", + "description": "The type of the " + "resource. The value " + "should always be " + "`custom_rule`.", + "enum": ["custom_rule"], + "example": "custom_rule", + "type": "string", + "x-enum-varnames": ["CUSTOM_RULE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEWAFCUSTOMRULE_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the Custom Rule to update.", + "properties": { + "data": { + "description": "Object for a single WAF Custom Rule.", + "properties": { + "attributes": { + "description": "Update a WAF custom rule.", + "properties": { + "action": { + "description": "The " + "definition " + "of " + "`ApplicationSecurityWafCustomRuleAction` " + "object.", + "properties": { + "action": { + "default": "block_request", + "description": "Override " + "the " + "default " + "action " + "to " + "take " + "when " + "the " + "WAF " + "custom " + "rule " + "would " + "block.", + "enum": ["redirect_request", "block_request"], + "example": "block_request", + "type": "string", + "x-enum-varnames": ["REDIRECT_REQUEST", "BLOCK_REQUEST"], + }, + "parameters": { + "description": "The " + "definition " + "of " + "`ApplicationSecurityWafCustomRuleActionParameters` " + "object.", + "properties": { + "location": { + "description": "The " + "location " + "to " + "redirect " + "to " + "when " + "the " + "WAF " + "custom " + "rule " + "triggers.", + "example": "/blocking", + "type": "string", + }, + "status_code": { + "default": 403, + "description": "The " + "status " + "code " + "to " + "return " + "when " + "the " + "WAF " + "custom " + "rule " + "triggers.", + "example": 403, + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "blocking": { + "description": "Indicates " + "whether " + "the " + "WAF " + "custom " + "rule " + "will " + "block " + "the " + "request.", + "example": False, + "type": "boolean", + }, + "conditions": { + "description": "Conditions " + "for " + "which " + "the " + "WAF " + "Custom " + "Rule " + "will " + "triggers, " + "all " + "conditions " + "needs " + "to " + "match " + "in " + "order " + "for " + "the " + "WAF\n" + "rule " + "to " + "trigger.", + "items": { + "description": "One condition of the WAF Custom Rule.", + "properties": { + "operator": { + "description": "Operator to use for the WAF Condition.", + "enum": [ + "match_regex", + "!match_regex", + "phrase_match", + "!phrase_match", + "is_xss", + "is_sqli", + "exact_match", + "!exact_match", + "ip_match", + "!ip_match", + "capture_data", + ], + "example": "match_regex", + "type": "string", + "x-enum-varnames": [ + "MATCH_REGEX", + "NOT_MATCH_REGEX", + "PHRASE_MATCH", + "NOT_PHRASE_MATCH", + "IS_XSS", + "IS_SQLI", + "EXACT_MATCH", + "NOT_EXACT_MATCH", + "IP_MATCH", + "NOT_IP_MATCH", + "CAPTURE_DATA", + ], + }, + "parameters": { + "description": "The scope of the WAF custom rule.", + "properties": { + "data": { + "description": "Identifier " + "of " + "a " + "list " + "of " + "data " + "from " + "the " + "denylist. " + "Can " + "only " + "be " + "used " + "as " + "substitution " + "from " + "the " + "list " + "parameter.", + "example": "blocked_users", + "type": "string", + }, + "inputs": { + "description": "List " + "of " + "inputs " + "on " + "which " + "at " + "least " + "one " + "should " + "match " + "with " + "the " + "given " + "operator.", + "items": { + "description": "Input " + "from " + "the " + "request " + "on " + "which " + "the " + "condition " + "should " + "apply.", + "properties": { + "address": { + "description": "Input " + "from " + "the " + "request " + "on " + "which " + "the " + "condition " + "should " + "apply.", + "enum": [ + "server.db.statement", + "server.io.fs.file", + "server.io.net.url", + "server.sys.shell.cmd", + "server.request.method", + "server.request.uri.raw", + "server.request.path_params", + "server.request.query", + "server.request.headers.no_cookies", + "server.request.cookies", + "server.request.trailers", + "server.request.body", + "server.response.status", + "server.response.headers.no_cookies", + "server.response.trailers", + "grpc.server.request.metadata", + "grpc.server.request.message", + "grpc.server.method", + "graphql.server.all_resolvers", + "usr.id", + "http.client_ip", + ], + "example": "server.db.statement", + "type": "string", + "x-enum-varnames": [ + "SERVER_DB_STATEMENT", + "SERVER_IO_FS_FILE", + "SERVER_IO_NET_URL", + "SERVER_SYS_SHELL_CMD", + "SERVER_REQUEST_METHOD", + "SERVER_REQUEST_URI_RAW", + "SERVER_REQUEST_PATH_PARAMS", + "SERVER_REQUEST_QUERY", + "SERVER_REQUEST_HEADERS_NO_COOKIES", + "SERVER_REQUEST_COOKIES", + "SERVER_REQUEST_TRAILERS", + "SERVER_REQUEST_BODY", + "SERVER_RESPONSE_STATUS", + "SERVER_RESPONSE_HEADERS_NO_COOKIES", + "SERVER_RESPONSE_TRAILERS", + "GRPC_SERVER_REQUEST_METADATA", + "GRPC_SERVER_REQUEST_MESSAGE", + "GRPC_SERVER_METHOD", + "GRAPHQL_SERVER_ALL_RESOLVERS", + "USR_ID", + "HTTP_CLIENT_IP", + ], + }, + "key_path": { + "description": "Specific " + "path " + "for " + "the " + "input.", + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["address"], + "type": "object", + }, + "type": "array", + }, + "list": { + "description": "List " + "of " + "value " + "to " + "use " + "with " + "the " + "condition. " + "Only " + "used " + "with " + "the " + "phrase_match, " + "!phrase_match, " + "exact_match " + "and\n" + "!exact_match " + "operator.", + "items": {"type": "string"}, + "type": "array", + }, + "options": { + "description": "Options " + "for " + "the " + "operator " + "of " + "this " + "condition.", + "properties": { + "case_sensitive": { + "default": False, + "description": "Evaluate " + "the " + "value " + "as " + "case " + "sensitive.", + "type": "boolean", + }, + "min_length": { + "default": 0, + "description": "Only " + "evaluate " + "this " + "condition " + "if " + "the " + "value " + "has " + "a " + "minimum " + "amount " + "of " + "characters.", + "format": "int64", + "type": "integer", + }, + }, + "type": "object", + }, + "regex": { + "description": "Regex " + "to " + "use " + "with " + "the " + "condition. " + "Only " + "used " + "with " + "match_regex " + "and " + "!match_regex " + "operator.", + "example": "path.*", + "type": "string", + }, + "value": { + "description": "Store " + "the " + "captured " + "value " + "in " + "the " + "specified " + "tag " + "name. " + "Only " + "used " + "with " + "the " + "capture_data " + "operator.", + "example": "custom_tag", + "type": "string", + }, + }, + "required": ["inputs"], + "type": "object", + }, + }, + "required": ["operator", "parameters"], + "type": "object", + }, + "type": "array", + }, + "enabled": { + "description": "Indicates whether the WAF custom rule is enabled.", + "example": False, + "type": "boolean", + }, + "name": { + "description": "The Name of the WAF custom rule.", + "example": "Block request from bad useragent", + "type": "string", + }, + "path_glob": { + "description": "The path glob for the WAF custom rule.", + "example": "/api/search/*", + "type": "string", + }, + "scope": { + "description": "The scope of the WAF custom rule.", + "items": { + "description": "The scope of the WAF custom rule.", + "properties": { + "env": { + "description": "The " + "environment " + "scope " + "for " + "the " + "WAF " + "custom " + "rule.", + "example": "prod", + "type": "string", + }, + "service": { + "description": "The " + "service " + "scope " + "for " + "the " + "WAF " + "custom " + "rule.", + "example": "billing-service", + "type": "string", + }, + }, + "required": ["service", "env"], + "type": "object", + }, + "type": "array", + }, + "tags": { + "additionalProperties": {"type": "string"}, + "description": "Tags " + "associated " + "with " + "the " + "WAF " + "Custom " + "Rule. " + "The " + "concatenation " + "of " + "category " + "and " + "type " + "will " + "form " + "the " + "security\n" + "activity " + "field " + "associated " + "with " + "the " + "traces.", + "maxProperties": 32, + "properties": { + "category": { + "description": "The " + "category " + "of " + "the " + "WAF " + "Rule, " + "can " + "be " + "either " + "`business_logic`, " + "`attack_attempt` " + "or " + "`security_response`.", + "enum": [ + "attack_attempt", + "business_logic", + "security_response", + ], + "example": "business_logic", + "type": "string", + "x-enum-varnames": [ + "ATTACK_ATTEMPT", + "BUSINESS_LOGIC", + "SECURITY_RESPONSE", + ], + }, + "type": { + "description": "The " + "type " + "of " + "the " + "WAF " + "rule, " + "associated " + "with " + "the " + "category " + "will " + "form " + "the " + "security " + "activity.", + "example": "users.login.success", + "type": "string", + }, + }, + "required": ["category", "type"], + "type": "object", + }, + }, + "required": ["enabled", "blocking", "name", "tags", "conditions"], + "type": "object", + }, + "type": { + "default": "custom_rule", + "description": "The type of the " + "resource. The value " + "should always be " + "`custom_rule`.", + "enum": ["custom_rule"], + "example": "custom_rule", + "type": "string", + "x-enum-varnames": ["CUSTOM_RULE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA": { + "description": "Request object for creating a single WAF exclusion filter.", + "properties": { + "data": { + "description": "Object for creating a single WAF exclusion filter.", + "properties": { + "attributes": { + "description": "Attributes for creating a WAF exclusion filter.", + "properties": { + "description": { + "description": "A description for the exclusion filter.", + "example": "Exclude false positives on a path", + "type": "string", + }, + "enabled": { + "description": "Indicates whether the exclusion filter is enabled.", + "example": True, + "type": "boolean", + }, + "ip_list": { + "description": "The " + "client " + "IP " + "addresses " + "matched " + "by " + "the " + "exclusion " + "filter " + "(CIDR " + "notation " + "is " + "supported).", + "items": {"example": "198.51.100.72", "type": "string"}, + "type": "array", + }, + "on_match": { + "description": "The " + "action " + "taken " + "when " + "the " + "exclusion " + "filter " + "matches. " + "When " + "set " + "to " + "`monitor`, " + "security " + "traces " + "are " + "emitted " + "but " + "the " + "requests " + "are " + "not " + "blocked. " + "By " + "default, " + "security " + "traces " + "are " + "not " + "emitted " + "and " + "the " + "requests " + "are " + "not " + "blocked.", + "enum": ["monitor"], + "type": "string", + "x-enum-varnames": ["MONITOR"], + }, + "parameters": { + "description": "A " + "list " + "of " + "parameters " + "matched " + "by " + "the " + "exclusion " + "filter " + "in " + "the " + "HTTP " + "query " + "string " + "and " + "HTTP " + "request " + "body. " + "Nested " + "parameters " + "can " + "be " + "matched " + "by " + "joining " + "fields " + "with " + "a " + "dot " + "character.", + "items": {"example": "list.search.query", "type": "string"}, + "type": "array", + }, + "path_glob": { + "description": "The " + "HTTP " + "path " + "glob " + "expression " + "matched " + "by " + "the " + "exclusion " + "filter.", + "example": "/accounts/*", + "type": "string", + }, + "rules_target": { + "description": "The WAF rules targeted by the exclusion filter.", + "items": { + "description": "Target " + "WAF " + "rules " + "based " + "either " + "on " + "an " + "identifier " + "or " + "tags.", + "properties": { + "rule_id": { + "description": "Target " + "a " + "single " + "WAF " + "rule " + "based " + "on " + "its " + "identifier.", + "example": "dog-913-009", + "type": "string", + }, + "tags": { + "additionalProperties": {"type": "string"}, + "description": "Target " + "multiple " + "WAF " + "rules " + "based " + "on " + "their " + "tags.", + "properties": { + "category": { + "description": "The " + "category " + "of " + "the " + "targeted " + "WAF " + "rules.", + "example": "attack_attempt", + "type": "string", + }, + "type": { + "description": "The " + "type " + "of " + "the " + "targeted " + "WAF " + "rules.", + "example": "lfi", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": "array", + }, + "scope": { + "description": "The " + "services " + "where " + "the " + "exclusion " + "filter " + "is " + "deployed.", + "items": { + "description": "Deploy " + "on " + "services " + "based " + "on " + "their " + "environment " + "and/or " + "service " + "name.", + "properties": { + "env": { + "description": "Deploy on this environment.", + "example": "www", + "type": "string", + }, + "service": { + "description": "Deploy on this service.", + "example": "prod", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["description", "enabled"], + "type": "object", + }, + "type": { + "default": "exclusion_filter", + "description": "Type of the resource. " + "The value should " + "always be " + "`exclusion_filter`.", + "enum": ["exclusion_filter"], + "example": "exclusion_filter", + "type": "string", + "x-enum-varnames": ["EXCLUSION_FILTER"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEWAFEXCLUSIONFILTER_REQUEST_BODY_SCHEMA": { + "description": "Request object for updating a single WAF exclusion filter.", + "properties": { + "data": { + "description": "Object for updating a single WAF exclusion filter.", + "properties": { + "attributes": { + "description": "Attributes for updating a WAF exclusion filter.", + "properties": { + "description": { + "description": "A description for the exclusion filter.", + "example": "Exclude false positives on a path", + "type": "string", + }, + "enabled": { + "description": "Indicates whether the exclusion filter is enabled.", + "example": True, + "type": "boolean", + }, + "ip_list": { + "description": "The " + "client " + "IP " + "addresses " + "matched " + "by " + "the " + "exclusion " + "filter " + "(CIDR " + "notation " + "is " + "supported).", + "items": {"example": "198.51.100.72", "type": "string"}, + "type": "array", + }, + "on_match": { + "description": "The " + "action " + "taken " + "when " + "the " + "exclusion " + "filter " + "matches. " + "When " + "set " + "to " + "`monitor`, " + "security " + "traces " + "are " + "emitted " + "but " + "the " + "requests " + "are " + "not " + "blocked. " + "By " + "default, " + "security " + "traces " + "are " + "not " + "emitted " + "and " + "the " + "requests " + "are " + "not " + "blocked.", + "enum": ["monitor"], + "type": "string", + "x-enum-varnames": ["MONITOR"], + }, + "parameters": { + "description": "A " + "list " + "of " + "parameters " + "matched " + "by " + "the " + "exclusion " + "filter " + "in " + "the " + "HTTP " + "query " + "string " + "and " + "HTTP " + "request " + "body. " + "Nested " + "parameters " + "can " + "be " + "matched " + "by " + "joining " + "fields " + "with " + "a " + "dot " + "character.", + "items": {"example": "list.search.query", "type": "string"}, + "type": "array", + }, + "path_glob": { + "description": "The " + "HTTP " + "path " + "glob " + "expression " + "matched " + "by " + "the " + "exclusion " + "filter.", + "example": "/accounts/*", + "type": "string", + }, + "rules_target": { + "description": "The WAF rules targeted by the exclusion filter.", + "items": { + "description": "Target " + "WAF " + "rules " + "based " + "either " + "on " + "an " + "identifier " + "or " + "tags.", + "properties": { + "rule_id": { + "description": "Target " + "a " + "single " + "WAF " + "rule " + "based " + "on " + "its " + "identifier.", + "example": "dog-913-009", + "type": "string", + }, + "tags": { + "additionalProperties": {"type": "string"}, + "description": "Target " + "multiple " + "WAF " + "rules " + "based " + "on " + "their " + "tags.", + "properties": { + "category": { + "description": "The " + "category " + "of " + "the " + "targeted " + "WAF " + "rules.", + "example": "attack_attempt", + "type": "string", + }, + "type": { + "description": "The " + "type " + "of " + "the " + "targeted " + "WAF " + "rules.", + "example": "lfi", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": "array", + }, + "scope": { + "description": "The " + "services " + "where " + "the " + "exclusion " + "filter " + "is " + "deployed.", + "items": { + "description": "Deploy " + "on " + "services " + "based " + "on " + "their " + "environment " + "and/or " + "service " + "name.", + "properties": { + "env": { + "description": "Deploy on this environment.", + "example": "www", + "type": "string", + }, + "service": { + "description": "Deploy on this service.", + "example": "prod", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "required": ["description", "enabled"], + "type": "object", + }, + "type": { + "default": "exclusion_filter", + "description": "Type of the resource. " + "The value should " + "always be " + "`exclusion_filter`.", + "enum": ["exclusion_filter"], + "example": "exclusion_filter", + "type": "string", + "x-enum-varnames": ["EXCLUSION_FILTER"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEWORKLOADPROTECTIONRULE_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the Agent rule to create", + "properties": { + "data": { + "description": "Object for a single Agent rule", + "properties": { + "attributes": { + "description": "Create a new Cloud Workload Security Agent rule.", + "properties": { + "actions": { + "description": "The " + "array " + "of " + "actions " + "the " + "rule " + "can " + "perform " + "if " + "triggered", + "items": { + "description": "The action the rule can perform if triggered", + "properties": { + "filter": { + "description": "SECL " + "expression " + "used " + "to " + "target " + "the " + "container " + "to " + "apply " + "the " + "action " + "on", + "type": "string", + }, + "hash": { + "additionalProperties": {}, + "description": "An " + "empty " + "object " + "indicating " + "the " + "hash " + "action", + "type": "object", + }, + "kill": { + "description": "Kill " + "system " + "call " + "applied " + "on " + "the " + "container " + "matching " + "the " + "rule", + "properties": { + "signal": { + "description": "Supported " + "signals " + "for " + "the " + "kill " + "system " + "call", + "type": "string", + } + }, + "type": "object", + }, + "metadata": { + "description": "The " + "metadata " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "image_tag": { + "description": "The " + "image " + "tag " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "service": { + "description": "The " + "service " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "short_image": { + "description": "The " + "short " + "image " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + }, + "type": "object", + }, + "set": { + "description": "The " + "set " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "append": { + "description": "Whether " + "the " + "value " + "should " + "be " + "appended " + "to " + "the " + "field.", + "type": "boolean", + }, + "default_value": { + "description": "The " + "default " + "value " + "of " + "the " + "set " + "action", + "type": "string", + }, + "expression": { + "description": "The " + "expression " + "of " + "the " + "set " + "action.", + "type": "string", + }, + "field": { + "description": "The field of the set action", + "type": "string", + }, + "inherited": { + "description": "Whether " + "the " + "value " + "should " + "be " + "inherited.", + "type": "boolean", + }, + "name": { + "description": "The name of the set action", + "type": "string", + }, + "scope": { + "description": "The scope of the set action.", + "type": "string", + }, + "size": { + "description": "The size of the set action.", + "format": "int64", + "type": "integer", + }, + "ttl": { + "description": "The " + "time " + "to " + "live " + "of " + "the " + "set " + "action.", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "The value of the set action", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "nullable": True, + "type": "array", + }, + "agent_version": { + "description": "Constrain " + "the " + "rule " + "to " + "specific " + "versions " + "of " + "the " + "Datadog " + "Agent.", + "type": "string", + }, + "blocking": { + "description": "The blocking policies that the rule belongs to.", + "items": {"type": "string"}, + "type": "array", + }, + "description": { + "description": "The description of the Agent rule.", + "example": "My Agent rule", + "type": "string", + }, + "disabled": { + "description": "The disabled policies that the rule belongs to.", + "items": {"type": "string"}, + "type": "array", + }, + "enabled": { + "description": "Whether the Agent rule is enabled.", + "example": True, + "type": "boolean", + }, + "expression": { + "description": "The SECL expression of the Agent rule.", + "example": 'exec.file.name == "sh"', + "type": "string", + }, + "filters": { + "description": "The platforms the Agent rule is supported on.", + "items": {"type": "string"}, + "type": "array", + }, + "monitoring": { + "description": "The monitoring policies that the rule belongs to.", + "items": {"type": "string"}, + "type": "array", + }, + "name": { + "description": "The name of the Agent rule.", + "example": "my_agent_rule", + "type": "string", + }, + "policy_id": { + "description": "The " + "ID " + "of " + "the " + "policy " + "where " + "the " + "Agent " + "rule " + "is " + "saved.", + "example": "a8c8e364-6556-434d-b798-a4c23de29c0b", + "type": "string", + }, + "product_tags": { + "description": "The list of product tags associated with the rule.", + "items": {"type": "string"}, + "type": "array", + }, + "silent": { + "description": "Whether the rule is silent.", + "example": False, + "type": "boolean", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": { + "default": "agent_rule", + "description": "The type of the resource, must always be `agent_rule`", + "enum": ["agent_rule"], + "example": "agent_rule", + "type": "string", + "x-enum-varnames": ["AGENT_RULE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEWORKLOADPROTECTIONAGENTRULE_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the Agent rule with the attributes to update", + "properties": { + "data": { + "description": "Object for a single Agent rule", + "properties": { + "attributes": { + "description": "Update an existing Cloud Workload Security Agent rule", + "properties": { + "actions": { + "description": "The " + "array " + "of " + "actions " + "the " + "rule " + "can " + "perform " + "if " + "triggered", + "items": { + "description": "The action the rule can perform if triggered", + "properties": { + "filter": { + "description": "SECL " + "expression " + "used " + "to " + "target " + "the " + "container " + "to " + "apply " + "the " + "action " + "on", + "type": "string", + }, + "hash": { + "additionalProperties": {}, + "description": "An " + "empty " + "object " + "indicating " + "the " + "hash " + "action", + "type": "object", + }, + "kill": { + "description": "Kill " + "system " + "call " + "applied " + "on " + "the " + "container " + "matching " + "the " + "rule", + "properties": { + "signal": { + "description": "Supported " + "signals " + "for " + "the " + "kill " + "system " + "call", + "type": "string", + } + }, + "type": "object", + }, + "metadata": { + "description": "The " + "metadata " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "image_tag": { + "description": "The " + "image " + "tag " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "service": { + "description": "The " + "service " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "short_image": { + "description": "The " + "short " + "image " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + }, + "type": "object", + }, + "set": { + "description": "The " + "set " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "append": { + "description": "Whether " + "the " + "value " + "should " + "be " + "appended " + "to " + "the " + "field.", + "type": "boolean", + }, + "default_value": { + "description": "The " + "default " + "value " + "of " + "the " + "set " + "action", + "type": "string", + }, + "expression": { + "description": "The " + "expression " + "of " + "the " + "set " + "action.", + "type": "string", + }, + "field": { + "description": "The field of the set action", + "type": "string", + }, + "inherited": { + "description": "Whether " + "the " + "value " + "should " + "be " + "inherited.", + "type": "boolean", + }, + "name": { + "description": "The name of the set action", + "type": "string", + }, + "scope": { + "description": "The scope of the set action.", + "type": "string", + }, + "size": { + "description": "The size of the set action.", + "format": "int64", + "type": "integer", + }, + "ttl": { + "description": "The " + "time " + "to " + "live " + "of " + "the " + "set " + "action.", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "The value of the set action", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "nullable": True, + "type": "array", + }, + "agent_version": { + "description": "Constrain " + "the " + "rule " + "to " + "specific " + "versions " + "of " + "the " + "Datadog " + "Agent", + "type": "string", + }, + "blocking": { + "description": "The blocking policies that the rule belongs to", + "items": {"type": "string"}, + "type": "array", + }, + "description": { + "description": "The description of the Agent rule", + "example": "My Agent rule", + "type": "string", + }, + "disabled": { + "description": "The disabled policies that the rule belongs to", + "items": {"type": "string"}, + "type": "array", + }, + "enabled": { + "description": "Whether the Agent rule is enabled", + "example": True, + "type": "boolean", + }, + "expression": { + "description": "The SECL expression of the Agent rule", + "example": 'exec.file.name == "sh"', + "type": "string", + }, + "monitoring": { + "description": "The monitoring policies that the rule belongs to", + "items": {"type": "string"}, + "type": "array", + }, + "policy_id": { + "description": "The ID of the policy where the Agent rule is saved", + "example": "a8c8e364-6556-434d-b798-a4c23de29c0b", + "type": "string", + }, + "product_tags": { + "description": "The list of product tags associated with the rule", + "items": {"type": "string"}, + "type": "array", + }, + "silent": { + "description": "Whether the rule is silent.", + "example": False, + "type": "boolean", + }, + }, + "type": "object", + }, + "id": { + "description": "The ID of the Agent rule", + "example": "3dd-0uc-h1s", + "type": "string", + }, + "type": { + "default": "agent_rule", + "description": "The type of the resource, must always be `agent_rule`", + "enum": ["agent_rule"], + "example": "agent_rule", + "type": "string", + "x-enum-varnames": ["AGENT_RULE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEPIPELINE_REQUEST_BODY_SCHEMA": { + "description": "Input schema representing an observability pipeline configuration. " + "Used in create and validate requests.", + "properties": { + "data": { + "description": "Contains the the pipeline configuration.", + "properties": { + "attributes": { + "description": "Defines the " + "pipeline’s name " + "and its " + "components " + "(sources, " + "processors, and " + "destinations).", + "properties": { + "config": { + "description": "Specifies " + "the " + "pipeline's " + "configuration, " + "including " + "its " + "sources, " + "processors, " + "and " + "destinations.", + "properties": { + "destinations": { + "description": "A " + "list " + "of " + "destination " + "components " + "where " + "processed " + "logs " + "are " + "sent.", + "example": [ + { + "id": "datadog-logs-destination", + "inputs": ["filter-processor"], + "type": "datadog_logs", + } + ], + "items": { + "description": "A destination for the pipeline.", + "oneOf": [ + { + "description": "The " + "`datadog_logs` " + "destination " + "forwards " + "logs " + "to " + "Datadog " + "Log " + "Management.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "datadog-logs-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "datadog_logs", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_logs`.", + "enum": ["datadog_logs"], + "example": "datadog_logs", + "type": "string", + "x-enum-varnames": ["DATADOG_LOGS"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`amazon_s3` " + "destination " + "sends " + "your " + "logs " + "in " + "Datadog-rehydratable " + "format " + "to " + "an " + "Amazon " + "S3 " + "bucket " + "for " + "archiving.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "bucket": { + "description": "S3 bucket name.", + "example": "error-logs", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "amazon-s3-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "key_prefix": { + "description": "Optional " + "prefix " + "for " + "object " + "keys.", + "type": "string", + }, + "region": { + "description": "AWS " + "region " + "of " + "the " + "S3 " + "bucket.", + "example": "us-east-1", + "type": "string", + }, + "storage_class": { + "description": "S3 storage class.", + "enum": [ + "STANDARD", + "REDUCED_REDUNDANCY", + "INTELLIGENT_TIERING", + "STANDARD_IA", + "EXPRESS_ONEZONE", + "ONEZONE_IA", + "GLACIER", + "GLACIER_IR", + "DEEP_ARCHIVE", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "REDUCED_REDUNDANCY", + "INTELLIGENT_TIERING", + "STANDARD_IA", + "EXPRESS_ONEZONE", + "ONEZONE_IA", + "GLACIER", + "GLACIER_IR", + "DEEP_ARCHIVE", + ], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_s3", + "description": "The " + "destination " + "type. " + "Always " + "`amazon_s3`.", + "enum": ["amazon_s3"], + "example": "amazon_s3", + "type": "string", + "x-enum-varnames": ["AMAZON_S3"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "region", + "storage_class", + ], + "type": "object", + }, + { + "description": "The " + "`google_cloud_storage` " + "destination " + "stores " + "logs " + "in " + "a " + "Google " + "Cloud " + "Storage " + "(GCS) " + "bucket.\n" + "It " + "requires " + "a " + "bucket " + "name, " + "GCP " + "authentication, " + "and " + "metadata " + "fields.", + "properties": { + "acl": { + "description": "Access " + "control " + "list " + "setting " + "for " + "objects " + "written " + "to " + "the " + "bucket.", + "enum": [ + "private", + "project-private", + "public-read", + "authenticated-read", + "bucket-owner-read", + "bucket-owner-full-control", + ], + "example": "private", + "type": "string", + "x-enum-varnames": [ + "PRIVATE", + "PROJECTNOT_PRIVATE", + "PUBLICNOT_READ", + "AUTHENTICATEDNOT_READ", + "BUCKETNOT_OWNERNOT_READ", + "BUCKETNOT_OWNERNOT_FULLNOT_CONTROL", + ], + }, + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "bucket": { + "description": "Name " + "of " + "the " + "GCS " + "bucket.", + "example": "error-logs", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "gcs-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "key_prefix": { + "description": "Optional " + "prefix " + "for " + "object " + "keys " + "within " + "the " + "GCS " + "bucket.", + "type": "string", + }, + "metadata": { + "description": "Custom " + "metadata " + "to " + "attach " + "to " + "each " + "object " + "uploaded " + "to " + "the " + "GCS " + "bucket.", + "items": { + "description": "A " + "custom " + "metadata " + "entry.", + "properties": { + "name": { + "description": "The " + "metadata " + "key.", + "example": "environment", + "type": "string", + }, + "value": { + "description": "The " + "metadata " + "value.", + "example": "production", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "storage_class": { + "description": "Storage " + "class " + "used " + "for " + "objects " + "stored " + "in " + "GCS.", + "enum": [ + "STANDARD", + "NEARLINE", + "COLDLINE", + "ARCHIVE", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "NEARLINE", + "COLDLINE", + "ARCHIVE", + ], + }, + "type": { + "default": "google_cloud_storage", + "description": "The " + "destination " + "type. " + "Always " + "`google_cloud_storage`.", + "enum": ["google_cloud_storage"], + "example": "google_cloud_storage", + "type": "string", + "x-enum-varnames": [ + "GOOGLE_CLOUD_STORAGE" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "auth", + "storage_class", + "acl", + ], + "type": "object", + }, + { + "description": "The " + "`splunk_hec` " + "destination " + "forwards " + "logs " + "to " + "Splunk " + "using " + "the " + "HTTP " + "Event " + "Collector " + "(HEC).", + "properties": { + "auto_extract_timestamp": { + "description": "If " + "`true`, " + "Splunk " + "tries " + "to " + "extract " + "timestamps " + "from " + "incoming " + "log " + "events.\n" + "If " + "`false`, " + "Splunk " + "assigns " + "the " + "time " + "the " + "event " + "was " + "received.", + "example": True, + "type": "boolean", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-hec-destination", + "type": "string", + }, + "index": { + "description": "Optional " + "name " + "of " + "the " + "Splunk " + "index " + "where " + "logs " + "are " + "written.", + "example": "main", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "sourcetype": { + "description": "The " + "Splunk " + "sourcetype " + "to " + "assign " + "to " + "log " + "events.", + "example": "custom_sourcetype", + "type": "string", + }, + "type": { + "default": "splunk_hec", + "description": "The " + "destination " + "type. " + "Always " + "`splunk_hec`.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`sumo_logic` " + "destination " + "forwards " + "logs " + "to " + "Sumo " + "Logic.", + "properties": { + "encoding": { + "description": "The " + "output " + "encoding " + "format.", + "enum": [ + "json", + "raw_message", + "logfmt", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + "LOGFMT", + ], + }, + "header_custom_fields": { + "description": "A " + "list " + "of " + "custom " + "headers " + "to " + "include " + "in " + "the " + "request " + "to " + "Sumo " + "Logic.", + "items": { + "description": "Single " + "key-value " + "pair " + "used " + "as " + "a " + "custom " + "log " + "header " + "for " + "Sumo " + "Logic.", + "properties": { + "name": { + "description": "The " + "header " + "field " + "name.", + "example": "X-Sumo-Category", + "type": "string", + }, + "value": { + "description": "The " + "header " + "field " + "value.", + "example": "my-app-logs", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "header_host_name": { + "description": "Optional " + "override " + "for " + "the " + "host " + "name " + "header.", + "example": "host-123", + "type": "string", + }, + "header_source_category": { + "description": "Optional " + "override " + "for " + "the " + "source " + "category " + "header.", + "example": "source-category", + "type": "string", + }, + "header_source_name": { + "description": "Optional " + "override " + "for " + "the " + "source " + "name " + "header.", + "example": "source-name", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sumo-logic-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "sumo_logic", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sumo_logic`.", + "enum": ["sumo_logic"], + "example": "sumo_logic", + "type": "string", + "x-enum-varnames": ["SUMO_LOGIC"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`elasticsearch` " + "destination " + "writes " + "logs " + "to " + "an " + "Elasticsearch " + "cluster.", + "properties": { + "api_version": { + "description": "The " + "Elasticsearch " + "API " + "version " + "to " + "use. " + "Set " + "to " + "`auto` " + "to " + "auto-detect.", + "enum": ["auto", "v6", "v7", "v8"], + "example": "auto", + "type": "string", + "x-enum-varnames": [ + "AUTO", + "V6", + "V7", + "V8", + ], + }, + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to " + "in " + "Elasticsearch.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "elasticsearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "elasticsearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`elasticsearch`.", + "enum": ["elasticsearch"], + "example": "elasticsearch", + "type": "string", + "x-enum-varnames": ["ELASTICSEARCH"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`rsyslog` " + "destination " + "forwards " + "logs " + "to " + "an " + "external " + "`rsyslog` " + "server " + "over " + "TCP " + "or " + "UDP " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "rsyslog-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "keepalive": { + "description": "Optional " + "socket " + "keepalive " + "duration " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "rsyslog", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rsyslog`.", + "enum": ["rsyslog"], + "example": "rsyslog", + "type": "string", + "x-enum-varnames": ["RSYSLOG"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`syslog_ng` " + "destination " + "forwards " + "logs " + "to " + "an " + "external " + "`syslog-ng` " + "server " + "over " + "TCP " + "or " + "UDP " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "syslog-ng-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "keepalive": { + "description": "Optional " + "socket " + "keepalive " + "duration " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "syslog_ng", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`syslog_ng`.", + "enum": ["syslog_ng"], + "example": "syslog_ng", + "type": "string", + "x-enum-varnames": ["SYSLOG_NG"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`azure_storage` " + "destination " + "forwards " + "logs " + "to " + "an " + "Azure " + "Blob " + "Storage " + "container.", + "properties": { + "blob_prefix": { + "description": "Optional " + "prefix " + "for " + "blobs " + "written " + "to " + "the " + "container.", + "example": "logs/", + "type": "string", + }, + "container_name": { + "description": "The " + "name " + "of " + "the " + "Azure " + "Blob " + "Storage " + "container " + "to " + "store " + "logs " + "in.", + "example": "my-log-container", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "azure-storage-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["processor-id"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "azure_storage", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`azure_storage`.", + "enum": ["azure_storage"], + "example": "azure_storage", + "type": "string", + "x-enum-varnames": ["AZURE_STORAGE"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "container_name", + ], + "type": "object", + }, + { + "description": "The " + "`microsoft_sentinel` " + "destination " + "forwards " + "logs " + "to " + "Microsoft " + "Sentinel.", + "properties": { + "client_id": { + "description": "Azure " + "AD " + "client " + "ID " + "used " + "for " + "authentication.", + "example": "a1b2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + }, + "dcr_immutable_id": { + "description": "The " + "immutable " + "ID " + "of " + "the " + "Data " + "Collection " + "Rule " + "(DCR).", + "example": "dcr-uuid-1234", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sentinel-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "table": { + "description": "The " + "name " + "of " + "the " + "Log " + "Analytics " + "table " + "where " + "logs " + "are " + "sent.", + "example": "CustomLogsTable", + "type": "string", + }, + "tenant_id": { + "description": "Azure AD tenant ID.", + "example": "abcdef12-3456-7890-abcd-ef1234567890", + "type": "string", + }, + "type": { + "default": "microsoft_sentinel", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`microsoft_sentinel`.", + "enum": ["microsoft_sentinel"], + "example": "microsoft_sentinel", + "type": "string", + "x-enum-varnames": [ + "MICROSOFT_SENTINEL" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "client_id", + "tenant_id", + "dcr_immutable_id", + "table", + ], + "type": "object", + }, + { + "description": "The " + "`google_chronicle` " + "destination " + "sends " + "logs " + "to " + "Google " + "Chronicle.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "customer_id": { + "description": "The " + "Google " + "Chronicle " + "customer " + "ID.", + "example": "abcdefg123456789", + "type": "string", + }, + "encoding": { + "description": "The " + "encoding " + "format " + "for " + "the " + "logs " + "sent " + "to " + "Chronicle.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "google-chronicle-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "log_type": { + "description": "The " + "log " + "type " + "metadata " + "associated " + "with " + "the " + "Chronicle " + "destination.", + "example": "nginx_logs", + "type": "string", + }, + "type": { + "default": "google_chronicle", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_chronicle`.", + "enum": ["google_chronicle"], + "example": "google_chronicle", + "type": "string", + "x-enum-varnames": ["GOOGLE_CHRONICLE"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "auth", + "customer_id", + ], + "type": "object", + }, + { + "description": "The " + "`new_relic` " + "destination " + "sends " + "logs " + "to " + "the " + "New " + "Relic " + "platform.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "new-relic-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "The New Relic region.", + "enum": ["us", "eu"], + "example": "us", + "type": "string", + "x-enum-varnames": ["US", "EU"], + }, + "type": { + "default": "new_relic", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`new_relic`.", + "enum": ["new_relic"], + "example": "new_relic", + "type": "string", + "x-enum-varnames": ["NEW_RELIC"], + }, + }, + "required": ["id", "type", "inputs", "region"], + "type": "object", + }, + { + "description": "The " + "`sentinel_one` " + "destination " + "sends " + "logs " + "to " + "SentinelOne.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sentinelone-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "The " + "SentinelOne " + "region " + "to " + "send " + "logs " + "to.", + "enum": [ + "us", + "eu", + "ca", + "data_set_us", + ], + "example": "us", + "type": "string", + "x-enum-varnames": [ + "US", + "EU", + "CA", + "DATA_SET_US", + ], + }, + "type": { + "default": "sentinel_one", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sentinel_one`.", + "enum": ["sentinel_one"], + "example": "sentinel_one", + "type": "string", + "x-enum-varnames": ["SENTINEL_ONE"], + }, + }, + "required": ["id", "type", "inputs", "region"], + "type": "object", + }, + { + "description": "The " + "`opensearch` " + "destination " + "writes " + "logs " + "to " + "an " + "OpenSearch " + "cluster.", + "properties": { + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "opensearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "opensearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`opensearch`.", + "enum": ["opensearch"], + "example": "opensearch", + "type": "string", + "x-enum-varnames": ["OPENSEARCH"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`amazon_opensearch` " + "destination " + "writes " + "logs " + "to " + "Amazon " + "OpenSearch.", + "properties": { + "auth": { + "description": "Authentication " + "settings " + "for " + "the " + "Amazon " + "OpenSearch " + "destination.\n" + "The " + "`strategy` " + "field " + "determines " + "whether " + "basic " + "or " + "AWS-based " + "authentication " + "is " + "used.", + "properties": { + "assume_role": { + "description": "The " + "ARN " + "of " + "the " + "role " + "to " + "assume " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "aws_region": { + "description": "AWS region", + "type": "string", + }, + "external_id": { + "description": "External " + "ID " + "for " + "the " + "assumed " + "role " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "session_name": { + "description": "Session " + "name " + "for " + "the " + "assumed " + "role " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "strategy": { + "description": "The " + "authentication " + "strategy " + "to " + "use.", + "enum": ["basic", "aws"], + "example": "aws", + "type": "string", + "x-enum-varnames": [ + "BASIC", + "AWS", + ], + }, + }, + "required": ["strategy"], + "type": "object", + }, + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "elasticsearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "amazon_opensearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`amazon_opensearch`.", + "enum": ["amazon_opensearch"], + "example": "amazon_opensearch", + "type": "string", + "x-enum-varnames": [ + "AMAZON_OPENSEARCH" + ], + }, + }, + "required": ["id", "type", "inputs", "auth"], + "type": "object", + }, + { + "description": "The " + "`socket` " + "destination " + "sends " + "logs " + "over " + "TCP " + "or " + "UDP " + "to " + "a " + "remote " + "server.", + "properties": { + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "framing": { + "description": "Framing " + "method " + "configuration.", + "oneOf": [ + { + "description": "Each " + "log " + "event " + "is " + "delimited " + "by " + "a " + "newline " + "character.", + "properties": { + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingNewlineDelimitedMethod` " + "object.", + "enum": [ + "newline_delimited" + ], + "example": "newline_delimited", + "type": "string", + "x-enum-varnames": [ + "NEWLINE_DELIMITED" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Event " + "data " + "is " + "not " + "delimited " + "at " + "all.", + "properties": { + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingBytesMethod` " + "object.", + "enum": ["bytes"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Each " + "log " + "event " + "is " + "separated " + "using " + "the " + "specified " + "delimiter " + "character.", + "properties": { + "delimiter": { + "description": "A " + "single " + "ASCII " + "character " + "used " + "as " + "a " + "delimiter.", + "example": "|", + "maxLength": 1, + "minLength": 1, + "type": "string", + }, + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingCharacterDelimitedMethod` " + "object.", + "enum": [ + "character_delimited" + ], + "example": "character_delimited", + "type": "string", + "x-enum-varnames": [ + "CHARACTER_DELIMITED" + ], + }, + }, + "required": [ + "method", + "delimiter", + ], + "type": "object", + }, + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "socket-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "Protocol " + "used " + "to " + "send " + "logs.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "socket", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`socket`.", + "enum": ["socket"], + "example": "socket", + "type": "string", + "x-enum-varnames": ["SOCKET"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + "framing", + "mode", + ], + "type": "object", + }, + { + "description": "The " + "`amazon_security_lake` " + "destination " + "sends " + "your " + "logs " + "to " + "Amazon " + "Security " + "Lake.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "bucket": { + "description": "Name " + "of " + "the " + "Amazon " + "S3 " + "bucket " + "in " + "Security " + "Lake " + "(3-63 " + "characters).", + "example": "security-lake-bucket", + "type": "string", + }, + "custom_source_name": { + "description": "Custom " + "source " + "name " + "for " + "the " + "logs " + "in " + "Security " + "Lake.", + "example": "my-custom-source", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "amazon-security-lake-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "AWS " + "region " + "of " + "the " + "S3 " + "bucket.", + "example": "us-east-1", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_security_lake", + "description": "The " + "destination " + "type. " + "Always " + "`amazon_security_lake`.", + "enum": ["amazon_security_lake"], + "example": "amazon_security_lake", + "type": "string", + "x-enum-varnames": [ + "AMAZON_SECURITY_LAKE" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "region", + "custom_source_name", + ], + "type": "object", + }, + { + "description": "The " + "`crowdstrike_next_gen_siem` " + "destination " + "forwards " + "logs " + "to " + "CrowdStrike " + "Next " + "Gen " + "SIEM.", + "properties": { + "compression": { + "description": "Compression " + "configuration " + "for " + "log " + "events.", + "properties": { + "algorithm": { + "description": "Compression " + "algorithm " + "for " + "log " + "events.", + "enum": ["gzip", "zlib"], + "example": "gzip", + "type": "string", + "x-enum-varnames": [ + "GZIP", + "ZLIB", + ], + }, + "level": { + "description": "Compression " + "level.", + "example": 6, + "format": "int64", + "type": "integer", + }, + }, + "required": ["algorithm"], + "type": "object", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "crowdstrike-ngsiem-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "crowdstrike_next_gen_siem", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`crowdstrike_next_gen_siem`.", + "enum": ["crowdstrike_next_gen_siem"], + "example": "crowdstrike_next_gen_siem", + "type": "string", + "x-enum-varnames": [ + "CROWDSTRIKE_NEXT_GEN_SIEM" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + ], + "type": "object", + }, + { + "description": "The " + "`google_pubsub` " + "destination " + "publishes " + "logs " + "to " + "a " + "Google " + "Cloud " + "Pub/Sub " + "topic.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "google-pubsub-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "project": { + "description": "The " + "GCP " + "project " + "ID " + "that " + "owns " + "the " + "Pub/Sub " + "topic.", + "example": "my-gcp-project", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "topic": { + "description": "The " + "Pub/Sub " + "topic " + "name " + "to " + "publish " + "logs " + "to.", + "example": "logs-subscription", + "type": "string", + }, + "type": { + "default": "google_pubsub", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_pubsub`.", + "enum": ["google_pubsub"], + "example": "google_pubsub", + "type": "string", + "x-enum-varnames": ["GOOGLE_PUBSUB"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + "project", + "topic", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "processors": { + "description": "A " + "list " + "of " + "processors " + "that " + "transform " + "or " + "enrich " + "log " + "data.", + "example": [ + { + "id": "filter-processor", + "include": "service:my-service", + "inputs": ["datadog-agent-source"], + "type": "filter", + } + ], + "items": { + "description": "A processor for the pipeline.", + "oneOf": [ + { + "description": "The " + "`filter` " + "processor " + "allows " + "conditional " + "processing " + "of " + "logs " + "based " + "on " + "a " + "Datadog " + "search " + "query. " + "Logs " + "that " + "match " + "the " + "`include` " + "query " + "are " + "passed " + "through; " + "others " + "are " + "discarded.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "filter-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "should " + "pass " + "through " + "the " + "filter. " + "Logs " + "that " + "match " + "this " + "query " + "continue " + "to " + "downstream " + "components; " + "others " + "are " + "dropped.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "filter", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`filter`.", + "enum": ["filter"], + "example": "filter", + "type": "string", + "x-enum-varnames": ["FILTER"], + }, + }, + "required": ["id", "type", "include", "inputs"], + "type": "object", + }, + { + "description": "The " + "`parse_json` " + "processor " + "extracts " + "JSON " + "from " + "a " + "specified " + "field " + "and " + "flattens " + "it " + "into " + "the " + "event. " + "This " + "is " + "useful " + "when " + "logs " + "contain " + "embedded " + "JSON " + "as " + "a " + "string.", + "properties": { + "field": { + "description": "The " + "name " + "of " + "the " + "log " + "field " + "that " + "contains " + "a " + "JSON " + "string.", + "example": "message", + "type": "string", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "parse-json-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "parse_json", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`parse_json`.", + "enum": ["parse_json"], + "example": "parse_json", + "type": "string", + "x-enum-varnames": ["PARSE_JSON"], + }, + }, + "required": [ + "id", + "type", + "include", + "field", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "Quota " + "Processor " + "measures " + "logging " + "traffic " + "for " + "logs " + "that " + "match " + "a " + "specified " + "filter. " + "When " + "the " + "configured " + "daily " + "quota " + "is " + "met, " + "the " + "processor " + "can " + "drop " + "or " + "alert.", + "properties": { + "drop_events": { + "description": "If " + "set " + "to " + "`true`, " + "logs " + "that " + "matched " + "the " + "quota " + "filter " + "and " + "sent " + "after " + "the " + "quota " + "has " + "been " + "met " + "are " + "dropped; " + "only " + "logs " + "that " + "did " + "not " + "match " + "the " + "filter " + "query " + "continue " + "through " + "the " + "pipeline.", + "example": False, + "type": "boolean", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "quota-processor", + "type": "string", + }, + "ignore_when_missing_partitions": { + "description": "If " + "`true`, " + "the " + "processor " + "skips " + "quota " + "checks " + "when " + "partition " + "fields " + "are " + "missing " + "from " + "the " + "logs.", + "type": "boolean", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "limit": { + "description": "The " + "maximum " + "amount " + "of " + "data " + "or " + "number " + "of " + "events " + "allowed " + "before " + "the " + "quota " + "is " + "enforced. " + "Can " + "be " + "specified " + "in " + "bytes " + "or " + "events.", + "properties": { + "enforce": { + "description": "Unit " + "for " + "quota " + "enforcement " + "in " + "bytes " + "for " + "data " + "size " + "or " + "events " + "for " + "count.", + "enum": ["bytes", "events"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES", + "EVENTS", + ], + }, + "limit": { + "description": "The " + "limit " + "for " + "quota " + "enforcement.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + }, + "required": ["enforce", "limit"], + "type": "object", + }, + "name": { + "description": "Name of the quota.", + "example": "MyQuota", + "type": "string", + }, + "overflow_action": { + "description": "The " + "action " + "to " + "take " + "when " + "the " + "quota " + "is " + "exceeded. " + "Options:\n" + "- " + "`drop`: " + "Drop " + "the " + "event.\n" + "- " + "`no_action`: " + "Let " + "the " + "event " + "pass " + "through.\n" + "- " + "`overflow_routing`: " + "Route " + "to " + "an " + "overflow " + "destination.", + "enum": [ + "drop", + "no_action", + "overflow_routing", + ], + "example": "drop", + "type": "string", + "x-enum-varnames": [ + "DROP", + "NO_ACTION", + "OVERFLOW_ROUTING", + ], + }, + "overrides": { + "description": "A " + "list " + "of " + "alternate " + "quota " + "rules " + "that " + "apply " + "to " + "specific " + "sets " + "of " + "events, " + "identified " + "by " + "matching " + "field " + "values. " + "Each " + "override " + "can " + "define " + "a " + "custom " + "limit.", + "items": { + "description": "Defines " + "a " + "custom " + "quota " + "limit " + "that " + "applies " + "to " + "specific " + "log " + "events " + "based " + "on " + "matching " + "field " + "values.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "field " + "matchers " + "used " + "to " + "apply " + "a " + "specific " + "override. " + "If " + "an " + "event " + "matches " + "all " + "listed " + "key-value " + "pairs, " + "the " + "corresponding " + "override " + "limit " + "is " + "enforced.", + "items": { + "description": "Represents " + "a " + "static " + "key-value " + "pair " + "used " + "in " + "various " + "processors.", + "properties": { + "name": { + "description": "The " + "field " + "name.", + "example": "field_name", + "type": "string", + }, + "value": { + "description": "The " + "field " + "value.", + "example": "field_value", + "type": "string", + }, + }, + "required": [ + "name", + "value", + ], + "type": "object", + }, + "type": "array", + }, + "limit": { + "description": "The " + "maximum " + "amount " + "of " + "data " + "or " + "number " + "of " + "events " + "allowed " + "before " + "the " + "quota " + "is " + "enforced. " + "Can " + "be " + "specified " + "in " + "bytes " + "or " + "events.", + "properties": { + "enforce": { + "description": "Unit " + "for " + "quota " + "enforcement " + "in " + "bytes " + "for " + "data " + "size " + "or " + "events " + "for " + "count.", + "enum": [ + "bytes", + "events", + ], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES", + "EVENTS", + ], + }, + "limit": { + "description": "The " + "limit " + "for " + "quota " + "enforcement.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + }, + "required": [ + "enforce", + "limit", + ], + "type": "object", + }, + }, + "required": ["fields", "limit"], + "type": "object", + }, + "type": "array", + }, + "partition_fields": { + "description": "A " + "list " + "of " + "fields " + "used " + "to " + "segment " + "log " + "traffic " + "for " + "quota " + "enforcement. " + "Quotas " + "are " + "tracked " + "independently " + "by " + "unique " + "combinations " + "of " + "these " + "field " + "values.", + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "quota", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`quota`.", + "enum": ["quota"], + "example": "quota", + "type": "string", + "x-enum-varnames": ["QUOTA"], + }, + }, + "required": [ + "id", + "type", + "include", + "name", + "drop_events", + "limit", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`add_fields` " + "processor " + "adds " + "static " + "key-value " + "fields " + "to " + "logs.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "static " + "fields " + "(key-value " + "pairs) " + "that " + "is " + "added " + "to " + "each " + "log " + "event " + "processed " + "by " + "this " + "component.", + "items": { + "description": "Represents " + "a " + "static " + "key-value " + "pair " + "used " + "in " + "various " + "processors.", + "properties": { + "name": { + "description": "The " + "field " + "name.", + "example": "field_name", + "type": "string", + }, + "value": { + "description": "The " + "field " + "value.", + "example": "field_value", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "add-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "add_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`add_fields`.", + "enum": ["add_fields"], + "example": "add_fields", + "type": "string", + "x-enum-varnames": ["ADD_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`remove_fields` " + "processor " + "deletes " + "specified " + "fields " + "from " + "logs.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "field " + "names " + "to " + "be " + "removed " + "from " + "each " + "log " + "event.", + "example": ["field1", "field2"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "remove-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "The " + "`PipelineRemoveFieldsProcessor` " + "`inputs`.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "remove_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`remove_fields`.", + "enum": ["remove_fields"], + "example": "remove_fields", + "type": "string", + "x-enum-varnames": ["REMOVE_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`rename_fields` " + "processor " + "changes " + "field " + "names.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "rename " + "rules " + "specifying " + "which " + "fields " + "to " + "rename " + "in " + "the " + "event, " + "what " + "to " + "rename " + "them " + "to, " + "and " + "whether " + "to " + "preserve " + "the " + "original " + "fields.", + "items": { + "description": "Defines " + "how " + "to " + "rename " + "a " + "field " + "in " + "log " + "events.", + "properties": { + "destination": { + "description": "The " + "field " + "name " + "to " + "assign " + "the " + "renamed " + "value " + "to.", + "example": "destination_field", + "type": "string", + }, + "preserve_source": { + "description": "Indicates " + "whether " + "the " + "original " + "field, " + "that " + "is " + "received " + "from " + "the " + "source, " + "should " + "be " + "kept " + "(`true`) " + "or " + "removed " + "(`false`) " + "after " + "renaming.", + "example": False, + "type": "boolean", + }, + "source": { + "description": "The " + "original " + "field " + "name " + "in " + "the " + "log " + "event " + "that " + "should " + "be " + "renamed.", + "example": "source_field", + "type": "string", + }, + }, + "required": [ + "source", + "destination", + "preserve_source", + ], + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "rename-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "rename_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rename_fields`.", + "enum": ["rename_fields"], + "example": "rename_fields", + "type": "string", + "x-enum-varnames": ["RENAME_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`generate_datadog_metrics` " + "processor " + "creates " + "custom " + "metrics " + "from " + "logs " + "and " + "sends " + "them " + "to " + "Datadog.\n" + "Metrics " + "can " + "be " + "counters, " + "gauges, " + "or " + "distributions " + "and " + "optionally " + "grouped " + "by " + "log " + "fields.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline.", + "example": "generate-metrics-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "processor.", + "example": ["source-id"], + "items": {"type": "string"}, + "type": "array", + }, + "metrics": { + "description": "Configuration " + "for " + "generating " + "individual " + "metrics.", + "items": { + "description": "Defines " + "a " + "log-based " + "custom " + "metric, " + "including " + "its " + "name, " + "type, " + "filter, " + "value " + "computation " + "strategy,\n" + "and " + "optional " + "grouping " + "fields.", + "properties": { + "group_by": { + "description": "Optional " + "fields " + "used " + "to " + "group " + "the " + "metric " + "series.", + "example": [ + "service", + "env", + ], + "items": {"type": "string"}, + "type": "array", + }, + "include": { + "description": "Datadog " + "filter " + "query " + "to " + "match " + "logs " + "for " + "metric " + "generation.", + "example": "service:billing", + "type": "string", + }, + "metric_type": { + "description": "Type " + "of " + "metric " + "to " + "create.", + "enum": [ + "count", + "gauge", + "distribution", + ], + "example": "count", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "GAUGE", + "DISTRIBUTION", + ], + }, + "name": { + "description": "Name " + "of " + "the " + "custom " + "metric " + "to " + "be " + "created.", + "example": "logs.processed", + "type": "string", + }, + "value": { + "description": "Specifies " + "how " + "the " + "value " + "of " + "the " + "generated " + "metric " + "is " + "computed.", + "oneOf": [ + { + "description": "Strategy " + "that " + "increments " + "a " + "generated " + "metric " + "by " + "one " + "for " + "each " + "matching " + "event.", + "properties": { + "strategy": { + "description": "Increments " + "the " + "metric " + "by " + "1 " + "for " + "each " + "matching " + "event.", + "enum": [ + "increment_by_one" + ], + "example": "increment_by_one", + "type": "string", + "x-enum-varnames": [ + "INCREMENT_BY_ONE" + ], + } + }, + "required": [ + "strategy" + ], + "type": "object", + }, + { + "description": "Strategy " + "that " + "increments " + "a " + "generated " + "metric " + "based " + "on " + "the " + "value " + "of " + "a " + "log " + "field.", + "properties": { + "field": { + "description": "Name " + "of " + "the " + "log " + "field " + "containing " + "the " + "numeric " + "value " + "to " + "increment " + "the " + "metric " + "by.", + "example": "errors", + "type": "string", + }, + "strategy": { + "description": "Uses " + "a " + "numeric " + "field " + "in " + "the " + "log " + "event " + "as " + "the " + "metric " + "increment.", + "enum": [ + "increment_by_field" + ], + "example": "increment_by_field", + "type": "string", + "x-enum-varnames": [ + "INCREMENT_BY_FIELD" + ], + }, + }, + "required": [ + "strategy", + "field", + ], + "type": "object", + }, + ], + }, + }, + "required": [ + "name", + "include", + "metric_type", + "value", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "generate_datadog_metrics", + "description": "The " + "processor " + "type. " + "Always " + "`generate_datadog_metrics`.", + "enum": ["generate_datadog_metrics"], + "example": "generate_datadog_metrics", + "type": "string", + "x-enum-varnames": [ + "GENERATE_DATADOG_METRICS" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "include", + "metrics", + ], + "type": "object", + }, + { + "description": "The " + "`sample` " + "processor " + "allows " + "probabilistic " + "sampling " + "of " + "logs " + "at " + "a " + "fixed " + "rate.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "sample-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "percentage": { + "description": "The " + "percentage " + "of " + "logs " + "to " + "sample.", + "example": 10.0, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Number " + "of " + "events " + "to " + "sample " + "(1 " + "in " + "N).", + "example": 10, + "format": "int64", + "minimum": 1, + "type": "integer", + }, + "type": { + "default": "sample", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sample`.", + "enum": ["sample"], + "example": "sample", + "type": "string", + "x-enum-varnames": ["SAMPLE"], + }, + }, + "required": ["id", "type", "include", "inputs"], + "type": "object", + }, + { + "description": "The " + "`parse_grok` " + "processor " + "extracts " + "structured " + "fields " + "from " + "unstructured " + "log " + "messages " + "using " + "Grok " + "patterns.", + "properties": { + "disable_library_rules": { + "default": False, + "description": "If " + "set " + "to " + "`true`, " + "disables " + "the " + "default " + "Grok " + "rules " + "provided " + "by " + "Datadog.", + "example": True, + "type": "boolean", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "parse-grok-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "rules": { + "description": "The " + "list " + "of " + "Grok " + "parsing " + "rules. " + "If " + "multiple " + "matching " + "rules " + "are " + "provided, " + "they " + "are " + "evaluated " + "in " + "order. " + "The " + "first " + "successful " + "match " + "is " + "applied.", + "items": { + "description": "A " + "Grok " + "parsing " + "rule " + "used " + "in " + "the " + "`parse_grok` " + "processor. " + "Each " + "rule " + "defines " + "how " + "to " + "extract " + "structured " + "fields\n" + "from " + "a " + "specific " + "log " + "field " + "using " + "Grok " + "patterns.", + "properties": { + "match_rules": { + "description": "A " + "list " + "of " + "Grok " + "parsing " + "rules " + "that " + "define " + "how " + "to " + "extract " + "fields " + "from " + "the " + "source " + "field.\n" + "Each " + "rule " + "must " + "contain " + "a " + "name " + "and " + "a " + "valid " + "Grok " + "pattern.", + "example": [ + { + "name": "MyParsingRule", + "rule": "%{word:user} " + "connected " + "on " + '%{date("MM/dd/yyyy"):date}', + } + ], + "items": { + "description": "Defines " + "a " + "Grok " + "parsing " + "rule, " + "which " + "extracts " + "structured " + "fields " + "from " + "log " + "content " + "using " + "named " + "Grok " + "patterns.\n" + "Each " + "rule " + "must " + "have " + "a " + "unique " + "name " + "and " + "a " + "valid " + "Datadog " + "Grok " + "pattern " + "that " + "will " + "be " + "applied " + "to " + "the " + "source " + "field.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "rule.", + "example": "MyParsingRule", + "type": "string", + }, + "rule": { + "description": "The " + "definition " + "of " + "the " + "Grok " + "rule.", + "example": "%{word:user} " + "connected " + "on " + '%{date("MM/dd/yyyy"):date}', + "type": "string", + }, + }, + "required": [ + "name", + "rule", + ], + "type": "object", + }, + "type": "array", + }, + "source": { + "description": "The " + "name " + "of " + "the " + "field " + "in " + "the " + "log " + "event " + "to " + "apply " + "the " + "Grok " + "rules " + "to.", + "example": "message", + "type": "string", + }, + "support_rules": { + "description": "A " + "list " + "of " + "Grok " + "helper " + "rules " + "that " + "can " + "be " + "referenced " + "by " + "the " + "parsing " + "rules.", + "example": [ + { + "name": "user", + "rule": "%{word:user.name}", + } + ], + "items": { + "description": "The " + "Grok " + "helper " + "rule " + "referenced " + "in " + "the " + "parsing " + "rules.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "Grok " + "helper " + "rule.", + "example": "user", + "type": "string", + }, + "rule": { + "description": "The " + "definition " + "of " + "the " + "Grok " + "helper " + "rule.", + "example": " " + "%{word:user.name}", + "type": "string", + }, + }, + "required": [ + "name", + "rule", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "source", + "match_rules", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "parse_grok", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`parse_grok`.", + "enum": ["parse_grok"], + "example": "parse_grok", + "type": "string", + "x-enum-varnames": ["PARSE_GROK"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "rules", + ], + "type": "object", + }, + { + "description": "The " + "`sensitive_data_scanner` " + "processor " + "detects " + "and " + "optionally " + "redacts " + "sensitive " + "data " + "in " + "log " + "events.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "sensitive-scanner", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "source:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "rules": { + "description": "A " + "list " + "of " + "rules " + "for " + "identifying " + "and " + "acting " + "on " + "sensitive " + "data " + "patterns.", + "items": { + "description": "Defines " + "a " + "rule " + "for " + "detecting " + "sensitive " + "data, " + "including " + "matching " + "pattern, " + "scope, " + "and " + "the " + "action " + "to " + "take.", + "properties": { + "keyword_options": { + "description": "Configuration " + "for " + "keywords " + "used " + "to " + "reinforce " + "sensitive " + "data " + "pattern " + "detection.", + "properties": { + "keywords": { + "description": "A " + "list " + "of " + "keywords " + "to " + "match " + "near " + "the " + "sensitive " + "pattern.", + "example": [ + "ssn", + "card", + "account", + ], + "items": { + "type": "string" + }, + "type": "array", + }, + "proximity": { + "description": "Maximum " + "number " + "of " + "tokens " + "between " + "a " + "keyword " + "and " + "a " + "sensitive " + "value " + "match.", + "example": 5, + "format": "int64", + "type": "integer", + }, + }, + "required": [ + "keywords", + "proximity", + ], + "type": "object", + }, + "name": { + "description": "A " + "name " + "identifying " + "the " + "rule.", + "example": "Redact " + "Credit " + "Card " + "Numbers", + "type": "string", + }, + "on_match": { + "description": "Defines " + "what " + "action " + "to " + "take " + "when " + "sensitive " + "data " + "is " + "matched.", + "oneOf": [ + { + "description": "Configuration " + "for " + "completely " + "redacting " + "matched " + "sensitive " + "data.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "completely " + "replaces " + "the " + "matched " + "sensitive " + "data " + "with " + "a " + "fixed " + "replacement " + "string " + "to " + "remove " + "all " + "visibility.", + "enum": [ + "redact" + ], + "example": "redact", + "type": "string", + "x-enum-varnames": [ + "REDACT" + ], + }, + "options": { + "description": "Configuration " + "for " + "fully " + "redacting " + "sensitive " + "data.", + "properties": { + "replace": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionRedactOptions` " + "`replace`.", + "example": "***", + "type": "string", + } + }, + "required": [ + "replace" + ], + "type": "object", + }, + }, + "required": [ + "action", + "options", + ], + "type": "object", + }, + { + "description": "Configuration " + "for " + "hashing " + "matched " + "sensitive " + "values.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "replaces " + "the " + "matched " + "sensitive " + "data " + "with " + "a " + "hashed " + "representation, " + "preserving " + "structure " + "while " + "securing " + "content.", + "enum": [ + "hash" + ], + "example": "hash", + "type": "string", + "x-enum-varnames": [ + "HASH" + ], + }, + "options": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionHash` " + "`options`.", + "type": "object", + }, + }, + "required": [ + "action" + ], + "type": "object", + }, + { + "description": "Configuration " + "for " + "partially " + "redacting " + "matched " + "sensitive " + "data.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "redacts " + "part " + "of " + "the " + "sensitive " + "data " + "while " + "preserving " + "a " + "configurable " + "number " + "of " + "characters, " + "typically " + "used " + "for " + "masking " + "purposes " + "(e.g., " + "show " + "last " + "4 " + "digits " + "of " + "a " + "credit " + "card).", + "enum": [ + "partial_redact" + ], + "example": "partial_redact", + "type": "string", + "x-enum-varnames": [ + "PARTIAL_REDACT" + ], + }, + "options": { + "description": "Controls " + "how " + "partial " + "redaction " + "is " + "applied, " + "including " + "character " + "count " + "and " + "direction.", + "properties": { + "characters": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionPartialRedactOptions` " + "`characters`.", + "example": 4, + "format": "int64", + "type": "integer", + }, + "direction": { + "description": "Indicates " + "whether " + "to " + "redact " + "characters " + "from " + "the " + "first " + "or " + "last " + "part " + "of " + "the " + "matched " + "value.", + "enum": [ + "first", + "last", + ], + "example": "last", + "type": "string", + "x-enum-varnames": [ + "FIRST", + "LAST", + ], + }, + }, + "required": [ + "characters", + "direction", + ], + "type": "object", + }, + }, + "required": [ + "action", + "options", + ], + "type": "object", + }, + ], + }, + "pattern": { + "description": "Pattern " + "detection " + "configuration " + "for " + "identifying " + "sensitive " + "data " + "using " + "either " + "a " + "custom " + "regex " + "or " + "a " + "library " + "reference.", + "oneOf": [ + { + "description": "Defines " + "a " + "custom " + "regex-based " + "pattern " + "for " + "identifying " + "sensitive " + "data " + "in " + "logs.", + "properties": { + "options": { + "description": "Options " + "for " + "defining " + "a " + "custom " + "regex " + "pattern.", + "properties": { + "rule": { + "description": "A " + "regular " + "expression " + "used " + "to " + "detect " + "sensitive " + "values. " + "Must " + "be " + "a " + "valid " + "regex.", + "example": "\\b\\d{16}\\b", + "type": "string", + } + }, + "required": [ + "rule" + ], + "type": "object", + }, + "type": { + "description": "Indicates " + "a " + "custom " + "regular " + "expression " + "is " + "used " + "for " + "matching.", + "enum": [ + "custom" + ], + "example": "custom", + "type": "string", + "x-enum-varnames": [ + "CUSTOM" + ], + }, + }, + "required": [ + "type", + "options", + ], + "type": "object", + }, + { + "description": "Specifies " + "a " + "pattern " + "from " + "Datadog’s " + "sensitive " + "data " + "detection " + "library " + "to " + "match " + "known " + "sensitive " + "data " + "types.", + "properties": { + "options": { + "description": "Options " + "for " + "selecting " + "a " + "predefined " + "library " + "pattern " + "and " + "enabling " + "keyword " + "support.", + "properties": { + "id": { + "description": "Identifier " + "for " + "a " + "predefined " + "pattern " + "from " + "the " + "sensitive " + "data " + "scanner " + "pattern " + "library.", + "example": "credit_card", + "type": "string", + }, + "use_recommended_keywords": { + "description": "Whether " + "to " + "augment " + "the " + "pattern " + "with " + "recommended " + "keywords " + "(optional).", + "type": "boolean", + }, + }, + "required": [ + "id" + ], + "type": "object", + }, + "type": { + "description": "Indicates " + "that " + "a " + "predefined " + "library " + "pattern " + "is " + "used.", + "enum": [ + "library" + ], + "example": "library", + "type": "string", + "x-enum-varnames": [ + "LIBRARY" + ], + }, + }, + "required": [ + "type", + "options", + ], + "type": "object", + }, + ], + }, + "scope": { + "description": "Determines " + "which " + "parts " + "of " + "the " + "log " + "the " + "pattern-matching " + "rule " + "should " + "be " + "applied " + "to.", + "oneOf": [ + { + "description": "Includes " + "only " + "specific " + "fields " + "for " + "sensitive " + "data " + "scanning.", + "properties": { + "options": { + "description": "Fields " + "to " + "which " + "the " + "scope " + "rule " + "applies.", + "properties": { + "fields": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` " + "`fields`.", + "example": [ + "" + ], + "items": { + "type": "string" + }, + "type": "array", + } + }, + "required": [ + "fields" + ], + "type": "object", + }, + "target": { + "description": "Applies " + "the " + "rule " + "only " + "to " + "included " + "fields.", + "enum": [ + "include" + ], + "example": "include", + "type": "string", + "x-enum-varnames": [ + "INCLUDE" + ], + }, + }, + "required": [ + "target", + "options", + ], + "type": "object", + }, + { + "description": "Excludes " + "specific " + "fields " + "from " + "sensitive " + "data " + "scanning.", + "properties": { + "options": { + "description": "Fields " + "to " + "which " + "the " + "scope " + "rule " + "applies.", + "properties": { + "fields": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` " + "`fields`.", + "example": [ + "" + ], + "items": { + "type": "string" + }, + "type": "array", + } + }, + "required": [ + "fields" + ], + "type": "object", + }, + "target": { + "description": "Excludes " + "specific " + "fields " + "from " + "processing.", + "enum": [ + "exclude" + ], + "example": "exclude", + "type": "string", + "x-enum-varnames": [ + "EXCLUDE" + ], + }, + }, + "required": [ + "target", + "options", + ], + "type": "object", + }, + { + "description": "Applies " + "scanning " + "across " + "all " + "available " + "fields.", + "properties": { + "target": { + "description": "Applies " + "the " + "rule " + "to " + "all " + "fields.", + "enum": [ + "all" + ], + "example": "all", + "type": "string", + "x-enum-varnames": [ + "ALL" + ], + } + }, + "required": [ + "target" + ], + "type": "object", + }, + ], + }, + "tags": { + "description": "Tags " + "assigned " + "to " + "this " + "rule " + "for " + "filtering " + "and " + "classification.", + "example": ["pii", "ccn"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": [ + "name", + "tags", + "pattern", + "scope", + "on_match", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "sensitive_data_scanner", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sensitive_data_scanner`.", + "enum": ["sensitive_data_scanner"], + "example": "sensitive_data_scanner", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER" + ], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "rules", + ], + "type": "object", + }, + { + "description": "The " + "`ocsf_mapper` " + "processor " + "transforms " + "logs " + "into " + "the " + "OCSF " + "schema " + "using " + "a " + "predefined " + "mapping " + "configuration.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline.", + "example": "ocsf-mapper-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "processor.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mappings": { + "description": "A " + "list " + "of " + "mapping " + "rules " + "to " + "convert " + "events " + "to " + "the " + "OCSF " + "format.", + "items": { + "description": "Defines " + "how " + "specific " + "events " + "are " + "transformed " + "to " + "OCSF " + "using " + "a " + "mapping " + "configuration.", + "properties": { + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "select " + "the " + "logs " + "that " + "this " + "mapping " + "should " + "apply " + "to.", + "example": "service:my-service", + "type": "string", + }, + "mapping": { + "description": "Defines " + "a " + "single " + "mapping " + "rule " + "for " + "transforming " + "logs " + "into " + "the " + "OCSF " + "schema.", + "oneOf": [ + { + "description": "Predefined " + "library " + "mappings " + "for " + "common " + "log " + "formats.", + "enum": [ + "CloudTrail " + "Account " + "Change", + "GCP " + "Cloud " + "Audit " + "CreateBucket", + "GCP " + "Cloud " + "Audit " + "CreateSink", + "GCP " + "Cloud " + "Audit " + "SetIamPolicy", + "GCP " + "Cloud " + "Audit " + "UpdateSink", + "Github " + "Audit " + "Log " + "API " + "Activity", + "Google " + "Workspace " + "Admin " + "Audit " + "addPrivilege", + "Microsoft " + "365 " + "Defender " + "Incident", + "Microsoft " + "365 " + "Defender " + "UserLoggedIn", + "Okta " + "System " + "Log " + "Authentication", + "Palo " + "Alto " + "Networks " + "Firewall " + "Traffic", + ], + "example": "CloudTrail " + "Account " + "Change", + "type": "string", + "x-enum-varnames": [ + "CLOUDTRAIL_ACCOUNT_CHANGE", + "GCP_CLOUD_AUDIT_CREATEBUCKET", + "GCP_CLOUD_AUDIT_CREATESINK", + "GCP_CLOUD_AUDIT_SETIAMPOLICY", + "GCP_CLOUD_AUDIT_UPDATESINK", + "GITHUB_AUDIT_LOG_API_ACTIVITY", + "GOOGLE_WORKSPACE_ADMIN_AUDIT_ADDPRIVILEGE", + "MICROSOFT_365_DEFENDER_INCIDENT", + "MICROSOFT_365_DEFENDER_USERLOGGEDIN", + "OKTA_SYSTEM_LOG_AUTHENTICATION", + "PALO_ALTO_NETWORKS_FIREWALL_TRAFFIC", + ], + } + ], + }, + }, + "required": ["include", "mapping"], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "ocsf_mapper", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`ocsf_mapper`.", + "enum": ["ocsf_mapper"], + "example": "ocsf_mapper", + "type": "string", + "x-enum-varnames": ["OCSF_MAPPER"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "mappings", + ], + "type": "object", + }, + { + "description": "The " + "`add_env_vars` " + "processor " + "adds " + "environment " + "variable " + "values " + "to " + "log " + "events.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "processor " + "in " + "the " + "pipeline.", + "example": "add-env-vars-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "add_env_vars", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`add_env_vars`.", + "enum": ["add_env_vars"], + "example": "add_env_vars", + "type": "string", + "x-enum-varnames": ["ADD_ENV_VARS"], + }, + "variables": { + "description": "A " + "list " + "of " + "environment " + "variable " + "mappings " + "to " + "apply " + "to " + "log " + "fields.", + "items": { + "description": "Defines " + "a " + "mapping " + "between " + "an " + "environment " + "variable " + "and " + "a " + "log " + "field.", + "properties": { + "field": { + "description": "The " + "target " + "field " + "in " + "the " + "log " + "event.", + "example": "log.environment.region", + "type": "string", + }, + "name": { + "description": "The " + "name " + "of " + "the " + "environment " + "variable " + "to " + "read.", + "example": "AWS_REGION", + "type": "string", + }, + }, + "required": ["field", "name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "variables", + ], + "type": "object", + }, + { + "description": "The " + "`dedupe` " + "processor " + "removes " + "duplicate " + "fields " + "in " + "log " + "events.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "log " + "field " + "paths " + "to " + "check " + "for " + "duplicates.", + "example": ["log.message", "log.error"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "dedupe-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "The " + "deduplication " + "mode " + "to " + "apply " + "to " + "the " + "fields.", + "enum": ["match", "ignore"], + "example": "match", + "type": "string", + "x-enum-varnames": ["MATCH", "IGNORE"], + }, + "type": { + "default": "dedupe", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`dedupe`.", + "enum": ["dedupe"], + "example": "dedupe", + "type": "string", + "x-enum-varnames": ["DEDUPE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "fields", + "mode", + ], + "type": "object", + }, + { + "description": "The " + "`enrichment_table` " + "processor " + "enriches " + "logs " + "using " + "a " + "static " + "CSV " + "file " + "or " + "GeoIP " + "database.", + "properties": { + "file": { + "description": "Defines " + "a " + "static " + "enrichment " + "table " + "loaded " + "from " + "a " + "CSV " + "file.", + "properties": { + "encoding": { + "description": "File " + "encoding " + "format.", + "properties": { + "delimiter": { + "description": "The " + "`encoding` " + "`delimiter`.", + "example": ",", + "type": "string", + }, + "includes_headers": { + "description": "The " + "`encoding` " + "`includes_headers`.", + "example": True, + "type": "boolean", + }, + "type": { + "description": "Specifies " + "the " + "encoding " + "format " + "(e.g., " + "CSV) " + "used " + "for " + "enrichment " + "tables.", + "enum": ["csv"], + "example": "csv", + "type": "string", + "x-enum-varnames": [ + "CSV" + ], + }, + }, + "required": [ + "type", + "delimiter", + "includes_headers", + ], + "type": "object", + }, + "key": { + "description": "Key " + "fields " + "used " + "to " + "look " + "up " + "enrichment " + "values.", + "items": { + "description": "Defines " + "how " + "to " + "map " + "log " + "fields " + "to " + "enrichment " + "table " + "columns " + "during " + "lookups.", + "properties": { + "column": { + "description": "The " + "`items` " + "`column`.", + "example": "user_id", + "type": "string", + }, + "comparison": { + "description": "Defines " + "how " + "to " + "compare " + "key " + "fields " + "for " + "enrichment " + "table " + "lookups.", + "enum": ["equals"], + "example": "equals", + "type": "string", + "x-enum-varnames": [ + "EQUALS" + ], + }, + "field": { + "description": "The " + "`items` " + "`field`.", + "example": "log.user.id", + "type": "string", + }, + }, + "required": [ + "column", + "comparison", + "field", + ], + "type": "object", + }, + "type": "array", + }, + "path": { + "description": "Path " + "to " + "the " + "CSV " + "file.", + "example": "/etc/enrichment/lookup.csv", + "type": "string", + }, + "schema": { + "description": "Schema " + "defining " + "column " + "names " + "and " + "their " + "types.", + "items": { + "description": "Describes " + "a " + "single " + "column " + "and " + "its " + "type " + "in " + "an " + "enrichment " + "table " + "schema.", + "properties": { + "column": { + "description": "The " + "`items` " + "`column`.", + "example": "region", + "type": "string", + }, + "type": { + "description": "Declares " + "allowed " + "data " + "types " + "for " + "enrichment " + "table " + "columns.", + "enum": [ + "string", + "boolean", + "integer", + "float", + "date", + "timestamp", + ], + "example": "string", + "type": "string", + "x-enum-varnames": [ + "STRING", + "BOOLEAN", + "INTEGER", + "FLOAT", + "DATE", + "TIMESTAMP", + ], + }, + }, + "required": [ + "column", + "type", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "encoding", + "key", + "path", + "schema", + ], + "type": "object", + }, + "geoip": { + "description": "Uses " + "a " + "GeoIP " + "database " + "to " + "enrich " + "logs " + "based " + "on " + "an " + "IP " + "field.", + "properties": { + "key_field": { + "description": "Path " + "to " + "the " + "IP " + "field " + "in " + "the " + "log.", + "example": "log.source.ip", + "type": "string", + }, + "locale": { + "description": "Locale " + "used " + "to " + "resolve " + "geographical " + "names.", + "example": "en", + "type": "string", + }, + "path": { + "description": "Path " + "to " + "the " + "GeoIP " + "database " + "file.", + "example": "/etc/geoip/GeoLite2-City.mmdb", + "type": "string", + }, + }, + "required": [ + "key_field", + "locale", + "path", + ], + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "enrichment-table-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "source:my-source", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["add-fields-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "target": { + "description": "Path " + "where " + "enrichment " + "results " + "should " + "be " + "stored " + "in " + "the " + "log.", + "example": "enriched.geoip", + "type": "string", + }, + "type": { + "default": "enrichment_table", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`enrichment_table`.", + "enum": ["enrichment_table"], + "example": "enrichment_table", + "type": "string", + "x-enum-varnames": ["ENRICHMENT_TABLE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "target", + ], + "type": "object", + }, + { + "description": "The " + "`reduce` " + "processor " + "aggregates " + "and " + "merges " + "logs " + "based " + "on " + "matching " + "keys " + "and " + "merge " + "strategies.", + "properties": { + "group_by": { + "description": "A " + "list " + "of " + "fields " + "used " + "to " + "group " + "log " + "events " + "for " + "merging.", + "example": [ + "log.user.id", + "log.device.id", + ], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "reduce-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "env:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "merge_strategies": { + "description": "List " + "of " + "merge " + "strategies " + "defining " + "how " + "values " + "from " + "grouped " + "events " + "should " + "be " + "combined.", + "items": { + "description": "Defines " + "how " + "a " + "specific " + "field " + "should " + "be " + "merged " + "across " + "grouped " + "events.", + "properties": { + "path": { + "description": "The " + "field " + "path " + "in " + "the " + "log " + "event.", + "example": "log.user.roles", + "type": "string", + }, + "strategy": { + "description": "The " + "merge " + "strategy " + "to " + "apply.", + "enum": [ + "discard", + "retain", + "sum", + "max", + "min", + "array", + "concat", + "concat_newline", + "concat_raw", + "shortest_array", + "longest_array", + "flat_unique", + ], + "example": "flat_unique", + "type": "string", + "x-enum-varnames": [ + "DISCARD", + "RETAIN", + "SUM", + "MAX", + "MIN", + "ARRAY", + "CONCAT", + "CONCAT_NEWLINE", + "CONCAT_RAW", + "SHORTEST_ARRAY", + "LONGEST_ARRAY", + "FLAT_UNIQUE", + ], + }, + }, + "required": ["path", "strategy"], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "reduce", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`reduce`.", + "enum": ["reduce"], + "example": "reduce", + "type": "string", + "x-enum-varnames": ["REDUCE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "group_by", + "merge_strategies", + ], + "type": "object", + }, + { + "description": "The " + "`throttle` " + "processor " + "limits " + "the " + "number " + "of " + "events " + "that " + "pass " + "through " + "over " + "a " + "given " + "time " + "window.", + "properties": { + "group_by": { + "description": "Optional " + "list " + "of " + "fields " + "used " + "to " + "group " + "events " + "before " + "the " + "threshold " + "has " + "been " + "reached.", + "example": ["log.user.id"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "throttle-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "env:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "threshold": { + "description": "the " + "number " + "of " + "events " + "allowed " + "in " + "a " + "given " + "time " + "window. " + "Events " + "sent " + "after " + "the " + "threshold " + "has " + "been " + "reached, " + "are " + "dropped.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + "type": { + "default": "throttle", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`throttle`.", + "enum": ["throttle"], + "example": "throttle", + "type": "string", + "x-enum-varnames": ["THROTTLE"], + }, + "window": { + "description": "The " + "time " + "window " + "in " + "seconds " + "over " + "which " + "the " + "threshold " + "applies.", + "example": 60.0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "threshold", + "window", + ], + "type": "object", + }, + { + "description": "The " + "`custom_processor` " + "processor " + "transforms " + "events " + "using " + "[Vector " + "Remap " + "Language " + "(VRL)](https://vector.dev/docs/reference/vrl/) " + "scripts " + "with " + "advanced " + "filtering " + "capabilities.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "remap-vrl-processor", + "type": "string", + }, + "include": { + "default": "*", + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets. " + "This " + "field " + "should " + "always " + "be " + "set " + "to " + "`*` " + "for " + "the " + "custom_processor " + "processor.", + "example": "*", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "remaps": { + "description": "Array " + "of " + "VRL " + "remap " + "rules.", + "items": { + "description": "Defines " + "a " + "single " + "VRL " + "remap " + "rule " + "with " + "its " + "own " + "filtering " + "and " + "transformation " + "logic.", + "properties": { + "drop_on_error": { + "description": "Whether " + "to " + "drop " + "events " + "that " + "caused " + "errors " + "during " + "processing.", + "example": False, + "type": "boolean", + }, + "enabled": { + "description": "Whether " + "this " + "remap " + "rule " + "is " + "enabled.", + "example": True, + "type": "boolean", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "filter " + "events " + "for " + "this " + "specific " + "remap " + "rule.", + "example": "service:web", + "type": "string", + }, + "name": { + "description": "A " + "descriptive " + "name " + "for " + "this " + "remap " + "rule.", + "example": "Parse " + "JSON " + "from " + "message " + "field", + "type": "string", + }, + "source": { + "description": "The " + "VRL " + "script " + "source " + "code " + "that " + "defines " + "the " + "processing " + "logic.", + "example": ". " + "= " + "parse_json!(.message)", + "type": "string", + }, + }, + "required": [ + "include", + "name", + "source", + "enabled", + "drop_on_error", + ], + "type": "object", + }, + "minItems": 1, + "type": "array", + }, + "type": { + "default": "custom_processor", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`custom_processor`.", + "enum": ["custom_processor"], + "example": "custom_processor", + "type": "string", + "x-enum-varnames": ["CUSTOM_PROCESSOR"], + }, + }, + "required": [ + "id", + "type", + "include", + "remaps", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`datadog_tags` " + "processor " + "includes " + "or " + "excludes " + "specific " + "Datadog " + "tags " + "in " + "your " + "logs.", + "properties": { + "action": { + "description": "The " + "action " + "to " + "take " + "on " + "tags " + "with " + "matching " + "keys.", + "enum": ["include", "exclude"], + "example": "include", + "type": "string", + "x-enum-varnames": [ + "INCLUDE", + "EXCLUDE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "datadog-tags-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "keys": { + "description": "A list of tag keys.", + "example": [ + "env", + "service", + "version", + ], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "The processing mode.", + "enum": ["filter"], + "example": "filter", + "type": "string", + "x-enum-varnames": ["FILTER"], + }, + "type": { + "default": "datadog_tags", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_tags`.", + "enum": ["datadog_tags"], + "example": "datadog_tags", + "type": "string", + "x-enum-varnames": ["DATADOG_TAGS"], + }, + }, + "required": [ + "id", + "type", + "include", + "mode", + "action", + "keys", + "inputs", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "sources": { + "description": "A " + "list " + "of " + "configured " + "data " + "sources " + "for " + "the " + "pipeline.", + "example": [ + {"id": "datadog-agent-source", "type": "datadog_agent"} + ], + "items": { + "description": "A data source for the pipeline.", + "oneOf": [ + { + "description": "The " + "`kafka` " + "source " + "ingests " + "data " + "from " + "Apache " + "Kafka " + "topics.", + "properties": { + "group_id": { + "description": "Consumer " + "group " + "ID " + "used " + "by " + "the " + "Kafka " + "client.", + "example": "consumer-group-0", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "kafka-source", + "type": "string", + }, + "librdkafka_options": { + "description": "Optional " + "list " + "of " + "advanced " + "Kafka " + "client " + "configuration " + "options, " + "defined " + "as " + "key-value " + "pairs.", + "items": { + "description": "Represents " + "a " + "key-value " + "pair " + "used " + "to " + "configure " + "low-level " + "`librdkafka` " + "client " + "options " + "for " + "Kafka " + "sources, " + "such " + "as " + "timeouts, " + "buffer " + "sizes, " + "and " + "security " + "settings.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "`librdkafka` " + "configuration " + "option " + "to " + "set.", + "example": "fetch.message.max.bytes", + "type": "string", + }, + "value": { + "description": "The " + "value " + "assigned " + "to " + "the " + "specified " + "`librdkafka` " + "configuration " + "option.", + "example": "1048576", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "sasl": { + "description": "Specifies " + "the " + "SASL " + "mechanism " + "for " + "authenticating " + "with " + "a " + "Kafka " + "cluster.", + "properties": { + "mechanism": { + "description": "SASL " + "mechanism " + "used " + "for " + "Kafka " + "authentication.", + "enum": [ + "PLAIN", + "SCRAM-SHA-256", + "SCRAM-SHA-512", + ], + "type": "string", + "x-enum-varnames": [ + "PLAIN", + "SCRAMNOT_SHANOT_256", + "SCRAMNOT_SHANOT_512", + ], + } + }, + "type": "object", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "topics": { + "description": "A " + "list " + "of " + "Kafka " + "topic " + "names " + "to " + "subscribe " + "to. " + "The " + "source " + "ingests " + "messages " + "from " + "each " + "topic " + "specified.", + "example": ["topic1", "topic2"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "kafka", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`kafka`.", + "enum": ["kafka"], + "example": "kafka", + "type": "string", + "x-enum-varnames": ["KAFKA"], + }, + }, + "required": [ + "id", + "type", + "group_id", + "topics", + ], + "type": "object", + }, + { + "description": "The " + "`datadog_agent` " + "source " + "collects " + "logs " + "from " + "the " + "Datadog " + "Agent.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "datadog-agent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "datadog_agent", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_agent`.", + "enum": ["datadog_agent"], + "example": "datadog_agent", + "type": "string", + "x-enum-varnames": ["DATADOG_AGENT"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`splunk_tcp` " + "source " + "receives " + "logs " + "from " + "a " + "Splunk " + "Universal " + "Forwarder " + "over " + "TCP.\n" + "TLS " + "is " + "supported " + "for " + "secure " + "transmission.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-tcp-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "splunk_tcp", + "description": "The " + "source " + "type. " + "Always " + "`splunk_tcp`.", + "enum": ["splunk_tcp"], + "example": "splunk_tcp", + "type": "string", + "x-enum-varnames": ["SPLUNK_TCP"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`splunk_hec` " + "source " + "implements " + "the " + "Splunk " + "HTTP " + "Event " + "Collector " + "(HEC) " + "API.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-hec-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "splunk_hec", + "description": "The " + "source " + "type. " + "Always " + "`splunk_hec`.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`amazon_s3` " + "source " + "ingests " + "logs " + "from " + "an " + "Amazon " + "S3 " + "bucket.\n" + "It " + "supports " + "AWS " + "authentication " + "and " + "TLS " + "encryption.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "aws-s3-source", + "type": "string", + }, + "region": { + "description": "AWS " + "region " + "where " + "the " + "S3 " + "bucket " + "resides.", + "example": "us-east-1", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_s3", + "description": "The " + "source " + "type. " + "Always " + "`amazon_s3`.", + "enum": ["amazon_s3"], + "example": "amazon_s3", + "type": "string", + "x-enum-varnames": ["AMAZON_S3"], + }, + }, + "required": ["id", "type", "region"], + "type": "object", + }, + { + "description": "The " + "`fluentd` " + "source " + "ingests " + "logs " + "from " + "a " + "Fluentd-compatible " + "service.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "fluent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "fluentd", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`fluentd.", + "enum": ["fluentd"], + "example": "fluentd", + "type": "string", + "x-enum-varnames": ["FLUENTD"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`fluent_bit` " + "source " + "ingests " + "logs " + "from " + "Fluent " + "Bit.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "fluent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "fluent_bit", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`fluent_bit`.", + "enum": ["fluent_bit"], + "example": "fluent_bit", + "type": "string", + "x-enum-varnames": ["FLUENT_BIT"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`http_server` " + "source " + "collects " + "logs " + "over " + "HTTP " + "POST " + "from " + "external " + "services.", + "properties": { + "auth_strategy": { + "description": "HTTP " + "authentication " + "method.", + "enum": ["none", "plain"], + "example": "plain", + "type": "string", + "x-enum-varnames": ["NONE", "PLAIN"], + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "Unique " + "ID " + "for " + "the " + "HTTP " + "server " + "source.", + "example": "http-server-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "http_server", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`http_server`.", + "enum": ["http_server"], + "example": "http_server", + "type": "string", + "x-enum-varnames": ["HTTP_SERVER"], + }, + }, + "required": [ + "id", + "type", + "auth_strategy", + "decoding", + ], + "type": "object", + }, + { + "description": "The " + "`sumo_logic` " + "source " + "receives " + "logs " + "from " + "Sumo " + "Logic " + "collectors.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "sumo-logic-source", + "type": "string", + }, + "type": { + "default": "sumo_logic", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sumo_logic`.", + "enum": ["sumo_logic"], + "example": "sumo_logic", + "type": "string", + "x-enum-varnames": ["SUMO_LOGIC"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`rsyslog` " + "source " + "listens " + "for " + "logs " + "over " + "TCP " + "or " + "UDP " + "from " + "an " + "`rsyslog` " + "server " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "rsyslog-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "by " + "the " + "syslog " + "source " + "to " + "receive " + "messages.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "rsyslog", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rsyslog`.", + "enum": ["rsyslog"], + "example": "rsyslog", + "type": "string", + "x-enum-varnames": ["RSYSLOG"], + }, + }, + "required": ["id", "type", "mode"], + "type": "object", + }, + { + "description": "The " + "`syslog_ng` " + "source " + "listens " + "for " + "logs " + "over " + "TCP " + "or " + "UDP " + "from " + "a " + "`syslog-ng` " + "server " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "syslog-ng-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "by " + "the " + "syslog " + "source " + "to " + "receive " + "messages.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "syslog_ng", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`syslog_ng`.", + "enum": ["syslog_ng"], + "example": "syslog_ng", + "type": "string", + "x-enum-varnames": ["SYSLOG_NG"], + }, + }, + "required": ["id", "type", "mode"], + "type": "object", + }, + { + "description": "The " + "`amazon_data_firehose` " + "source " + "ingests " + "logs " + "from " + "AWS " + "Data " + "Firehose.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "amazon-firehose-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_data_firehose", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`amazon_data_firehose`.", + "enum": ["amazon_data_firehose"], + "example": "amazon_data_firehose", + "type": "string", + "x-enum-varnames": [ + "AMAZON_DATA_FIREHOSE" + ], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`google_pubsub` " + "source " + "ingests " + "logs " + "from " + "a " + "Google " + "Cloud " + "Pub/Sub " + "subscription.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "google-pubsub-source", + "type": "string", + }, + "project": { + "description": "The " + "GCP " + "project " + "ID " + "that " + "owns " + "the " + "Pub/Sub " + "subscription.", + "example": "my-gcp-project", + "type": "string", + }, + "subscription": { + "description": "The " + "Pub/Sub " + "subscription " + "name " + "from " + "which " + "messages " + "are " + "consumed.", + "example": "logs-subscription", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "google_pubsub", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_pubsub`.", + "enum": ["google_pubsub"], + "example": "google_pubsub", + "type": "string", + "x-enum-varnames": ["GOOGLE_PUBSUB"], + }, + }, + "required": [ + "id", + "type", + "auth", + "decoding", + "project", + "subscription", + ], + "type": "object", + }, + { + "description": "The " + "`http_client` " + "source " + "scrapes " + "logs " + "from " + "HTTP " + "endpoints " + "at " + "regular " + "intervals.", + "properties": { + "auth_strategy": { + "description": "Optional " + "authentication " + "strategy " + "for " + "HTTP " + "requests.", + "enum": ["basic", "bearer"], + "example": "basic", + "type": "string", + "x-enum-varnames": ["BASIC", "BEARER"], + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "http-client-source", + "type": "string", + }, + "scrape_interval_secs": { + "description": "The " + "interval " + "(in " + "seconds) " + "between " + "HTTP " + "scrape " + "requests.", + "example": 60, + "format": "int64", + "type": "integer", + }, + "scrape_timeout_secs": { + "description": "The " + "timeout " + "(in " + "seconds) " + "for " + "each " + "scrape " + "request.", + "example": 10, + "format": "int64", + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "http_client", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`http_client`.", + "enum": ["http_client"], + "example": "http_client", + "type": "string", + "x-enum-varnames": ["HTTP_CLIENT"], + }, + }, + "required": ["id", "type", "decoding"], + "type": "object", + }, + { + "description": "The " + "`logstash` " + "source " + "ingests " + "logs " + "from " + "a " + "Logstash " + "forwarder.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "logstash-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "logstash", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`logstash`.", + "enum": ["logstash"], + "example": "logstash", + "type": "string", + "x-enum-varnames": ["LOGSTASH"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`socket` " + "source " + "ingests " + "logs " + "over " + "TCP " + "or " + "UDP.", + "properties": { + "framing": { + "description": "Framing " + "method " + "configuration " + "for " + "the " + "socket " + "source.", + "oneOf": [ + { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "newline " + "character.", + "properties": { + "method": { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "newline " + "character.", + "enum": [ + "newline_delimited" + ], + "example": "newline_delimited", + "type": "string", + "x-enum-varnames": [ + "NEWLINE_DELIMITED" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "are " + "passed " + "through " + "as-is " + "according " + "to " + "the " + "underlying " + "I/O " + "boundaries " + "(for " + "example, " + "split " + "between " + "messages " + "or " + "stream " + "segments).", + "properties": { + "method": { + "description": "Byte " + "frames " + "are " + "passed " + "through " + "as-is " + "according " + "to " + "the " + "underlying " + "I/O " + "boundaries " + "(for " + "example, " + "split " + "between " + "messages " + "or " + "stream " + "segments).", + "enum": ["bytes"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "chosen " + "character.", + "properties": { + "delimiter": { + "description": "A " + "single " + "ASCII " + "character " + "used " + "to " + "delimit " + "events.", + "example": "|", + "maxLength": 1, + "minLength": 1, + "type": "string", + }, + "method": { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "chosen " + "character.", + "enum": [ + "character_delimited" + ], + "example": "character_delimited", + "type": "string", + "x-enum-varnames": [ + "CHARACTER_DELIMITED" + ], + }, + }, + "required": [ + "method", + "delimiter", + ], + "type": "object", + }, + { + "description": "Byte " + "frames " + "according " + "to " + "the " + "octet " + "counting " + "format " + "as " + "per " + "RFC6587.", + "properties": { + "method": { + "description": "Byte " + "frames " + "according " + "to " + "the " + "octet " + "counting " + "format " + "as " + "per " + "RFC6587.", + "enum": [ + "octet_counting" + ], + "example": "octet_counting", + "type": "string", + "x-enum-varnames": [ + "OCTET_COUNTING" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "which " + "are " + "chunked " + "GELF " + "messages.", + "properties": { + "method": { + "description": "Byte " + "frames " + "which " + "are " + "chunked " + "GELF " + "messages.", + "enum": [ + "chunked_gelf" + ], + "example": "chunked_gelf", + "type": "string", + "x-enum-varnames": [ + "CHUNKED_GELF" + ], + } + }, + "required": ["method"], + "type": "object", + }, + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "socket-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "to " + "receive " + "logs.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "socket", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`socket`.", + "enum": ["socket"], + "example": "socket", + "type": "string", + "x-enum-varnames": ["SOCKET"], + }, + }, + "required": ["id", "type", "mode", "framing"], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "required": ["sources", "destinations"], + "type": "object", + }, + "name": { + "description": "Name of the pipeline.", + "example": "Main Observability Pipeline", + "type": "string", + }, + }, + "required": ["name", "config"], + "type": "object", + }, + "type": { + "default": "pipelines", + "description": "The resource type " + "identifier. For " + "pipeline resources, " + "this should always be " + "set to `pipelines`.", + "example": "pipelines", + "type": "string", + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "VALIDATEPIPELINECONFIG_REQUEST_BODY_SCHEMA": { + "description": "Input schema representing an observability pipeline configuration. " + "Used in create and validate requests.", + "properties": { + "data": { + "description": "Contains the the pipeline configuration.", + "properties": { + "attributes": { + "description": "Defines the " + "pipeline’s name " + "and its " + "components " + "(sources, " + "processors, and " + "destinations).", + "properties": { + "config": { + "description": "Specifies " + "the " + "pipeline's " + "configuration, " + "including " + "its " + "sources, " + "processors, " + "and " + "destinations.", + "properties": { + "destinations": { + "description": "A " + "list " + "of " + "destination " + "components " + "where " + "processed " + "logs " + "are " + "sent.", + "example": [ + { + "id": "datadog-logs-destination", + "inputs": ["filter-processor"], + "type": "datadog_logs", + } + ], + "items": { + "description": "A destination for the pipeline.", + "oneOf": [ + { + "description": "The " + "`datadog_logs` " + "destination " + "forwards " + "logs " + "to " + "Datadog " + "Log " + "Management.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "datadog-logs-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "datadog_logs", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_logs`.", + "enum": ["datadog_logs"], + "example": "datadog_logs", + "type": "string", + "x-enum-varnames": ["DATADOG_LOGS"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`amazon_s3` " + "destination " + "sends " + "your " + "logs " + "in " + "Datadog-rehydratable " + "format " + "to " + "an " + "Amazon " + "S3 " + "bucket " + "for " + "archiving.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "bucket": { + "description": "S3 bucket name.", + "example": "error-logs", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "amazon-s3-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "key_prefix": { + "description": "Optional " + "prefix " + "for " + "object " + "keys.", + "type": "string", + }, + "region": { + "description": "AWS " + "region " + "of " + "the " + "S3 " + "bucket.", + "example": "us-east-1", + "type": "string", + }, + "storage_class": { + "description": "S3 storage class.", + "enum": [ + "STANDARD", + "REDUCED_REDUNDANCY", + "INTELLIGENT_TIERING", + "STANDARD_IA", + "EXPRESS_ONEZONE", + "ONEZONE_IA", + "GLACIER", + "GLACIER_IR", + "DEEP_ARCHIVE", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "REDUCED_REDUNDANCY", + "INTELLIGENT_TIERING", + "STANDARD_IA", + "EXPRESS_ONEZONE", + "ONEZONE_IA", + "GLACIER", + "GLACIER_IR", + "DEEP_ARCHIVE", + ], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_s3", + "description": "The " + "destination " + "type. " + "Always " + "`amazon_s3`.", + "enum": ["amazon_s3"], + "example": "amazon_s3", + "type": "string", + "x-enum-varnames": ["AMAZON_S3"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "region", + "storage_class", + ], + "type": "object", + }, + { + "description": "The " + "`google_cloud_storage` " + "destination " + "stores " + "logs " + "in " + "a " + "Google " + "Cloud " + "Storage " + "(GCS) " + "bucket.\n" + "It " + "requires " + "a " + "bucket " + "name, " + "GCP " + "authentication, " + "and " + "metadata " + "fields.", + "properties": { + "acl": { + "description": "Access " + "control " + "list " + "setting " + "for " + "objects " + "written " + "to " + "the " + "bucket.", + "enum": [ + "private", + "project-private", + "public-read", + "authenticated-read", + "bucket-owner-read", + "bucket-owner-full-control", + ], + "example": "private", + "type": "string", + "x-enum-varnames": [ + "PRIVATE", + "PROJECTNOT_PRIVATE", + "PUBLICNOT_READ", + "AUTHENTICATEDNOT_READ", + "BUCKETNOT_OWNERNOT_READ", + "BUCKETNOT_OWNERNOT_FULLNOT_CONTROL", + ], + }, + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "bucket": { + "description": "Name " + "of " + "the " + "GCS " + "bucket.", + "example": "error-logs", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "gcs-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "key_prefix": { + "description": "Optional " + "prefix " + "for " + "object " + "keys " + "within " + "the " + "GCS " + "bucket.", + "type": "string", + }, + "metadata": { + "description": "Custom " + "metadata " + "to " + "attach " + "to " + "each " + "object " + "uploaded " + "to " + "the " + "GCS " + "bucket.", + "items": { + "description": "A " + "custom " + "metadata " + "entry.", + "properties": { + "name": { + "description": "The " + "metadata " + "key.", + "example": "environment", + "type": "string", + }, + "value": { + "description": "The " + "metadata " + "value.", + "example": "production", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "storage_class": { + "description": "Storage " + "class " + "used " + "for " + "objects " + "stored " + "in " + "GCS.", + "enum": [ + "STANDARD", + "NEARLINE", + "COLDLINE", + "ARCHIVE", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "NEARLINE", + "COLDLINE", + "ARCHIVE", + ], + }, + "type": { + "default": "google_cloud_storage", + "description": "The " + "destination " + "type. " + "Always " + "`google_cloud_storage`.", + "enum": ["google_cloud_storage"], + "example": "google_cloud_storage", + "type": "string", + "x-enum-varnames": [ + "GOOGLE_CLOUD_STORAGE" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "auth", + "storage_class", + "acl", + ], + "type": "object", + }, + { + "description": "The " + "`splunk_hec` " + "destination " + "forwards " + "logs " + "to " + "Splunk " + "using " + "the " + "HTTP " + "Event " + "Collector " + "(HEC).", + "properties": { + "auto_extract_timestamp": { + "description": "If " + "`true`, " + "Splunk " + "tries " + "to " + "extract " + "timestamps " + "from " + "incoming " + "log " + "events.\n" + "If " + "`false`, " + "Splunk " + "assigns " + "the " + "time " + "the " + "event " + "was " + "received.", + "example": True, + "type": "boolean", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-hec-destination", + "type": "string", + }, + "index": { + "description": "Optional " + "name " + "of " + "the " + "Splunk " + "index " + "where " + "logs " + "are " + "written.", + "example": "main", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "sourcetype": { + "description": "The " + "Splunk " + "sourcetype " + "to " + "assign " + "to " + "log " + "events.", + "example": "custom_sourcetype", + "type": "string", + }, + "type": { + "default": "splunk_hec", + "description": "The " + "destination " + "type. " + "Always " + "`splunk_hec`.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`sumo_logic` " + "destination " + "forwards " + "logs " + "to " + "Sumo " + "Logic.", + "properties": { + "encoding": { + "description": "The " + "output " + "encoding " + "format.", + "enum": [ + "json", + "raw_message", + "logfmt", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + "LOGFMT", + ], + }, + "header_custom_fields": { + "description": "A " + "list " + "of " + "custom " + "headers " + "to " + "include " + "in " + "the " + "request " + "to " + "Sumo " + "Logic.", + "items": { + "description": "Single " + "key-value " + "pair " + "used " + "as " + "a " + "custom " + "log " + "header " + "for " + "Sumo " + "Logic.", + "properties": { + "name": { + "description": "The " + "header " + "field " + "name.", + "example": "X-Sumo-Category", + "type": "string", + }, + "value": { + "description": "The " + "header " + "field " + "value.", + "example": "my-app-logs", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "header_host_name": { + "description": "Optional " + "override " + "for " + "the " + "host " + "name " + "header.", + "example": "host-123", + "type": "string", + }, + "header_source_category": { + "description": "Optional " + "override " + "for " + "the " + "source " + "category " + "header.", + "example": "source-category", + "type": "string", + }, + "header_source_name": { + "description": "Optional " + "override " + "for " + "the " + "source " + "name " + "header.", + "example": "source-name", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sumo-logic-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "sumo_logic", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sumo_logic`.", + "enum": ["sumo_logic"], + "example": "sumo_logic", + "type": "string", + "x-enum-varnames": ["SUMO_LOGIC"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`elasticsearch` " + "destination " + "writes " + "logs " + "to " + "an " + "Elasticsearch " + "cluster.", + "properties": { + "api_version": { + "description": "The " + "Elasticsearch " + "API " + "version " + "to " + "use. " + "Set " + "to " + "`auto` " + "to " + "auto-detect.", + "enum": ["auto", "v6", "v7", "v8"], + "example": "auto", + "type": "string", + "x-enum-varnames": [ + "AUTO", + "V6", + "V7", + "V8", + ], + }, + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to " + "in " + "Elasticsearch.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "elasticsearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "elasticsearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`elasticsearch`.", + "enum": ["elasticsearch"], + "example": "elasticsearch", + "type": "string", + "x-enum-varnames": ["ELASTICSEARCH"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`rsyslog` " + "destination " + "forwards " + "logs " + "to " + "an " + "external " + "`rsyslog` " + "server " + "over " + "TCP " + "or " + "UDP " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "rsyslog-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "keepalive": { + "description": "Optional " + "socket " + "keepalive " + "duration " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "rsyslog", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rsyslog`.", + "enum": ["rsyslog"], + "example": "rsyslog", + "type": "string", + "x-enum-varnames": ["RSYSLOG"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`syslog_ng` " + "destination " + "forwards " + "logs " + "to " + "an " + "external " + "`syslog-ng` " + "server " + "over " + "TCP " + "or " + "UDP " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "syslog-ng-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "keepalive": { + "description": "Optional " + "socket " + "keepalive " + "duration " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "syslog_ng", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`syslog_ng`.", + "enum": ["syslog_ng"], + "example": "syslog_ng", + "type": "string", + "x-enum-varnames": ["SYSLOG_NG"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`azure_storage` " + "destination " + "forwards " + "logs " + "to " + "an " + "Azure " + "Blob " + "Storage " + "container.", + "properties": { + "blob_prefix": { + "description": "Optional " + "prefix " + "for " + "blobs " + "written " + "to " + "the " + "container.", + "example": "logs/", + "type": "string", + }, + "container_name": { + "description": "The " + "name " + "of " + "the " + "Azure " + "Blob " + "Storage " + "container " + "to " + "store " + "logs " + "in.", + "example": "my-log-container", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "azure-storage-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["processor-id"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "azure_storage", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`azure_storage`.", + "enum": ["azure_storage"], + "example": "azure_storage", + "type": "string", + "x-enum-varnames": ["AZURE_STORAGE"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "container_name", + ], + "type": "object", + }, + { + "description": "The " + "`microsoft_sentinel` " + "destination " + "forwards " + "logs " + "to " + "Microsoft " + "Sentinel.", + "properties": { + "client_id": { + "description": "Azure " + "AD " + "client " + "ID " + "used " + "for " + "authentication.", + "example": "a1b2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + }, + "dcr_immutable_id": { + "description": "The " + "immutable " + "ID " + "of " + "the " + "Data " + "Collection " + "Rule " + "(DCR).", + "example": "dcr-uuid-1234", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sentinel-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "table": { + "description": "The " + "name " + "of " + "the " + "Log " + "Analytics " + "table " + "where " + "logs " + "are " + "sent.", + "example": "CustomLogsTable", + "type": "string", + }, + "tenant_id": { + "description": "Azure AD tenant ID.", + "example": "abcdef12-3456-7890-abcd-ef1234567890", + "type": "string", + }, + "type": { + "default": "microsoft_sentinel", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`microsoft_sentinel`.", + "enum": ["microsoft_sentinel"], + "example": "microsoft_sentinel", + "type": "string", + "x-enum-varnames": [ + "MICROSOFT_SENTINEL" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "client_id", + "tenant_id", + "dcr_immutable_id", + "table", + ], + "type": "object", + }, + { + "description": "The " + "`google_chronicle` " + "destination " + "sends " + "logs " + "to " + "Google " + "Chronicle.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "customer_id": { + "description": "The " + "Google " + "Chronicle " + "customer " + "ID.", + "example": "abcdefg123456789", + "type": "string", + }, + "encoding": { + "description": "The " + "encoding " + "format " + "for " + "the " + "logs " + "sent " + "to " + "Chronicle.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "google-chronicle-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "log_type": { + "description": "The " + "log " + "type " + "metadata " + "associated " + "with " + "the " + "Chronicle " + "destination.", + "example": "nginx_logs", + "type": "string", + }, + "type": { + "default": "google_chronicle", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_chronicle`.", + "enum": ["google_chronicle"], + "example": "google_chronicle", + "type": "string", + "x-enum-varnames": ["GOOGLE_CHRONICLE"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "auth", + "customer_id", + ], + "type": "object", + }, + { + "description": "The " + "`new_relic` " + "destination " + "sends " + "logs " + "to " + "the " + "New " + "Relic " + "platform.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "new-relic-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "The New Relic region.", + "enum": ["us", "eu"], + "example": "us", + "type": "string", + "x-enum-varnames": ["US", "EU"], + }, + "type": { + "default": "new_relic", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`new_relic`.", + "enum": ["new_relic"], + "example": "new_relic", + "type": "string", + "x-enum-varnames": ["NEW_RELIC"], + }, + }, + "required": ["id", "type", "inputs", "region"], + "type": "object", + }, + { + "description": "The " + "`sentinel_one` " + "destination " + "sends " + "logs " + "to " + "SentinelOne.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sentinelone-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "The " + "SentinelOne " + "region " + "to " + "send " + "logs " + "to.", + "enum": [ + "us", + "eu", + "ca", + "data_set_us", + ], + "example": "us", + "type": "string", + "x-enum-varnames": [ + "US", + "EU", + "CA", + "DATA_SET_US", + ], + }, + "type": { + "default": "sentinel_one", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sentinel_one`.", + "enum": ["sentinel_one"], + "example": "sentinel_one", + "type": "string", + "x-enum-varnames": ["SENTINEL_ONE"], + }, + }, + "required": ["id", "type", "inputs", "region"], + "type": "object", + }, + { + "description": "The " + "`opensearch` " + "destination " + "writes " + "logs " + "to " + "an " + "OpenSearch " + "cluster.", + "properties": { + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "opensearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "opensearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`opensearch`.", + "enum": ["opensearch"], + "example": "opensearch", + "type": "string", + "x-enum-varnames": ["OPENSEARCH"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`amazon_opensearch` " + "destination " + "writes " + "logs " + "to " + "Amazon " + "OpenSearch.", + "properties": { + "auth": { + "description": "Authentication " + "settings " + "for " + "the " + "Amazon " + "OpenSearch " + "destination.\n" + "The " + "`strategy` " + "field " + "determines " + "whether " + "basic " + "or " + "AWS-based " + "authentication " + "is " + "used.", + "properties": { + "assume_role": { + "description": "The " + "ARN " + "of " + "the " + "role " + "to " + "assume " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "aws_region": { + "description": "AWS region", + "type": "string", + }, + "external_id": { + "description": "External " + "ID " + "for " + "the " + "assumed " + "role " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "session_name": { + "description": "Session " + "name " + "for " + "the " + "assumed " + "role " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "strategy": { + "description": "The " + "authentication " + "strategy " + "to " + "use.", + "enum": ["basic", "aws"], + "example": "aws", + "type": "string", + "x-enum-varnames": [ + "BASIC", + "AWS", + ], + }, + }, + "required": ["strategy"], + "type": "object", + }, + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "elasticsearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "amazon_opensearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`amazon_opensearch`.", + "enum": ["amazon_opensearch"], + "example": "amazon_opensearch", + "type": "string", + "x-enum-varnames": [ + "AMAZON_OPENSEARCH" + ], + }, + }, + "required": ["id", "type", "inputs", "auth"], + "type": "object", + }, + { + "description": "The " + "`socket` " + "destination " + "sends " + "logs " + "over " + "TCP " + "or " + "UDP " + "to " + "a " + "remote " + "server.", + "properties": { + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "framing": { + "description": "Framing " + "method " + "configuration.", + "oneOf": [ + { + "description": "Each " + "log " + "event " + "is " + "delimited " + "by " + "a " + "newline " + "character.", + "properties": { + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingNewlineDelimitedMethod` " + "object.", + "enum": [ + "newline_delimited" + ], + "example": "newline_delimited", + "type": "string", + "x-enum-varnames": [ + "NEWLINE_DELIMITED" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Event " + "data " + "is " + "not " + "delimited " + "at " + "all.", + "properties": { + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingBytesMethod` " + "object.", + "enum": ["bytes"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Each " + "log " + "event " + "is " + "separated " + "using " + "the " + "specified " + "delimiter " + "character.", + "properties": { + "delimiter": { + "description": "A " + "single " + "ASCII " + "character " + "used " + "as " + "a " + "delimiter.", + "example": "|", + "maxLength": 1, + "minLength": 1, + "type": "string", + }, + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingCharacterDelimitedMethod` " + "object.", + "enum": [ + "character_delimited" + ], + "example": "character_delimited", + "type": "string", + "x-enum-varnames": [ + "CHARACTER_DELIMITED" + ], + }, + }, + "required": [ + "method", + "delimiter", + ], + "type": "object", + }, + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "socket-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "Protocol " + "used " + "to " + "send " + "logs.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "socket", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`socket`.", + "enum": ["socket"], + "example": "socket", + "type": "string", + "x-enum-varnames": ["SOCKET"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + "framing", + "mode", + ], + "type": "object", + }, + { + "description": "The " + "`amazon_security_lake` " + "destination " + "sends " + "your " + "logs " + "to " + "Amazon " + "Security " + "Lake.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "bucket": { + "description": "Name " + "of " + "the " + "Amazon " + "S3 " + "bucket " + "in " + "Security " + "Lake " + "(3-63 " + "characters).", + "example": "security-lake-bucket", + "type": "string", + }, + "custom_source_name": { + "description": "Custom " + "source " + "name " + "for " + "the " + "logs " + "in " + "Security " + "Lake.", + "example": "my-custom-source", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "amazon-security-lake-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "AWS " + "region " + "of " + "the " + "S3 " + "bucket.", + "example": "us-east-1", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_security_lake", + "description": "The " + "destination " + "type. " + "Always " + "`amazon_security_lake`.", + "enum": ["amazon_security_lake"], + "example": "amazon_security_lake", + "type": "string", + "x-enum-varnames": [ + "AMAZON_SECURITY_LAKE" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "region", + "custom_source_name", + ], + "type": "object", + }, + { + "description": "The " + "`crowdstrike_next_gen_siem` " + "destination " + "forwards " + "logs " + "to " + "CrowdStrike " + "Next " + "Gen " + "SIEM.", + "properties": { + "compression": { + "description": "Compression " + "configuration " + "for " + "log " + "events.", + "properties": { + "algorithm": { + "description": "Compression " + "algorithm " + "for " + "log " + "events.", + "enum": ["gzip", "zlib"], + "example": "gzip", + "type": "string", + "x-enum-varnames": [ + "GZIP", + "ZLIB", + ], + }, + "level": { + "description": "Compression " + "level.", + "example": 6, + "format": "int64", + "type": "integer", + }, + }, + "required": ["algorithm"], + "type": "object", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "crowdstrike-ngsiem-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "crowdstrike_next_gen_siem", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`crowdstrike_next_gen_siem`.", + "enum": ["crowdstrike_next_gen_siem"], + "example": "crowdstrike_next_gen_siem", + "type": "string", + "x-enum-varnames": [ + "CROWDSTRIKE_NEXT_GEN_SIEM" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + ], + "type": "object", + }, + { + "description": "The " + "`google_pubsub` " + "destination " + "publishes " + "logs " + "to " + "a " + "Google " + "Cloud " + "Pub/Sub " + "topic.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "google-pubsub-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "project": { + "description": "The " + "GCP " + "project " + "ID " + "that " + "owns " + "the " + "Pub/Sub " + "topic.", + "example": "my-gcp-project", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "topic": { + "description": "The " + "Pub/Sub " + "topic " + "name " + "to " + "publish " + "logs " + "to.", + "example": "logs-subscription", + "type": "string", + }, + "type": { + "default": "google_pubsub", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_pubsub`.", + "enum": ["google_pubsub"], + "example": "google_pubsub", + "type": "string", + "x-enum-varnames": ["GOOGLE_PUBSUB"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + "project", + "topic", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "processors": { + "description": "A " + "list " + "of " + "processors " + "that " + "transform " + "or " + "enrich " + "log " + "data.", + "example": [ + { + "id": "filter-processor", + "include": "service:my-service", + "inputs": ["datadog-agent-source"], + "type": "filter", + } + ], + "items": { + "description": "A processor for the pipeline.", + "oneOf": [ + { + "description": "The " + "`filter` " + "processor " + "allows " + "conditional " + "processing " + "of " + "logs " + "based " + "on " + "a " + "Datadog " + "search " + "query. " + "Logs " + "that " + "match " + "the " + "`include` " + "query " + "are " + "passed " + "through; " + "others " + "are " + "discarded.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "filter-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "should " + "pass " + "through " + "the " + "filter. " + "Logs " + "that " + "match " + "this " + "query " + "continue " + "to " + "downstream " + "components; " + "others " + "are " + "dropped.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "filter", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`filter`.", + "enum": ["filter"], + "example": "filter", + "type": "string", + "x-enum-varnames": ["FILTER"], + }, + }, + "required": ["id", "type", "include", "inputs"], + "type": "object", + }, + { + "description": "The " + "`parse_json` " + "processor " + "extracts " + "JSON " + "from " + "a " + "specified " + "field " + "and " + "flattens " + "it " + "into " + "the " + "event. " + "This " + "is " + "useful " + "when " + "logs " + "contain " + "embedded " + "JSON " + "as " + "a " + "string.", + "properties": { + "field": { + "description": "The " + "name " + "of " + "the " + "log " + "field " + "that " + "contains " + "a " + "JSON " + "string.", + "example": "message", + "type": "string", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "parse-json-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "parse_json", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`parse_json`.", + "enum": ["parse_json"], + "example": "parse_json", + "type": "string", + "x-enum-varnames": ["PARSE_JSON"], + }, + }, + "required": [ + "id", + "type", + "include", + "field", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "Quota " + "Processor " + "measures " + "logging " + "traffic " + "for " + "logs " + "that " + "match " + "a " + "specified " + "filter. " + "When " + "the " + "configured " + "daily " + "quota " + "is " + "met, " + "the " + "processor " + "can " + "drop " + "or " + "alert.", + "properties": { + "drop_events": { + "description": "If " + "set " + "to " + "`true`, " + "logs " + "that " + "matched " + "the " + "quota " + "filter " + "and " + "sent " + "after " + "the " + "quota " + "has " + "been " + "met " + "are " + "dropped; " + "only " + "logs " + "that " + "did " + "not " + "match " + "the " + "filter " + "query " + "continue " + "through " + "the " + "pipeline.", + "example": False, + "type": "boolean", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "quota-processor", + "type": "string", + }, + "ignore_when_missing_partitions": { + "description": "If " + "`true`, " + "the " + "processor " + "skips " + "quota " + "checks " + "when " + "partition " + "fields " + "are " + "missing " + "from " + "the " + "logs.", + "type": "boolean", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "limit": { + "description": "The " + "maximum " + "amount " + "of " + "data " + "or " + "number " + "of " + "events " + "allowed " + "before " + "the " + "quota " + "is " + "enforced. " + "Can " + "be " + "specified " + "in " + "bytes " + "or " + "events.", + "properties": { + "enforce": { + "description": "Unit " + "for " + "quota " + "enforcement " + "in " + "bytes " + "for " + "data " + "size " + "or " + "events " + "for " + "count.", + "enum": ["bytes", "events"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES", + "EVENTS", + ], + }, + "limit": { + "description": "The " + "limit " + "for " + "quota " + "enforcement.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + }, + "required": ["enforce", "limit"], + "type": "object", + }, + "name": { + "description": "Name of the quota.", + "example": "MyQuota", + "type": "string", + }, + "overflow_action": { + "description": "The " + "action " + "to " + "take " + "when " + "the " + "quota " + "is " + "exceeded. " + "Options:\n" + "- " + "`drop`: " + "Drop " + "the " + "event.\n" + "- " + "`no_action`: " + "Let " + "the " + "event " + "pass " + "through.\n" + "- " + "`overflow_routing`: " + "Route " + "to " + "an " + "overflow " + "destination.", + "enum": [ + "drop", + "no_action", + "overflow_routing", + ], + "example": "drop", + "type": "string", + "x-enum-varnames": [ + "DROP", + "NO_ACTION", + "OVERFLOW_ROUTING", + ], + }, + "overrides": { + "description": "A " + "list " + "of " + "alternate " + "quota " + "rules " + "that " + "apply " + "to " + "specific " + "sets " + "of " + "events, " + "identified " + "by " + "matching " + "field " + "values. " + "Each " + "override " + "can " + "define " + "a " + "custom " + "limit.", + "items": { + "description": "Defines " + "a " + "custom " + "quota " + "limit " + "that " + "applies " + "to " + "specific " + "log " + "events " + "based " + "on " + "matching " + "field " + "values.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "field " + "matchers " + "used " + "to " + "apply " + "a " + "specific " + "override. " + "If " + "an " + "event " + "matches " + "all " + "listed " + "key-value " + "pairs, " + "the " + "corresponding " + "override " + "limit " + "is " + "enforced.", + "items": { + "description": "Represents " + "a " + "static " + "key-value " + "pair " + "used " + "in " + "various " + "processors.", + "properties": { + "name": { + "description": "The " + "field " + "name.", + "example": "field_name", + "type": "string", + }, + "value": { + "description": "The " + "field " + "value.", + "example": "field_value", + "type": "string", + }, + }, + "required": [ + "name", + "value", + ], + "type": "object", + }, + "type": "array", + }, + "limit": { + "description": "The " + "maximum " + "amount " + "of " + "data " + "or " + "number " + "of " + "events " + "allowed " + "before " + "the " + "quota " + "is " + "enforced. " + "Can " + "be " + "specified " + "in " + "bytes " + "or " + "events.", + "properties": { + "enforce": { + "description": "Unit " + "for " + "quota " + "enforcement " + "in " + "bytes " + "for " + "data " + "size " + "or " + "events " + "for " + "count.", + "enum": [ + "bytes", + "events", + ], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES", + "EVENTS", + ], + }, + "limit": { + "description": "The " + "limit " + "for " + "quota " + "enforcement.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + }, + "required": [ + "enforce", + "limit", + ], + "type": "object", + }, + }, + "required": ["fields", "limit"], + "type": "object", + }, + "type": "array", + }, + "partition_fields": { + "description": "A " + "list " + "of " + "fields " + "used " + "to " + "segment " + "log " + "traffic " + "for " + "quota " + "enforcement. " + "Quotas " + "are " + "tracked " + "independently " + "by " + "unique " + "combinations " + "of " + "these " + "field " + "values.", + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "quota", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`quota`.", + "enum": ["quota"], + "example": "quota", + "type": "string", + "x-enum-varnames": ["QUOTA"], + }, + }, + "required": [ + "id", + "type", + "include", + "name", + "drop_events", + "limit", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`add_fields` " + "processor " + "adds " + "static " + "key-value " + "fields " + "to " + "logs.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "static " + "fields " + "(key-value " + "pairs) " + "that " + "is " + "added " + "to " + "each " + "log " + "event " + "processed " + "by " + "this " + "component.", + "items": { + "description": "Represents " + "a " + "static " + "key-value " + "pair " + "used " + "in " + "various " + "processors.", + "properties": { + "name": { + "description": "The " + "field " + "name.", + "example": "field_name", + "type": "string", + }, + "value": { + "description": "The " + "field " + "value.", + "example": "field_value", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "add-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "add_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`add_fields`.", + "enum": ["add_fields"], + "example": "add_fields", + "type": "string", + "x-enum-varnames": ["ADD_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`remove_fields` " + "processor " + "deletes " + "specified " + "fields " + "from " + "logs.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "field " + "names " + "to " + "be " + "removed " + "from " + "each " + "log " + "event.", + "example": ["field1", "field2"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "remove-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "The " + "`PipelineRemoveFieldsProcessor` " + "`inputs`.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "remove_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`remove_fields`.", + "enum": ["remove_fields"], + "example": "remove_fields", + "type": "string", + "x-enum-varnames": ["REMOVE_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`rename_fields` " + "processor " + "changes " + "field " + "names.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "rename " + "rules " + "specifying " + "which " + "fields " + "to " + "rename " + "in " + "the " + "event, " + "what " + "to " + "rename " + "them " + "to, " + "and " + "whether " + "to " + "preserve " + "the " + "original " + "fields.", + "items": { + "description": "Defines " + "how " + "to " + "rename " + "a " + "field " + "in " + "log " + "events.", + "properties": { + "destination": { + "description": "The " + "field " + "name " + "to " + "assign " + "the " + "renamed " + "value " + "to.", + "example": "destination_field", + "type": "string", + }, + "preserve_source": { + "description": "Indicates " + "whether " + "the " + "original " + "field, " + "that " + "is " + "received " + "from " + "the " + "source, " + "should " + "be " + "kept " + "(`true`) " + "or " + "removed " + "(`false`) " + "after " + "renaming.", + "example": False, + "type": "boolean", + }, + "source": { + "description": "The " + "original " + "field " + "name " + "in " + "the " + "log " + "event " + "that " + "should " + "be " + "renamed.", + "example": "source_field", + "type": "string", + }, + }, + "required": [ + "source", + "destination", + "preserve_source", + ], + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "rename-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "rename_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rename_fields`.", + "enum": ["rename_fields"], + "example": "rename_fields", + "type": "string", + "x-enum-varnames": ["RENAME_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`generate_datadog_metrics` " + "processor " + "creates " + "custom " + "metrics " + "from " + "logs " + "and " + "sends " + "them " + "to " + "Datadog.\n" + "Metrics " + "can " + "be " + "counters, " + "gauges, " + "or " + "distributions " + "and " + "optionally " + "grouped " + "by " + "log " + "fields.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline.", + "example": "generate-metrics-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "processor.", + "example": ["source-id"], + "items": {"type": "string"}, + "type": "array", + }, + "metrics": { + "description": "Configuration " + "for " + "generating " + "individual " + "metrics.", + "items": { + "description": "Defines " + "a " + "log-based " + "custom " + "metric, " + "including " + "its " + "name, " + "type, " + "filter, " + "value " + "computation " + "strategy,\n" + "and " + "optional " + "grouping " + "fields.", + "properties": { + "group_by": { + "description": "Optional " + "fields " + "used " + "to " + "group " + "the " + "metric " + "series.", + "example": [ + "service", + "env", + ], + "items": {"type": "string"}, + "type": "array", + }, + "include": { + "description": "Datadog " + "filter " + "query " + "to " + "match " + "logs " + "for " + "metric " + "generation.", + "example": "service:billing", + "type": "string", + }, + "metric_type": { + "description": "Type " + "of " + "metric " + "to " + "create.", + "enum": [ + "count", + "gauge", + "distribution", + ], + "example": "count", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "GAUGE", + "DISTRIBUTION", + ], + }, + "name": { + "description": "Name " + "of " + "the " + "custom " + "metric " + "to " + "be " + "created.", + "example": "logs.processed", + "type": "string", + }, + "value": { + "description": "Specifies " + "how " + "the " + "value " + "of " + "the " + "generated " + "metric " + "is " + "computed.", + "oneOf": [ + { + "description": "Strategy " + "that " + "increments " + "a " + "generated " + "metric " + "by " + "one " + "for " + "each " + "matching " + "event.", + "properties": { + "strategy": { + "description": "Increments " + "the " + "metric " + "by " + "1 " + "for " + "each " + "matching " + "event.", + "enum": [ + "increment_by_one" + ], + "example": "increment_by_one", + "type": "string", + "x-enum-varnames": [ + "INCREMENT_BY_ONE" + ], + } + }, + "required": [ + "strategy" + ], + "type": "object", + }, + { + "description": "Strategy " + "that " + "increments " + "a " + "generated " + "metric " + "based " + "on " + "the " + "value " + "of " + "a " + "log " + "field.", + "properties": { + "field": { + "description": "Name " + "of " + "the " + "log " + "field " + "containing " + "the " + "numeric " + "value " + "to " + "increment " + "the " + "metric " + "by.", + "example": "errors", + "type": "string", + }, + "strategy": { + "description": "Uses " + "a " + "numeric " + "field " + "in " + "the " + "log " + "event " + "as " + "the " + "metric " + "increment.", + "enum": [ + "increment_by_field" + ], + "example": "increment_by_field", + "type": "string", + "x-enum-varnames": [ + "INCREMENT_BY_FIELD" + ], + }, + }, + "required": [ + "strategy", + "field", + ], + "type": "object", + }, + ], + }, + }, + "required": [ + "name", + "include", + "metric_type", + "value", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "generate_datadog_metrics", + "description": "The " + "processor " + "type. " + "Always " + "`generate_datadog_metrics`.", + "enum": ["generate_datadog_metrics"], + "example": "generate_datadog_metrics", + "type": "string", + "x-enum-varnames": [ + "GENERATE_DATADOG_METRICS" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "include", + "metrics", + ], + "type": "object", + }, + { + "description": "The " + "`sample` " + "processor " + "allows " + "probabilistic " + "sampling " + "of " + "logs " + "at " + "a " + "fixed " + "rate.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "sample-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "percentage": { + "description": "The " + "percentage " + "of " + "logs " + "to " + "sample.", + "example": 10.0, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Number " + "of " + "events " + "to " + "sample " + "(1 " + "in " + "N).", + "example": 10, + "format": "int64", + "minimum": 1, + "type": "integer", + }, + "type": { + "default": "sample", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sample`.", + "enum": ["sample"], + "example": "sample", + "type": "string", + "x-enum-varnames": ["SAMPLE"], + }, + }, + "required": ["id", "type", "include", "inputs"], + "type": "object", + }, + { + "description": "The " + "`parse_grok` " + "processor " + "extracts " + "structured " + "fields " + "from " + "unstructured " + "log " + "messages " + "using " + "Grok " + "patterns.", + "properties": { + "disable_library_rules": { + "default": False, + "description": "If " + "set " + "to " + "`true`, " + "disables " + "the " + "default " + "Grok " + "rules " + "provided " + "by " + "Datadog.", + "example": True, + "type": "boolean", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "parse-grok-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "rules": { + "description": "The " + "list " + "of " + "Grok " + "parsing " + "rules. " + "If " + "multiple " + "matching " + "rules " + "are " + "provided, " + "they " + "are " + "evaluated " + "in " + "order. " + "The " + "first " + "successful " + "match " + "is " + "applied.", + "items": { + "description": "A " + "Grok " + "parsing " + "rule " + "used " + "in " + "the " + "`parse_grok` " + "processor. " + "Each " + "rule " + "defines " + "how " + "to " + "extract " + "structured " + "fields\n" + "from " + "a " + "specific " + "log " + "field " + "using " + "Grok " + "patterns.", + "properties": { + "match_rules": { + "description": "A " + "list " + "of " + "Grok " + "parsing " + "rules " + "that " + "define " + "how " + "to " + "extract " + "fields " + "from " + "the " + "source " + "field.\n" + "Each " + "rule " + "must " + "contain " + "a " + "name " + "and " + "a " + "valid " + "Grok " + "pattern.", + "example": [ + { + "name": "MyParsingRule", + "rule": "%{word:user} " + "connected " + "on " + '%{date("MM/dd/yyyy"):date}', + } + ], + "items": { + "description": "Defines " + "a " + "Grok " + "parsing " + "rule, " + "which " + "extracts " + "structured " + "fields " + "from " + "log " + "content " + "using " + "named " + "Grok " + "patterns.\n" + "Each " + "rule " + "must " + "have " + "a " + "unique " + "name " + "and " + "a " + "valid " + "Datadog " + "Grok " + "pattern " + "that " + "will " + "be " + "applied " + "to " + "the " + "source " + "field.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "rule.", + "example": "MyParsingRule", + "type": "string", + }, + "rule": { + "description": "The " + "definition " + "of " + "the " + "Grok " + "rule.", + "example": "%{word:user} " + "connected " + "on " + '%{date("MM/dd/yyyy"):date}', + "type": "string", + }, + }, + "required": [ + "name", + "rule", + ], + "type": "object", + }, + "type": "array", + }, + "source": { + "description": "The " + "name " + "of " + "the " + "field " + "in " + "the " + "log " + "event " + "to " + "apply " + "the " + "Grok " + "rules " + "to.", + "example": "message", + "type": "string", + }, + "support_rules": { + "description": "A " + "list " + "of " + "Grok " + "helper " + "rules " + "that " + "can " + "be " + "referenced " + "by " + "the " + "parsing " + "rules.", + "example": [ + { + "name": "user", + "rule": "%{word:user.name}", + } + ], + "items": { + "description": "The " + "Grok " + "helper " + "rule " + "referenced " + "in " + "the " + "parsing " + "rules.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "Grok " + "helper " + "rule.", + "example": "user", + "type": "string", + }, + "rule": { + "description": "The " + "definition " + "of " + "the " + "Grok " + "helper " + "rule.", + "example": " " + "%{word:user.name}", + "type": "string", + }, + }, + "required": [ + "name", + "rule", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "source", + "match_rules", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "parse_grok", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`parse_grok`.", + "enum": ["parse_grok"], + "example": "parse_grok", + "type": "string", + "x-enum-varnames": ["PARSE_GROK"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "rules", + ], + "type": "object", + }, + { + "description": "The " + "`sensitive_data_scanner` " + "processor " + "detects " + "and " + "optionally " + "redacts " + "sensitive " + "data " + "in " + "log " + "events.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "sensitive-scanner", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "source:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "rules": { + "description": "A " + "list " + "of " + "rules " + "for " + "identifying " + "and " + "acting " + "on " + "sensitive " + "data " + "patterns.", + "items": { + "description": "Defines " + "a " + "rule " + "for " + "detecting " + "sensitive " + "data, " + "including " + "matching " + "pattern, " + "scope, " + "and " + "the " + "action " + "to " + "take.", + "properties": { + "keyword_options": { + "description": "Configuration " + "for " + "keywords " + "used " + "to " + "reinforce " + "sensitive " + "data " + "pattern " + "detection.", + "properties": { + "keywords": { + "description": "A " + "list " + "of " + "keywords " + "to " + "match " + "near " + "the " + "sensitive " + "pattern.", + "example": [ + "ssn", + "card", + "account", + ], + "items": { + "type": "string" + }, + "type": "array", + }, + "proximity": { + "description": "Maximum " + "number " + "of " + "tokens " + "between " + "a " + "keyword " + "and " + "a " + "sensitive " + "value " + "match.", + "example": 5, + "format": "int64", + "type": "integer", + }, + }, + "required": [ + "keywords", + "proximity", + ], + "type": "object", + }, + "name": { + "description": "A " + "name " + "identifying " + "the " + "rule.", + "example": "Redact " + "Credit " + "Card " + "Numbers", + "type": "string", + }, + "on_match": { + "description": "Defines " + "what " + "action " + "to " + "take " + "when " + "sensitive " + "data " + "is " + "matched.", + "oneOf": [ + { + "description": "Configuration " + "for " + "completely " + "redacting " + "matched " + "sensitive " + "data.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "completely " + "replaces " + "the " + "matched " + "sensitive " + "data " + "with " + "a " + "fixed " + "replacement " + "string " + "to " + "remove " + "all " + "visibility.", + "enum": [ + "redact" + ], + "example": "redact", + "type": "string", + "x-enum-varnames": [ + "REDACT" + ], + }, + "options": { + "description": "Configuration " + "for " + "fully " + "redacting " + "sensitive " + "data.", + "properties": { + "replace": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionRedactOptions` " + "`replace`.", + "example": "***", + "type": "string", + } + }, + "required": [ + "replace" + ], + "type": "object", + }, + }, + "required": [ + "action", + "options", + ], + "type": "object", + }, + { + "description": "Configuration " + "for " + "hashing " + "matched " + "sensitive " + "values.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "replaces " + "the " + "matched " + "sensitive " + "data " + "with " + "a " + "hashed " + "representation, " + "preserving " + "structure " + "while " + "securing " + "content.", + "enum": [ + "hash" + ], + "example": "hash", + "type": "string", + "x-enum-varnames": [ + "HASH" + ], + }, + "options": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionHash` " + "`options`.", + "type": "object", + }, + }, + "required": [ + "action" + ], + "type": "object", + }, + { + "description": "Configuration " + "for " + "partially " + "redacting " + "matched " + "sensitive " + "data.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "redacts " + "part " + "of " + "the " + "sensitive " + "data " + "while " + "preserving " + "a " + "configurable " + "number " + "of " + "characters, " + "typically " + "used " + "for " + "masking " + "purposes " + "(e.g., " + "show " + "last " + "4 " + "digits " + "of " + "a " + "credit " + "card).", + "enum": [ + "partial_redact" + ], + "example": "partial_redact", + "type": "string", + "x-enum-varnames": [ + "PARTIAL_REDACT" + ], + }, + "options": { + "description": "Controls " + "how " + "partial " + "redaction " + "is " + "applied, " + "including " + "character " + "count " + "and " + "direction.", + "properties": { + "characters": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionPartialRedactOptions` " + "`characters`.", + "example": 4, + "format": "int64", + "type": "integer", + }, + "direction": { + "description": "Indicates " + "whether " + "to " + "redact " + "characters " + "from " + "the " + "first " + "or " + "last " + "part " + "of " + "the " + "matched " + "value.", + "enum": [ + "first", + "last", + ], + "example": "last", + "type": "string", + "x-enum-varnames": [ + "FIRST", + "LAST", + ], + }, + }, + "required": [ + "characters", + "direction", + ], + "type": "object", + }, + }, + "required": [ + "action", + "options", + ], + "type": "object", + }, + ], + }, + "pattern": { + "description": "Pattern " + "detection " + "configuration " + "for " + "identifying " + "sensitive " + "data " + "using " + "either " + "a " + "custom " + "regex " + "or " + "a " + "library " + "reference.", + "oneOf": [ + { + "description": "Defines " + "a " + "custom " + "regex-based " + "pattern " + "for " + "identifying " + "sensitive " + "data " + "in " + "logs.", + "properties": { + "options": { + "description": "Options " + "for " + "defining " + "a " + "custom " + "regex " + "pattern.", + "properties": { + "rule": { + "description": "A " + "regular " + "expression " + "used " + "to " + "detect " + "sensitive " + "values. " + "Must " + "be " + "a " + "valid " + "regex.", + "example": "\\b\\d{16}\\b", + "type": "string", + } + }, + "required": [ + "rule" + ], + "type": "object", + }, + "type": { + "description": "Indicates " + "a " + "custom " + "regular " + "expression " + "is " + "used " + "for " + "matching.", + "enum": [ + "custom" + ], + "example": "custom", + "type": "string", + "x-enum-varnames": [ + "CUSTOM" + ], + }, + }, + "required": [ + "type", + "options", + ], + "type": "object", + }, + { + "description": "Specifies " + "a " + "pattern " + "from " + "Datadog’s " + "sensitive " + "data " + "detection " + "library " + "to " + "match " + "known " + "sensitive " + "data " + "types.", + "properties": { + "options": { + "description": "Options " + "for " + "selecting " + "a " + "predefined " + "library " + "pattern " + "and " + "enabling " + "keyword " + "support.", + "properties": { + "id": { + "description": "Identifier " + "for " + "a " + "predefined " + "pattern " + "from " + "the " + "sensitive " + "data " + "scanner " + "pattern " + "library.", + "example": "credit_card", + "type": "string", + }, + "use_recommended_keywords": { + "description": "Whether " + "to " + "augment " + "the " + "pattern " + "with " + "recommended " + "keywords " + "(optional).", + "type": "boolean", + }, + }, + "required": [ + "id" + ], + "type": "object", + }, + "type": { + "description": "Indicates " + "that " + "a " + "predefined " + "library " + "pattern " + "is " + "used.", + "enum": [ + "library" + ], + "example": "library", + "type": "string", + "x-enum-varnames": [ + "LIBRARY" + ], + }, + }, + "required": [ + "type", + "options", + ], + "type": "object", + }, + ], + }, + "scope": { + "description": "Determines " + "which " + "parts " + "of " + "the " + "log " + "the " + "pattern-matching " + "rule " + "should " + "be " + "applied " + "to.", + "oneOf": [ + { + "description": "Includes " + "only " + "specific " + "fields " + "for " + "sensitive " + "data " + "scanning.", + "properties": { + "options": { + "description": "Fields " + "to " + "which " + "the " + "scope " + "rule " + "applies.", + "properties": { + "fields": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` " + "`fields`.", + "example": [ + "" + ], + "items": { + "type": "string" + }, + "type": "array", + } + }, + "required": [ + "fields" + ], + "type": "object", + }, + "target": { + "description": "Applies " + "the " + "rule " + "only " + "to " + "included " + "fields.", + "enum": [ + "include" + ], + "example": "include", + "type": "string", + "x-enum-varnames": [ + "INCLUDE" + ], + }, + }, + "required": [ + "target", + "options", + ], + "type": "object", + }, + { + "description": "Excludes " + "specific " + "fields " + "from " + "sensitive " + "data " + "scanning.", + "properties": { + "options": { + "description": "Fields " + "to " + "which " + "the " + "scope " + "rule " + "applies.", + "properties": { + "fields": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` " + "`fields`.", + "example": [ + "" + ], + "items": { + "type": "string" + }, + "type": "array", + } + }, + "required": [ + "fields" + ], + "type": "object", + }, + "target": { + "description": "Excludes " + "specific " + "fields " + "from " + "processing.", + "enum": [ + "exclude" + ], + "example": "exclude", + "type": "string", + "x-enum-varnames": [ + "EXCLUDE" + ], + }, + }, + "required": [ + "target", + "options", + ], + "type": "object", + }, + { + "description": "Applies " + "scanning " + "across " + "all " + "available " + "fields.", + "properties": { + "target": { + "description": "Applies " + "the " + "rule " + "to " + "all " + "fields.", + "enum": [ + "all" + ], + "example": "all", + "type": "string", + "x-enum-varnames": [ + "ALL" + ], + } + }, + "required": [ + "target" + ], + "type": "object", + }, + ], + }, + "tags": { + "description": "Tags " + "assigned " + "to " + "this " + "rule " + "for " + "filtering " + "and " + "classification.", + "example": ["pii", "ccn"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": [ + "name", + "tags", + "pattern", + "scope", + "on_match", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "sensitive_data_scanner", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sensitive_data_scanner`.", + "enum": ["sensitive_data_scanner"], + "example": "sensitive_data_scanner", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER" + ], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "rules", + ], + "type": "object", + }, + { + "description": "The " + "`ocsf_mapper` " + "processor " + "transforms " + "logs " + "into " + "the " + "OCSF " + "schema " + "using " + "a " + "predefined " + "mapping " + "configuration.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline.", + "example": "ocsf-mapper-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "processor.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mappings": { + "description": "A " + "list " + "of " + "mapping " + "rules " + "to " + "convert " + "events " + "to " + "the " + "OCSF " + "format.", + "items": { + "description": "Defines " + "how " + "specific " + "events " + "are " + "transformed " + "to " + "OCSF " + "using " + "a " + "mapping " + "configuration.", + "properties": { + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "select " + "the " + "logs " + "that " + "this " + "mapping " + "should " + "apply " + "to.", + "example": "service:my-service", + "type": "string", + }, + "mapping": { + "description": "Defines " + "a " + "single " + "mapping " + "rule " + "for " + "transforming " + "logs " + "into " + "the " + "OCSF " + "schema.", + "oneOf": [ + { + "description": "Predefined " + "library " + "mappings " + "for " + "common " + "log " + "formats.", + "enum": [ + "CloudTrail " + "Account " + "Change", + "GCP " + "Cloud " + "Audit " + "CreateBucket", + "GCP " + "Cloud " + "Audit " + "CreateSink", + "GCP " + "Cloud " + "Audit " + "SetIamPolicy", + "GCP " + "Cloud " + "Audit " + "UpdateSink", + "Github " + "Audit " + "Log " + "API " + "Activity", + "Google " + "Workspace " + "Admin " + "Audit " + "addPrivilege", + "Microsoft " + "365 " + "Defender " + "Incident", + "Microsoft " + "365 " + "Defender " + "UserLoggedIn", + "Okta " + "System " + "Log " + "Authentication", + "Palo " + "Alto " + "Networks " + "Firewall " + "Traffic", + ], + "example": "CloudTrail " + "Account " + "Change", + "type": "string", + "x-enum-varnames": [ + "CLOUDTRAIL_ACCOUNT_CHANGE", + "GCP_CLOUD_AUDIT_CREATEBUCKET", + "GCP_CLOUD_AUDIT_CREATESINK", + "GCP_CLOUD_AUDIT_SETIAMPOLICY", + "GCP_CLOUD_AUDIT_UPDATESINK", + "GITHUB_AUDIT_LOG_API_ACTIVITY", + "GOOGLE_WORKSPACE_ADMIN_AUDIT_ADDPRIVILEGE", + "MICROSOFT_365_DEFENDER_INCIDENT", + "MICROSOFT_365_DEFENDER_USERLOGGEDIN", + "OKTA_SYSTEM_LOG_AUTHENTICATION", + "PALO_ALTO_NETWORKS_FIREWALL_TRAFFIC", + ], + } + ], + }, + }, + "required": ["include", "mapping"], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "ocsf_mapper", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`ocsf_mapper`.", + "enum": ["ocsf_mapper"], + "example": "ocsf_mapper", + "type": "string", + "x-enum-varnames": ["OCSF_MAPPER"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "mappings", + ], + "type": "object", + }, + { + "description": "The " + "`add_env_vars` " + "processor " + "adds " + "environment " + "variable " + "values " + "to " + "log " + "events.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "processor " + "in " + "the " + "pipeline.", + "example": "add-env-vars-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "add_env_vars", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`add_env_vars`.", + "enum": ["add_env_vars"], + "example": "add_env_vars", + "type": "string", + "x-enum-varnames": ["ADD_ENV_VARS"], + }, + "variables": { + "description": "A " + "list " + "of " + "environment " + "variable " + "mappings " + "to " + "apply " + "to " + "log " + "fields.", + "items": { + "description": "Defines " + "a " + "mapping " + "between " + "an " + "environment " + "variable " + "and " + "a " + "log " + "field.", + "properties": { + "field": { + "description": "The " + "target " + "field " + "in " + "the " + "log " + "event.", + "example": "log.environment.region", + "type": "string", + }, + "name": { + "description": "The " + "name " + "of " + "the " + "environment " + "variable " + "to " + "read.", + "example": "AWS_REGION", + "type": "string", + }, + }, + "required": ["field", "name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "variables", + ], + "type": "object", + }, + { + "description": "The " + "`dedupe` " + "processor " + "removes " + "duplicate " + "fields " + "in " + "log " + "events.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "log " + "field " + "paths " + "to " + "check " + "for " + "duplicates.", + "example": ["log.message", "log.error"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "dedupe-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "The " + "deduplication " + "mode " + "to " + "apply " + "to " + "the " + "fields.", + "enum": ["match", "ignore"], + "example": "match", + "type": "string", + "x-enum-varnames": ["MATCH", "IGNORE"], + }, + "type": { + "default": "dedupe", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`dedupe`.", + "enum": ["dedupe"], + "example": "dedupe", + "type": "string", + "x-enum-varnames": ["DEDUPE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "fields", + "mode", + ], + "type": "object", + }, + { + "description": "The " + "`enrichment_table` " + "processor " + "enriches " + "logs " + "using " + "a " + "static " + "CSV " + "file " + "or " + "GeoIP " + "database.", + "properties": { + "file": { + "description": "Defines " + "a " + "static " + "enrichment " + "table " + "loaded " + "from " + "a " + "CSV " + "file.", + "properties": { + "encoding": { + "description": "File " + "encoding " + "format.", + "properties": { + "delimiter": { + "description": "The " + "`encoding` " + "`delimiter`.", + "example": ",", + "type": "string", + }, + "includes_headers": { + "description": "The " + "`encoding` " + "`includes_headers`.", + "example": True, + "type": "boolean", + }, + "type": { + "description": "Specifies " + "the " + "encoding " + "format " + "(e.g., " + "CSV) " + "used " + "for " + "enrichment " + "tables.", + "enum": ["csv"], + "example": "csv", + "type": "string", + "x-enum-varnames": [ + "CSV" + ], + }, + }, + "required": [ + "type", + "delimiter", + "includes_headers", + ], + "type": "object", + }, + "key": { + "description": "Key " + "fields " + "used " + "to " + "look " + "up " + "enrichment " + "values.", + "items": { + "description": "Defines " + "how " + "to " + "map " + "log " + "fields " + "to " + "enrichment " + "table " + "columns " + "during " + "lookups.", + "properties": { + "column": { + "description": "The " + "`items` " + "`column`.", + "example": "user_id", + "type": "string", + }, + "comparison": { + "description": "Defines " + "how " + "to " + "compare " + "key " + "fields " + "for " + "enrichment " + "table " + "lookups.", + "enum": ["equals"], + "example": "equals", + "type": "string", + "x-enum-varnames": [ + "EQUALS" + ], + }, + "field": { + "description": "The " + "`items` " + "`field`.", + "example": "log.user.id", + "type": "string", + }, + }, + "required": [ + "column", + "comparison", + "field", + ], + "type": "object", + }, + "type": "array", + }, + "path": { + "description": "Path " + "to " + "the " + "CSV " + "file.", + "example": "/etc/enrichment/lookup.csv", + "type": "string", + }, + "schema": { + "description": "Schema " + "defining " + "column " + "names " + "and " + "their " + "types.", + "items": { + "description": "Describes " + "a " + "single " + "column " + "and " + "its " + "type " + "in " + "an " + "enrichment " + "table " + "schema.", + "properties": { + "column": { + "description": "The " + "`items` " + "`column`.", + "example": "region", + "type": "string", + }, + "type": { + "description": "Declares " + "allowed " + "data " + "types " + "for " + "enrichment " + "table " + "columns.", + "enum": [ + "string", + "boolean", + "integer", + "float", + "date", + "timestamp", + ], + "example": "string", + "type": "string", + "x-enum-varnames": [ + "STRING", + "BOOLEAN", + "INTEGER", + "FLOAT", + "DATE", + "TIMESTAMP", + ], + }, + }, + "required": [ + "column", + "type", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "encoding", + "key", + "path", + "schema", + ], + "type": "object", + }, + "geoip": { + "description": "Uses " + "a " + "GeoIP " + "database " + "to " + "enrich " + "logs " + "based " + "on " + "an " + "IP " + "field.", + "properties": { + "key_field": { + "description": "Path " + "to " + "the " + "IP " + "field " + "in " + "the " + "log.", + "example": "log.source.ip", + "type": "string", + }, + "locale": { + "description": "Locale " + "used " + "to " + "resolve " + "geographical " + "names.", + "example": "en", + "type": "string", + }, + "path": { + "description": "Path " + "to " + "the " + "GeoIP " + "database " + "file.", + "example": "/etc/geoip/GeoLite2-City.mmdb", + "type": "string", + }, + }, + "required": [ + "key_field", + "locale", + "path", + ], + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "enrichment-table-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "source:my-source", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["add-fields-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "target": { + "description": "Path " + "where " + "enrichment " + "results " + "should " + "be " + "stored " + "in " + "the " + "log.", + "example": "enriched.geoip", + "type": "string", + }, + "type": { + "default": "enrichment_table", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`enrichment_table`.", + "enum": ["enrichment_table"], + "example": "enrichment_table", + "type": "string", + "x-enum-varnames": ["ENRICHMENT_TABLE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "target", + ], + "type": "object", + }, + { + "description": "The " + "`reduce` " + "processor " + "aggregates " + "and " + "merges " + "logs " + "based " + "on " + "matching " + "keys " + "and " + "merge " + "strategies.", + "properties": { + "group_by": { + "description": "A " + "list " + "of " + "fields " + "used " + "to " + "group " + "log " + "events " + "for " + "merging.", + "example": [ + "log.user.id", + "log.device.id", + ], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "reduce-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "env:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "merge_strategies": { + "description": "List " + "of " + "merge " + "strategies " + "defining " + "how " + "values " + "from " + "grouped " + "events " + "should " + "be " + "combined.", + "items": { + "description": "Defines " + "how " + "a " + "specific " + "field " + "should " + "be " + "merged " + "across " + "grouped " + "events.", + "properties": { + "path": { + "description": "The " + "field " + "path " + "in " + "the " + "log " + "event.", + "example": "log.user.roles", + "type": "string", + }, + "strategy": { + "description": "The " + "merge " + "strategy " + "to " + "apply.", + "enum": [ + "discard", + "retain", + "sum", + "max", + "min", + "array", + "concat", + "concat_newline", + "concat_raw", + "shortest_array", + "longest_array", + "flat_unique", + ], + "example": "flat_unique", + "type": "string", + "x-enum-varnames": [ + "DISCARD", + "RETAIN", + "SUM", + "MAX", + "MIN", + "ARRAY", + "CONCAT", + "CONCAT_NEWLINE", + "CONCAT_RAW", + "SHORTEST_ARRAY", + "LONGEST_ARRAY", + "FLAT_UNIQUE", + ], + }, + }, + "required": ["path", "strategy"], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "reduce", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`reduce`.", + "enum": ["reduce"], + "example": "reduce", + "type": "string", + "x-enum-varnames": ["REDUCE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "group_by", + "merge_strategies", + ], + "type": "object", + }, + { + "description": "The " + "`throttle` " + "processor " + "limits " + "the " + "number " + "of " + "events " + "that " + "pass " + "through " + "over " + "a " + "given " + "time " + "window.", + "properties": { + "group_by": { + "description": "Optional " + "list " + "of " + "fields " + "used " + "to " + "group " + "events " + "before " + "the " + "threshold " + "has " + "been " + "reached.", + "example": ["log.user.id"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "throttle-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "env:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "threshold": { + "description": "the " + "number " + "of " + "events " + "allowed " + "in " + "a " + "given " + "time " + "window. " + "Events " + "sent " + "after " + "the " + "threshold " + "has " + "been " + "reached, " + "are " + "dropped.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + "type": { + "default": "throttle", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`throttle`.", + "enum": ["throttle"], + "example": "throttle", + "type": "string", + "x-enum-varnames": ["THROTTLE"], + }, + "window": { + "description": "The " + "time " + "window " + "in " + "seconds " + "over " + "which " + "the " + "threshold " + "applies.", + "example": 60.0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "threshold", + "window", + ], + "type": "object", + }, + { + "description": "The " + "`custom_processor` " + "processor " + "transforms " + "events " + "using " + "[Vector " + "Remap " + "Language " + "(VRL)](https://vector.dev/docs/reference/vrl/) " + "scripts " + "with " + "advanced " + "filtering " + "capabilities.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "remap-vrl-processor", + "type": "string", + }, + "include": { + "default": "*", + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets. " + "This " + "field " + "should " + "always " + "be " + "set " + "to " + "`*` " + "for " + "the " + "custom_processor " + "processor.", + "example": "*", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "remaps": { + "description": "Array " + "of " + "VRL " + "remap " + "rules.", + "items": { + "description": "Defines " + "a " + "single " + "VRL " + "remap " + "rule " + "with " + "its " + "own " + "filtering " + "and " + "transformation " + "logic.", + "properties": { + "drop_on_error": { + "description": "Whether " + "to " + "drop " + "events " + "that " + "caused " + "errors " + "during " + "processing.", + "example": False, + "type": "boolean", + }, + "enabled": { + "description": "Whether " + "this " + "remap " + "rule " + "is " + "enabled.", + "example": True, + "type": "boolean", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "filter " + "events " + "for " + "this " + "specific " + "remap " + "rule.", + "example": "service:web", + "type": "string", + }, + "name": { + "description": "A " + "descriptive " + "name " + "for " + "this " + "remap " + "rule.", + "example": "Parse " + "JSON " + "from " + "message " + "field", + "type": "string", + }, + "source": { + "description": "The " + "VRL " + "script " + "source " + "code " + "that " + "defines " + "the " + "processing " + "logic.", + "example": ". " + "= " + "parse_json!(.message)", + "type": "string", + }, + }, + "required": [ + "include", + "name", + "source", + "enabled", + "drop_on_error", + ], + "type": "object", + }, + "minItems": 1, + "type": "array", + }, + "type": { + "default": "custom_processor", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`custom_processor`.", + "enum": ["custom_processor"], + "example": "custom_processor", + "type": "string", + "x-enum-varnames": ["CUSTOM_PROCESSOR"], + }, + }, + "required": [ + "id", + "type", + "include", + "remaps", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`datadog_tags` " + "processor " + "includes " + "or " + "excludes " + "specific " + "Datadog " + "tags " + "in " + "your " + "logs.", + "properties": { + "action": { + "description": "The " + "action " + "to " + "take " + "on " + "tags " + "with " + "matching " + "keys.", + "enum": ["include", "exclude"], + "example": "include", + "type": "string", + "x-enum-varnames": [ + "INCLUDE", + "EXCLUDE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "datadog-tags-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "keys": { + "description": "A list of tag keys.", + "example": [ + "env", + "service", + "version", + ], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "The processing mode.", + "enum": ["filter"], + "example": "filter", + "type": "string", + "x-enum-varnames": ["FILTER"], + }, + "type": { + "default": "datadog_tags", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_tags`.", + "enum": ["datadog_tags"], + "example": "datadog_tags", + "type": "string", + "x-enum-varnames": ["DATADOG_TAGS"], + }, + }, + "required": [ + "id", + "type", + "include", + "mode", + "action", + "keys", + "inputs", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "sources": { + "description": "A " + "list " + "of " + "configured " + "data " + "sources " + "for " + "the " + "pipeline.", + "example": [ + {"id": "datadog-agent-source", "type": "datadog_agent"} + ], + "items": { + "description": "A data source for the pipeline.", + "oneOf": [ + { + "description": "The " + "`kafka` " + "source " + "ingests " + "data " + "from " + "Apache " + "Kafka " + "topics.", + "properties": { + "group_id": { + "description": "Consumer " + "group " + "ID " + "used " + "by " + "the " + "Kafka " + "client.", + "example": "consumer-group-0", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "kafka-source", + "type": "string", + }, + "librdkafka_options": { + "description": "Optional " + "list " + "of " + "advanced " + "Kafka " + "client " + "configuration " + "options, " + "defined " + "as " + "key-value " + "pairs.", + "items": { + "description": "Represents " + "a " + "key-value " + "pair " + "used " + "to " + "configure " + "low-level " + "`librdkafka` " + "client " + "options " + "for " + "Kafka " + "sources, " + "such " + "as " + "timeouts, " + "buffer " + "sizes, " + "and " + "security " + "settings.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "`librdkafka` " + "configuration " + "option " + "to " + "set.", + "example": "fetch.message.max.bytes", + "type": "string", + }, + "value": { + "description": "The " + "value " + "assigned " + "to " + "the " + "specified " + "`librdkafka` " + "configuration " + "option.", + "example": "1048576", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "sasl": { + "description": "Specifies " + "the " + "SASL " + "mechanism " + "for " + "authenticating " + "with " + "a " + "Kafka " + "cluster.", + "properties": { + "mechanism": { + "description": "SASL " + "mechanism " + "used " + "for " + "Kafka " + "authentication.", + "enum": [ + "PLAIN", + "SCRAM-SHA-256", + "SCRAM-SHA-512", + ], + "type": "string", + "x-enum-varnames": [ + "PLAIN", + "SCRAMNOT_SHANOT_256", + "SCRAMNOT_SHANOT_512", + ], + } + }, + "type": "object", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "topics": { + "description": "A " + "list " + "of " + "Kafka " + "topic " + "names " + "to " + "subscribe " + "to. " + "The " + "source " + "ingests " + "messages " + "from " + "each " + "topic " + "specified.", + "example": ["topic1", "topic2"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "kafka", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`kafka`.", + "enum": ["kafka"], + "example": "kafka", + "type": "string", + "x-enum-varnames": ["KAFKA"], + }, + }, + "required": [ + "id", + "type", + "group_id", + "topics", + ], + "type": "object", + }, + { + "description": "The " + "`datadog_agent` " + "source " + "collects " + "logs " + "from " + "the " + "Datadog " + "Agent.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "datadog-agent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "datadog_agent", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_agent`.", + "enum": ["datadog_agent"], + "example": "datadog_agent", + "type": "string", + "x-enum-varnames": ["DATADOG_AGENT"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`splunk_tcp` " + "source " + "receives " + "logs " + "from " + "a " + "Splunk " + "Universal " + "Forwarder " + "over " + "TCP.\n" + "TLS " + "is " + "supported " + "for " + "secure " + "transmission.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-tcp-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "splunk_tcp", + "description": "The " + "source " + "type. " + "Always " + "`splunk_tcp`.", + "enum": ["splunk_tcp"], + "example": "splunk_tcp", + "type": "string", + "x-enum-varnames": ["SPLUNK_TCP"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`splunk_hec` " + "source " + "implements " + "the " + "Splunk " + "HTTP " + "Event " + "Collector " + "(HEC) " + "API.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-hec-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "splunk_hec", + "description": "The " + "source " + "type. " + "Always " + "`splunk_hec`.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`amazon_s3` " + "source " + "ingests " + "logs " + "from " + "an " + "Amazon " + "S3 " + "bucket.\n" + "It " + "supports " + "AWS " + "authentication " + "and " + "TLS " + "encryption.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "aws-s3-source", + "type": "string", + }, + "region": { + "description": "AWS " + "region " + "where " + "the " + "S3 " + "bucket " + "resides.", + "example": "us-east-1", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_s3", + "description": "The " + "source " + "type. " + "Always " + "`amazon_s3`.", + "enum": ["amazon_s3"], + "example": "amazon_s3", + "type": "string", + "x-enum-varnames": ["AMAZON_S3"], + }, + }, + "required": ["id", "type", "region"], + "type": "object", + }, + { + "description": "The " + "`fluentd` " + "source " + "ingests " + "logs " + "from " + "a " + "Fluentd-compatible " + "service.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "fluent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "fluentd", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`fluentd.", + "enum": ["fluentd"], + "example": "fluentd", + "type": "string", + "x-enum-varnames": ["FLUENTD"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`fluent_bit` " + "source " + "ingests " + "logs " + "from " + "Fluent " + "Bit.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "fluent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "fluent_bit", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`fluent_bit`.", + "enum": ["fluent_bit"], + "example": "fluent_bit", + "type": "string", + "x-enum-varnames": ["FLUENT_BIT"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`http_server` " + "source " + "collects " + "logs " + "over " + "HTTP " + "POST " + "from " + "external " + "services.", + "properties": { + "auth_strategy": { + "description": "HTTP " + "authentication " + "method.", + "enum": ["none", "plain"], + "example": "plain", + "type": "string", + "x-enum-varnames": ["NONE", "PLAIN"], + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "Unique " + "ID " + "for " + "the " + "HTTP " + "server " + "source.", + "example": "http-server-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "http_server", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`http_server`.", + "enum": ["http_server"], + "example": "http_server", + "type": "string", + "x-enum-varnames": ["HTTP_SERVER"], + }, + }, + "required": [ + "id", + "type", + "auth_strategy", + "decoding", + ], + "type": "object", + }, + { + "description": "The " + "`sumo_logic` " + "source " + "receives " + "logs " + "from " + "Sumo " + "Logic " + "collectors.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "sumo-logic-source", + "type": "string", + }, + "type": { + "default": "sumo_logic", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sumo_logic`.", + "enum": ["sumo_logic"], + "example": "sumo_logic", + "type": "string", + "x-enum-varnames": ["SUMO_LOGIC"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`rsyslog` " + "source " + "listens " + "for " + "logs " + "over " + "TCP " + "or " + "UDP " + "from " + "an " + "`rsyslog` " + "server " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "rsyslog-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "by " + "the " + "syslog " + "source " + "to " + "receive " + "messages.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "rsyslog", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rsyslog`.", + "enum": ["rsyslog"], + "example": "rsyslog", + "type": "string", + "x-enum-varnames": ["RSYSLOG"], + }, + }, + "required": ["id", "type", "mode"], + "type": "object", + }, + { + "description": "The " + "`syslog_ng` " + "source " + "listens " + "for " + "logs " + "over " + "TCP " + "or " + "UDP " + "from " + "a " + "`syslog-ng` " + "server " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "syslog-ng-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "by " + "the " + "syslog " + "source " + "to " + "receive " + "messages.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "syslog_ng", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`syslog_ng`.", + "enum": ["syslog_ng"], + "example": "syslog_ng", + "type": "string", + "x-enum-varnames": ["SYSLOG_NG"], + }, + }, + "required": ["id", "type", "mode"], + "type": "object", + }, + { + "description": "The " + "`amazon_data_firehose` " + "source " + "ingests " + "logs " + "from " + "AWS " + "Data " + "Firehose.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "amazon-firehose-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_data_firehose", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`amazon_data_firehose`.", + "enum": ["amazon_data_firehose"], + "example": "amazon_data_firehose", + "type": "string", + "x-enum-varnames": [ + "AMAZON_DATA_FIREHOSE" + ], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`google_pubsub` " + "source " + "ingests " + "logs " + "from " + "a " + "Google " + "Cloud " + "Pub/Sub " + "subscription.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "google-pubsub-source", + "type": "string", + }, + "project": { + "description": "The " + "GCP " + "project " + "ID " + "that " + "owns " + "the " + "Pub/Sub " + "subscription.", + "example": "my-gcp-project", + "type": "string", + }, + "subscription": { + "description": "The " + "Pub/Sub " + "subscription " + "name " + "from " + "which " + "messages " + "are " + "consumed.", + "example": "logs-subscription", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "google_pubsub", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_pubsub`.", + "enum": ["google_pubsub"], + "example": "google_pubsub", + "type": "string", + "x-enum-varnames": ["GOOGLE_PUBSUB"], + }, + }, + "required": [ + "id", + "type", + "auth", + "decoding", + "project", + "subscription", + ], + "type": "object", + }, + { + "description": "The " + "`http_client` " + "source " + "scrapes " + "logs " + "from " + "HTTP " + "endpoints " + "at " + "regular " + "intervals.", + "properties": { + "auth_strategy": { + "description": "Optional " + "authentication " + "strategy " + "for " + "HTTP " + "requests.", + "enum": ["basic", "bearer"], + "example": "basic", + "type": "string", + "x-enum-varnames": ["BASIC", "BEARER"], + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "http-client-source", + "type": "string", + }, + "scrape_interval_secs": { + "description": "The " + "interval " + "(in " + "seconds) " + "between " + "HTTP " + "scrape " + "requests.", + "example": 60, + "format": "int64", + "type": "integer", + }, + "scrape_timeout_secs": { + "description": "The " + "timeout " + "(in " + "seconds) " + "for " + "each " + "scrape " + "request.", + "example": 10, + "format": "int64", + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "http_client", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`http_client`.", + "enum": ["http_client"], + "example": "http_client", + "type": "string", + "x-enum-varnames": ["HTTP_CLIENT"], + }, + }, + "required": ["id", "type", "decoding"], + "type": "object", + }, + { + "description": "The " + "`logstash` " + "source " + "ingests " + "logs " + "from " + "a " + "Logstash " + "forwarder.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "logstash-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "logstash", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`logstash`.", + "enum": ["logstash"], + "example": "logstash", + "type": "string", + "x-enum-varnames": ["LOGSTASH"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`socket` " + "source " + "ingests " + "logs " + "over " + "TCP " + "or " + "UDP.", + "properties": { + "framing": { + "description": "Framing " + "method " + "configuration " + "for " + "the " + "socket " + "source.", + "oneOf": [ + { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "newline " + "character.", + "properties": { + "method": { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "newline " + "character.", + "enum": [ + "newline_delimited" + ], + "example": "newline_delimited", + "type": "string", + "x-enum-varnames": [ + "NEWLINE_DELIMITED" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "are " + "passed " + "through " + "as-is " + "according " + "to " + "the " + "underlying " + "I/O " + "boundaries " + "(for " + "example, " + "split " + "between " + "messages " + "or " + "stream " + "segments).", + "properties": { + "method": { + "description": "Byte " + "frames " + "are " + "passed " + "through " + "as-is " + "according " + "to " + "the " + "underlying " + "I/O " + "boundaries " + "(for " + "example, " + "split " + "between " + "messages " + "or " + "stream " + "segments).", + "enum": ["bytes"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "chosen " + "character.", + "properties": { + "delimiter": { + "description": "A " + "single " + "ASCII " + "character " + "used " + "to " + "delimit " + "events.", + "example": "|", + "maxLength": 1, + "minLength": 1, + "type": "string", + }, + "method": { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "chosen " + "character.", + "enum": [ + "character_delimited" + ], + "example": "character_delimited", + "type": "string", + "x-enum-varnames": [ + "CHARACTER_DELIMITED" + ], + }, + }, + "required": [ + "method", + "delimiter", + ], + "type": "object", + }, + { + "description": "Byte " + "frames " + "according " + "to " + "the " + "octet " + "counting " + "format " + "as " + "per " + "RFC6587.", + "properties": { + "method": { + "description": "Byte " + "frames " + "according " + "to " + "the " + "octet " + "counting " + "format " + "as " + "per " + "RFC6587.", + "enum": [ + "octet_counting" + ], + "example": "octet_counting", + "type": "string", + "x-enum-varnames": [ + "OCTET_COUNTING" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "which " + "are " + "chunked " + "GELF " + "messages.", + "properties": { + "method": { + "description": "Byte " + "frames " + "which " + "are " + "chunked " + "GELF " + "messages.", + "enum": [ + "chunked_gelf" + ], + "example": "chunked_gelf", + "type": "string", + "x-enum-varnames": [ + "CHUNKED_GELF" + ], + } + }, + "required": ["method"], + "type": "object", + }, + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "socket-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "to " + "receive " + "logs.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "socket", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`socket`.", + "enum": ["socket"], + "example": "socket", + "type": "string", + "x-enum-varnames": ["SOCKET"], + }, + }, + "required": ["id", "type", "mode", "framing"], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "required": ["sources", "destinations"], + "type": "object", + }, + "name": { + "description": "Name of the pipeline.", + "example": "Main Observability Pipeline", + "type": "string", + }, + }, + "required": ["name", "config"], + "type": "object", + }, + "type": { + "default": "pipelines", + "description": "The resource type " + "identifier. For " + "pipeline resources, " + "this should always be " + "set to `pipelines`.", + "example": "pipelines", + "type": "string", + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEPIPELINE_REQUEST_BODY_SCHEMA": { + "description": "Top-level schema representing a pipeline.", + "properties": { + "data": { + "description": "Contains the pipeline’s ID, type, and configuration attributes.", + "properties": { + "attributes": { + "description": "Defines the " + "pipeline’s name " + "and its " + "components " + "(sources, " + "processors, and " + "destinations).", + "properties": { + "config": { + "description": "Specifies " + "the " + "pipeline's " + "configuration, " + "including " + "its " + "sources, " + "processors, " + "and " + "destinations.", + "properties": { + "destinations": { + "description": "A " + "list " + "of " + "destination " + "components " + "where " + "processed " + "logs " + "are " + "sent.", + "example": [ + { + "id": "datadog-logs-destination", + "inputs": ["filter-processor"], + "type": "datadog_logs", + } + ], + "items": { + "description": "A destination for the pipeline.", + "oneOf": [ + { + "description": "The " + "`datadog_logs` " + "destination " + "forwards " + "logs " + "to " + "Datadog " + "Log " + "Management.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "datadog-logs-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "datadog_logs", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_logs`.", + "enum": ["datadog_logs"], + "example": "datadog_logs", + "type": "string", + "x-enum-varnames": ["DATADOG_LOGS"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`amazon_s3` " + "destination " + "sends " + "your " + "logs " + "in " + "Datadog-rehydratable " + "format " + "to " + "an " + "Amazon " + "S3 " + "bucket " + "for " + "archiving.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "bucket": { + "description": "S3 bucket name.", + "example": "error-logs", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "amazon-s3-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "key_prefix": { + "description": "Optional " + "prefix " + "for " + "object " + "keys.", + "type": "string", + }, + "region": { + "description": "AWS " + "region " + "of " + "the " + "S3 " + "bucket.", + "example": "us-east-1", + "type": "string", + }, + "storage_class": { + "description": "S3 storage class.", + "enum": [ + "STANDARD", + "REDUCED_REDUNDANCY", + "INTELLIGENT_TIERING", + "STANDARD_IA", + "EXPRESS_ONEZONE", + "ONEZONE_IA", + "GLACIER", + "GLACIER_IR", + "DEEP_ARCHIVE", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "REDUCED_REDUNDANCY", + "INTELLIGENT_TIERING", + "STANDARD_IA", + "EXPRESS_ONEZONE", + "ONEZONE_IA", + "GLACIER", + "GLACIER_IR", + "DEEP_ARCHIVE", + ], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_s3", + "description": "The " + "destination " + "type. " + "Always " + "`amazon_s3`.", + "enum": ["amazon_s3"], + "example": "amazon_s3", + "type": "string", + "x-enum-varnames": ["AMAZON_S3"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "region", + "storage_class", + ], + "type": "object", + }, + { + "description": "The " + "`google_cloud_storage` " + "destination " + "stores " + "logs " + "in " + "a " + "Google " + "Cloud " + "Storage " + "(GCS) " + "bucket.\n" + "It " + "requires " + "a " + "bucket " + "name, " + "GCP " + "authentication, " + "and " + "metadata " + "fields.", + "properties": { + "acl": { + "description": "Access " + "control " + "list " + "setting " + "for " + "objects " + "written " + "to " + "the " + "bucket.", + "enum": [ + "private", + "project-private", + "public-read", + "authenticated-read", + "bucket-owner-read", + "bucket-owner-full-control", + ], + "example": "private", + "type": "string", + "x-enum-varnames": [ + "PRIVATE", + "PROJECTNOT_PRIVATE", + "PUBLICNOT_READ", + "AUTHENTICATEDNOT_READ", + "BUCKETNOT_OWNERNOT_READ", + "BUCKETNOT_OWNERNOT_FULLNOT_CONTROL", + ], + }, + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "bucket": { + "description": "Name " + "of " + "the " + "GCS " + "bucket.", + "example": "error-logs", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "gcs-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "key_prefix": { + "description": "Optional " + "prefix " + "for " + "object " + "keys " + "within " + "the " + "GCS " + "bucket.", + "type": "string", + }, + "metadata": { + "description": "Custom " + "metadata " + "to " + "attach " + "to " + "each " + "object " + "uploaded " + "to " + "the " + "GCS " + "bucket.", + "items": { + "description": "A " + "custom " + "metadata " + "entry.", + "properties": { + "name": { + "description": "The " + "metadata " + "key.", + "example": "environment", + "type": "string", + }, + "value": { + "description": "The " + "metadata " + "value.", + "example": "production", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "storage_class": { + "description": "Storage " + "class " + "used " + "for " + "objects " + "stored " + "in " + "GCS.", + "enum": [ + "STANDARD", + "NEARLINE", + "COLDLINE", + "ARCHIVE", + ], + "example": "STANDARD", + "type": "string", + "x-enum-varnames": [ + "STANDARD", + "NEARLINE", + "COLDLINE", + "ARCHIVE", + ], + }, + "type": { + "default": "google_cloud_storage", + "description": "The " + "destination " + "type. " + "Always " + "`google_cloud_storage`.", + "enum": ["google_cloud_storage"], + "example": "google_cloud_storage", + "type": "string", + "x-enum-varnames": [ + "GOOGLE_CLOUD_STORAGE" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "auth", + "storage_class", + "acl", + ], + "type": "object", + }, + { + "description": "The " + "`splunk_hec` " + "destination " + "forwards " + "logs " + "to " + "Splunk " + "using " + "the " + "HTTP " + "Event " + "Collector " + "(HEC).", + "properties": { + "auto_extract_timestamp": { + "description": "If " + "`true`, " + "Splunk " + "tries " + "to " + "extract " + "timestamps " + "from " + "incoming " + "log " + "events.\n" + "If " + "`false`, " + "Splunk " + "assigns " + "the " + "time " + "the " + "event " + "was " + "received.", + "example": True, + "type": "boolean", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-hec-destination", + "type": "string", + }, + "index": { + "description": "Optional " + "name " + "of " + "the " + "Splunk " + "index " + "where " + "logs " + "are " + "written.", + "example": "main", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "sourcetype": { + "description": "The " + "Splunk " + "sourcetype " + "to " + "assign " + "to " + "log " + "events.", + "example": "custom_sourcetype", + "type": "string", + }, + "type": { + "default": "splunk_hec", + "description": "The " + "destination " + "type. " + "Always " + "`splunk_hec`.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`sumo_logic` " + "destination " + "forwards " + "logs " + "to " + "Sumo " + "Logic.", + "properties": { + "encoding": { + "description": "The " + "output " + "encoding " + "format.", + "enum": [ + "json", + "raw_message", + "logfmt", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + "LOGFMT", + ], + }, + "header_custom_fields": { + "description": "A " + "list " + "of " + "custom " + "headers " + "to " + "include " + "in " + "the " + "request " + "to " + "Sumo " + "Logic.", + "items": { + "description": "Single " + "key-value " + "pair " + "used " + "as " + "a " + "custom " + "log " + "header " + "for " + "Sumo " + "Logic.", + "properties": { + "name": { + "description": "The " + "header " + "field " + "name.", + "example": "X-Sumo-Category", + "type": "string", + }, + "value": { + "description": "The " + "header " + "field " + "value.", + "example": "my-app-logs", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "header_host_name": { + "description": "Optional " + "override " + "for " + "the " + "host " + "name " + "header.", + "example": "host-123", + "type": "string", + }, + "header_source_category": { + "description": "Optional " + "override " + "for " + "the " + "source " + "category " + "header.", + "example": "source-category", + "type": "string", + }, + "header_source_name": { + "description": "Optional " + "override " + "for " + "the " + "source " + "name " + "header.", + "example": "source-name", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sumo-logic-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "sumo_logic", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sumo_logic`.", + "enum": ["sumo_logic"], + "example": "sumo_logic", + "type": "string", + "x-enum-varnames": ["SUMO_LOGIC"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`elasticsearch` " + "destination " + "writes " + "logs " + "to " + "an " + "Elasticsearch " + "cluster.", + "properties": { + "api_version": { + "description": "The " + "Elasticsearch " + "API " + "version " + "to " + "use. " + "Set " + "to " + "`auto` " + "to " + "auto-detect.", + "enum": ["auto", "v6", "v7", "v8"], + "example": "auto", + "type": "string", + "x-enum-varnames": [ + "AUTO", + "V6", + "V7", + "V8", + ], + }, + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to " + "in " + "Elasticsearch.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "elasticsearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "elasticsearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`elasticsearch`.", + "enum": ["elasticsearch"], + "example": "elasticsearch", + "type": "string", + "x-enum-varnames": ["ELASTICSEARCH"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`rsyslog` " + "destination " + "forwards " + "logs " + "to " + "an " + "external " + "`rsyslog` " + "server " + "over " + "TCP " + "or " + "UDP " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "rsyslog-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "keepalive": { + "description": "Optional " + "socket " + "keepalive " + "duration " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "rsyslog", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rsyslog`.", + "enum": ["rsyslog"], + "example": "rsyslog", + "type": "string", + "x-enum-varnames": ["RSYSLOG"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`syslog_ng` " + "destination " + "forwards " + "logs " + "to " + "an " + "external " + "`syslog-ng` " + "server " + "over " + "TCP " + "or " + "UDP " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "syslog-ng-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "keepalive": { + "description": "Optional " + "socket " + "keepalive " + "duration " + "in " + "milliseconds.", + "example": 60000, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "syslog_ng", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`syslog_ng`.", + "enum": ["syslog_ng"], + "example": "syslog_ng", + "type": "string", + "x-enum-varnames": ["SYSLOG_NG"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`azure_storage` " + "destination " + "forwards " + "logs " + "to " + "an " + "Azure " + "Blob " + "Storage " + "container.", + "properties": { + "blob_prefix": { + "description": "Optional " + "prefix " + "for " + "blobs " + "written " + "to " + "the " + "container.", + "example": "logs/", + "type": "string", + }, + "container_name": { + "description": "The " + "name " + "of " + "the " + "Azure " + "Blob " + "Storage " + "container " + "to " + "store " + "logs " + "in.", + "example": "my-log-container", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "azure-storage-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["processor-id"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "azure_storage", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`azure_storage`.", + "enum": ["azure_storage"], + "example": "azure_storage", + "type": "string", + "x-enum-varnames": ["AZURE_STORAGE"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "container_name", + ], + "type": "object", + }, + { + "description": "The " + "`microsoft_sentinel` " + "destination " + "forwards " + "logs " + "to " + "Microsoft " + "Sentinel.", + "properties": { + "client_id": { + "description": "Azure " + "AD " + "client " + "ID " + "used " + "for " + "authentication.", + "example": "a1b2c3d4-5678-90ab-cdef-1234567890ab", + "type": "string", + }, + "dcr_immutable_id": { + "description": "The " + "immutable " + "ID " + "of " + "the " + "Data " + "Collection " + "Rule " + "(DCR).", + "example": "dcr-uuid-1234", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sentinel-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "table": { + "description": "The " + "name " + "of " + "the " + "Log " + "Analytics " + "table " + "where " + "logs " + "are " + "sent.", + "example": "CustomLogsTable", + "type": "string", + }, + "tenant_id": { + "description": "Azure AD tenant ID.", + "example": "abcdef12-3456-7890-abcd-ef1234567890", + "type": "string", + }, + "type": { + "default": "microsoft_sentinel", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`microsoft_sentinel`.", + "enum": ["microsoft_sentinel"], + "example": "microsoft_sentinel", + "type": "string", + "x-enum-varnames": [ + "MICROSOFT_SENTINEL" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "client_id", + "tenant_id", + "dcr_immutable_id", + "table", + ], + "type": "object", + }, + { + "description": "The " + "`google_chronicle` " + "destination " + "sends " + "logs " + "to " + "Google " + "Chronicle.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "customer_id": { + "description": "The " + "Google " + "Chronicle " + "customer " + "ID.", + "example": "abcdefg123456789", + "type": "string", + }, + "encoding": { + "description": "The " + "encoding " + "format " + "for " + "the " + "logs " + "sent " + "to " + "Chronicle.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "google-chronicle-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "log_type": { + "description": "The " + "log " + "type " + "metadata " + "associated " + "with " + "the " + "Chronicle " + "destination.", + "example": "nginx_logs", + "type": "string", + }, + "type": { + "default": "google_chronicle", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_chronicle`.", + "enum": ["google_chronicle"], + "example": "google_chronicle", + "type": "string", + "x-enum-varnames": ["GOOGLE_CHRONICLE"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "auth", + "customer_id", + ], + "type": "object", + }, + { + "description": "The " + "`new_relic` " + "destination " + "sends " + "logs " + "to " + "the " + "New " + "Relic " + "platform.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "new-relic-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "The New Relic region.", + "enum": ["us", "eu"], + "example": "us", + "type": "string", + "x-enum-varnames": ["US", "EU"], + }, + "type": { + "default": "new_relic", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`new_relic`.", + "enum": ["new_relic"], + "example": "new_relic", + "type": "string", + "x-enum-varnames": ["NEW_RELIC"], + }, + }, + "required": ["id", "type", "inputs", "region"], + "type": "object", + }, + { + "description": "The " + "`sentinel_one` " + "destination " + "sends " + "logs " + "to " + "SentinelOne.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "sentinelone-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "The " + "SentinelOne " + "region " + "to " + "send " + "logs " + "to.", + "enum": [ + "us", + "eu", + "ca", + "data_set_us", + ], + "example": "us", + "type": "string", + "x-enum-varnames": [ + "US", + "EU", + "CA", + "DATA_SET_US", + ], + }, + "type": { + "default": "sentinel_one", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sentinel_one`.", + "enum": ["sentinel_one"], + "example": "sentinel_one", + "type": "string", + "x-enum-varnames": ["SENTINEL_ONE"], + }, + }, + "required": ["id", "type", "inputs", "region"], + "type": "object", + }, + { + "description": "The " + "`opensearch` " + "destination " + "writes " + "logs " + "to " + "an " + "OpenSearch " + "cluster.", + "properties": { + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "opensearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "opensearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`opensearch`.", + "enum": ["opensearch"], + "example": "opensearch", + "type": "string", + "x-enum-varnames": ["OPENSEARCH"], + }, + }, + "required": ["id", "type", "inputs"], + "type": "object", + }, + { + "description": "The " + "`amazon_opensearch` " + "destination " + "writes " + "logs " + "to " + "Amazon " + "OpenSearch.", + "properties": { + "auth": { + "description": "Authentication " + "settings " + "for " + "the " + "Amazon " + "OpenSearch " + "destination.\n" + "The " + "`strategy` " + "field " + "determines " + "whether " + "basic " + "or " + "AWS-based " + "authentication " + "is " + "used.", + "properties": { + "assume_role": { + "description": "The " + "ARN " + "of " + "the " + "role " + "to " + "assume " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "aws_region": { + "description": "AWS region", + "type": "string", + }, + "external_id": { + "description": "External " + "ID " + "for " + "the " + "assumed " + "role " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "session_name": { + "description": "Session " + "name " + "for " + "the " + "assumed " + "role " + "(used " + "with " + "`aws` " + "strategy).", + "type": "string", + }, + "strategy": { + "description": "The " + "authentication " + "strategy " + "to " + "use.", + "enum": ["basic", "aws"], + "example": "aws", + "type": "string", + "x-enum-varnames": [ + "BASIC", + "AWS", + ], + }, + }, + "required": ["strategy"], + "type": "object", + }, + "bulk_index": { + "description": "The " + "index " + "to " + "write " + "logs " + "to.", + "example": "logs-index", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "elasticsearch-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "amazon_opensearch", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`amazon_opensearch`.", + "enum": ["amazon_opensearch"], + "example": "amazon_opensearch", + "type": "string", + "x-enum-varnames": [ + "AMAZON_OPENSEARCH" + ], + }, + }, + "required": ["id", "type", "inputs", "auth"], + "type": "object", + }, + { + "description": "The " + "`socket` " + "destination " + "sends " + "logs " + "over " + "TCP " + "or " + "UDP " + "to " + "a " + "remote " + "server.", + "properties": { + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "framing": { + "description": "Framing " + "method " + "configuration.", + "oneOf": [ + { + "description": "Each " + "log " + "event " + "is " + "delimited " + "by " + "a " + "newline " + "character.", + "properties": { + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingNewlineDelimitedMethod` " + "object.", + "enum": [ + "newline_delimited" + ], + "example": "newline_delimited", + "type": "string", + "x-enum-varnames": [ + "NEWLINE_DELIMITED" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Event " + "data " + "is " + "not " + "delimited " + "at " + "all.", + "properties": { + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingBytesMethod` " + "object.", + "enum": ["bytes"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Each " + "log " + "event " + "is " + "separated " + "using " + "the " + "specified " + "delimiter " + "character.", + "properties": { + "delimiter": { + "description": "A " + "single " + "ASCII " + "character " + "used " + "as " + "a " + "delimiter.", + "example": "|", + "maxLength": 1, + "minLength": 1, + "type": "string", + }, + "method": { + "description": "The " + "definition " + "of " + "`ObservabilityPipelineSocketDestinationFramingCharacterDelimitedMethod` " + "object.", + "enum": [ + "character_delimited" + ], + "example": "character_delimited", + "type": "string", + "x-enum-varnames": [ + "CHARACTER_DELIMITED" + ], + }, + }, + "required": [ + "method", + "delimiter", + ], + "type": "object", + }, + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "socket-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "Protocol " + "used " + "to " + "send " + "logs.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "socket", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`socket`.", + "enum": ["socket"], + "example": "socket", + "type": "string", + "x-enum-varnames": ["SOCKET"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + "framing", + "mode", + ], + "type": "object", + }, + { + "description": "The " + "`amazon_security_lake` " + "destination " + "sends " + "your " + "logs " + "to " + "Amazon " + "Security " + "Lake.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "bucket": { + "description": "Name " + "of " + "the " + "Amazon " + "S3 " + "bucket " + "in " + "Security " + "Lake " + "(3-63 " + "characters).", + "example": "security-lake-bucket", + "type": "string", + }, + "custom_source_name": { + "description": "Custom " + "source " + "name " + "for " + "the " + "logs " + "in " + "Security " + "Lake.", + "example": "my-custom-source", + "type": "string", + }, + "id": { + "description": "Unique " + "identifier " + "for " + "the " + "destination " + "component.", + "example": "amazon-security-lake-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "region": { + "description": "AWS " + "region " + "of " + "the " + "S3 " + "bucket.", + "example": "us-east-1", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_security_lake", + "description": "The " + "destination " + "type. " + "Always " + "`amazon_security_lake`.", + "enum": ["amazon_security_lake"], + "example": "amazon_security_lake", + "type": "string", + "x-enum-varnames": [ + "AMAZON_SECURITY_LAKE" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "bucket", + "region", + "custom_source_name", + ], + "type": "object", + }, + { + "description": "The " + "`crowdstrike_next_gen_siem` " + "destination " + "forwards " + "logs " + "to " + "CrowdStrike " + "Next " + "Gen " + "SIEM.", + "properties": { + "compression": { + "description": "Compression " + "configuration " + "for " + "log " + "events.", + "properties": { + "algorithm": { + "description": "Compression " + "algorithm " + "for " + "log " + "events.", + "enum": ["gzip", "zlib"], + "example": "gzip", + "type": "string", + "x-enum-varnames": [ + "GZIP", + "ZLIB", + ], + }, + "level": { + "description": "Compression " + "level.", + "example": 6, + "format": "int64", + "type": "integer", + }, + }, + "required": ["algorithm"], + "type": "object", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "crowdstrike-ngsiem-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "crowdstrike_next_gen_siem", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`crowdstrike_next_gen_siem`.", + "enum": ["crowdstrike_next_gen_siem"], + "example": "crowdstrike_next_gen_siem", + "type": "string", + "x-enum-varnames": [ + "CROWDSTRIKE_NEXT_GEN_SIEM" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + ], + "type": "object", + }, + { + "description": "The " + "`google_pubsub` " + "destination " + "publishes " + "logs " + "to " + "a " + "Google " + "Cloud " + "Pub/Sub " + "topic.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "encoding": { + "description": "Encoding " + "format " + "for " + "log " + "events.", + "enum": ["json", "raw_message"], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "JSON", + "RAW_MESSAGE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component.", + "example": "google-pubsub-destination", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "project": { + "description": "The " + "GCP " + "project " + "ID " + "that " + "owns " + "the " + "Pub/Sub " + "topic.", + "example": "my-gcp-project", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "topic": { + "description": "The " + "Pub/Sub " + "topic " + "name " + "to " + "publish " + "logs " + "to.", + "example": "logs-subscription", + "type": "string", + }, + "type": { + "default": "google_pubsub", + "description": "The " + "destination " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_pubsub`.", + "enum": ["google_pubsub"], + "example": "google_pubsub", + "type": "string", + "x-enum-varnames": ["GOOGLE_PUBSUB"], + }, + }, + "required": [ + "id", + "type", + "inputs", + "encoding", + "project", + "topic", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "processors": { + "description": "A " + "list " + "of " + "processors " + "that " + "transform " + "or " + "enrich " + "log " + "data.", + "example": [ + { + "id": "filter-processor", + "include": "service:my-service", + "inputs": ["datadog-agent-source"], + "type": "filter", + } + ], + "items": { + "description": "A processor for the pipeline.", + "oneOf": [ + { + "description": "The " + "`filter` " + "processor " + "allows " + "conditional " + "processing " + "of " + "logs " + "based " + "on " + "a " + "Datadog " + "search " + "query. " + "Logs " + "that " + "match " + "the " + "`include` " + "query " + "are " + "passed " + "through; " + "others " + "are " + "discarded.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "filter-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "should " + "pass " + "through " + "the " + "filter. " + "Logs " + "that " + "match " + "this " + "query " + "continue " + "to " + "downstream " + "components; " + "others " + "are " + "dropped.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "filter", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`filter`.", + "enum": ["filter"], + "example": "filter", + "type": "string", + "x-enum-varnames": ["FILTER"], + }, + }, + "required": ["id", "type", "include", "inputs"], + "type": "object", + }, + { + "description": "The " + "`parse_json` " + "processor " + "extracts " + "JSON " + "from " + "a " + "specified " + "field " + "and " + "flattens " + "it " + "into " + "the " + "event. " + "This " + "is " + "useful " + "when " + "logs " + "contain " + "embedded " + "JSON " + "as " + "a " + "string.", + "properties": { + "field": { + "description": "The " + "name " + "of " + "the " + "log " + "field " + "that " + "contains " + "a " + "JSON " + "string.", + "example": "message", + "type": "string", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "parse-json-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "parse_json", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`parse_json`.", + "enum": ["parse_json"], + "example": "parse_json", + "type": "string", + "x-enum-varnames": ["PARSE_JSON"], + }, + }, + "required": [ + "id", + "type", + "include", + "field", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "Quota " + "Processor " + "measures " + "logging " + "traffic " + "for " + "logs " + "that " + "match " + "a " + "specified " + "filter. " + "When " + "the " + "configured " + "daily " + "quota " + "is " + "met, " + "the " + "processor " + "can " + "drop " + "or " + "alert.", + "properties": { + "drop_events": { + "description": "If " + "set " + "to " + "`true`, " + "logs " + "that " + "matched " + "the " + "quota " + "filter " + "and " + "sent " + "after " + "the " + "quota " + "has " + "been " + "met " + "are " + "dropped; " + "only " + "logs " + "that " + "did " + "not " + "match " + "the " + "filter " + "query " + "continue " + "through " + "the " + "pipeline.", + "example": False, + "type": "boolean", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "quota-processor", + "type": "string", + }, + "ignore_when_missing_partitions": { + "description": "If " + "`true`, " + "the " + "processor " + "skips " + "quota " + "checks " + "when " + "partition " + "fields " + "are " + "missing " + "from " + "the " + "logs.", + "type": "boolean", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "limit": { + "description": "The " + "maximum " + "amount " + "of " + "data " + "or " + "number " + "of " + "events " + "allowed " + "before " + "the " + "quota " + "is " + "enforced. " + "Can " + "be " + "specified " + "in " + "bytes " + "or " + "events.", + "properties": { + "enforce": { + "description": "Unit " + "for " + "quota " + "enforcement " + "in " + "bytes " + "for " + "data " + "size " + "or " + "events " + "for " + "count.", + "enum": ["bytes", "events"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES", + "EVENTS", + ], + }, + "limit": { + "description": "The " + "limit " + "for " + "quota " + "enforcement.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + }, + "required": ["enforce", "limit"], + "type": "object", + }, + "name": { + "description": "Name of the quota.", + "example": "MyQuota", + "type": "string", + }, + "overflow_action": { + "description": "The " + "action " + "to " + "take " + "when " + "the " + "quota " + "is " + "exceeded. " + "Options:\n" + "- " + "`drop`: " + "Drop " + "the " + "event.\n" + "- " + "`no_action`: " + "Let " + "the " + "event " + "pass " + "through.\n" + "- " + "`overflow_routing`: " + "Route " + "to " + "an " + "overflow " + "destination.", + "enum": [ + "drop", + "no_action", + "overflow_routing", + ], + "example": "drop", + "type": "string", + "x-enum-varnames": [ + "DROP", + "NO_ACTION", + "OVERFLOW_ROUTING", + ], + }, + "overrides": { + "description": "A " + "list " + "of " + "alternate " + "quota " + "rules " + "that " + "apply " + "to " + "specific " + "sets " + "of " + "events, " + "identified " + "by " + "matching " + "field " + "values. " + "Each " + "override " + "can " + "define " + "a " + "custom " + "limit.", + "items": { + "description": "Defines " + "a " + "custom " + "quota " + "limit " + "that " + "applies " + "to " + "specific " + "log " + "events " + "based " + "on " + "matching " + "field " + "values.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "field " + "matchers " + "used " + "to " + "apply " + "a " + "specific " + "override. " + "If " + "an " + "event " + "matches " + "all " + "listed " + "key-value " + "pairs, " + "the " + "corresponding " + "override " + "limit " + "is " + "enforced.", + "items": { + "description": "Represents " + "a " + "static " + "key-value " + "pair " + "used " + "in " + "various " + "processors.", + "properties": { + "name": { + "description": "The " + "field " + "name.", + "example": "field_name", + "type": "string", + }, + "value": { + "description": "The " + "field " + "value.", + "example": "field_value", + "type": "string", + }, + }, + "required": [ + "name", + "value", + ], + "type": "object", + }, + "type": "array", + }, + "limit": { + "description": "The " + "maximum " + "amount " + "of " + "data " + "or " + "number " + "of " + "events " + "allowed " + "before " + "the " + "quota " + "is " + "enforced. " + "Can " + "be " + "specified " + "in " + "bytes " + "or " + "events.", + "properties": { + "enforce": { + "description": "Unit " + "for " + "quota " + "enforcement " + "in " + "bytes " + "for " + "data " + "size " + "or " + "events " + "for " + "count.", + "enum": [ + "bytes", + "events", + ], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES", + "EVENTS", + ], + }, + "limit": { + "description": "The " + "limit " + "for " + "quota " + "enforcement.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + }, + "required": [ + "enforce", + "limit", + ], + "type": "object", + }, + }, + "required": ["fields", "limit"], + "type": "object", + }, + "type": "array", + }, + "partition_fields": { + "description": "A " + "list " + "of " + "fields " + "used " + "to " + "segment " + "log " + "traffic " + "for " + "quota " + "enforcement. " + "Quotas " + "are " + "tracked " + "independently " + "by " + "unique " + "combinations " + "of " + "these " + "field " + "values.", + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "quota", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`quota`.", + "enum": ["quota"], + "example": "quota", + "type": "string", + "x-enum-varnames": ["QUOTA"], + }, + }, + "required": [ + "id", + "type", + "include", + "name", + "drop_events", + "limit", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`add_fields` " + "processor " + "adds " + "static " + "key-value " + "fields " + "to " + "logs.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "static " + "fields " + "(key-value " + "pairs) " + "that " + "is " + "added " + "to " + "each " + "log " + "event " + "processed " + "by " + "this " + "component.", + "items": { + "description": "Represents " + "a " + "static " + "key-value " + "pair " + "used " + "in " + "various " + "processors.", + "properties": { + "name": { + "description": "The " + "field " + "name.", + "example": "field_name", + "type": "string", + }, + "value": { + "description": "The " + "field " + "value.", + "example": "field_value", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "add-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "add_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`add_fields`.", + "enum": ["add_fields"], + "example": "add_fields", + "type": "string", + "x-enum-varnames": ["ADD_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`remove_fields` " + "processor " + "deletes " + "specified " + "fields " + "from " + "logs.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "field " + "names " + "to " + "be " + "removed " + "from " + "each " + "log " + "event.", + "example": ["field1", "field2"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "remove-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "The " + "`PipelineRemoveFieldsProcessor` " + "`inputs`.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "remove_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`remove_fields`.", + "enum": ["remove_fields"], + "example": "remove_fields", + "type": "string", + "x-enum-varnames": ["REMOVE_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`rename_fields` " + "processor " + "changes " + "field " + "names.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "rename " + "rules " + "specifying " + "which " + "fields " + "to " + "rename " + "in " + "the " + "event, " + "what " + "to " + "rename " + "them " + "to, " + "and " + "whether " + "to " + "preserve " + "the " + "original " + "fields.", + "items": { + "description": "Defines " + "how " + "to " + "rename " + "a " + "field " + "in " + "log " + "events.", + "properties": { + "destination": { + "description": "The " + "field " + "name " + "to " + "assign " + "the " + "renamed " + "value " + "to.", + "example": "destination_field", + "type": "string", + }, + "preserve_source": { + "description": "Indicates " + "whether " + "the " + "original " + "field, " + "that " + "is " + "received " + "from " + "the " + "source, " + "should " + "be " + "kept " + "(`true`) " + "or " + "removed " + "(`false`) " + "after " + "renaming.", + "example": False, + "type": "boolean", + }, + "source": { + "description": "The " + "original " + "field " + "name " + "in " + "the " + "log " + "event " + "that " + "should " + "be " + "renamed.", + "example": "source_field", + "type": "string", + }, + }, + "required": [ + "source", + "destination", + "preserve_source", + ], + "type": "object", + }, + "type": "array", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "rename-fields-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "rename_fields", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rename_fields`.", + "enum": ["rename_fields"], + "example": "rename_fields", + "type": "string", + "x-enum-varnames": ["RENAME_FIELDS"], + }, + }, + "required": [ + "id", + "type", + "include", + "fields", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`generate_datadog_metrics` " + "processor " + "creates " + "custom " + "metrics " + "from " + "logs " + "and " + "sends " + "them " + "to " + "Datadog.\n" + "Metrics " + "can " + "be " + "counters, " + "gauges, " + "or " + "distributions " + "and " + "optionally " + "grouped " + "by " + "log " + "fields.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline.", + "example": "generate-metrics-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "processor.", + "example": ["source-id"], + "items": {"type": "string"}, + "type": "array", + }, + "metrics": { + "description": "Configuration " + "for " + "generating " + "individual " + "metrics.", + "items": { + "description": "Defines " + "a " + "log-based " + "custom " + "metric, " + "including " + "its " + "name, " + "type, " + "filter, " + "value " + "computation " + "strategy,\n" + "and " + "optional " + "grouping " + "fields.", + "properties": { + "group_by": { + "description": "Optional " + "fields " + "used " + "to " + "group " + "the " + "metric " + "series.", + "example": [ + "service", + "env", + ], + "items": {"type": "string"}, + "type": "array", + }, + "include": { + "description": "Datadog " + "filter " + "query " + "to " + "match " + "logs " + "for " + "metric " + "generation.", + "example": "service:billing", + "type": "string", + }, + "metric_type": { + "description": "Type " + "of " + "metric " + "to " + "create.", + "enum": [ + "count", + "gauge", + "distribution", + ], + "example": "count", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "GAUGE", + "DISTRIBUTION", + ], + }, + "name": { + "description": "Name " + "of " + "the " + "custom " + "metric " + "to " + "be " + "created.", + "example": "logs.processed", + "type": "string", + }, + "value": { + "description": "Specifies " + "how " + "the " + "value " + "of " + "the " + "generated " + "metric " + "is " + "computed.", + "oneOf": [ + { + "description": "Strategy " + "that " + "increments " + "a " + "generated " + "metric " + "by " + "one " + "for " + "each " + "matching " + "event.", + "properties": { + "strategy": { + "description": "Increments " + "the " + "metric " + "by " + "1 " + "for " + "each " + "matching " + "event.", + "enum": [ + "increment_by_one" + ], + "example": "increment_by_one", + "type": "string", + "x-enum-varnames": [ + "INCREMENT_BY_ONE" + ], + } + }, + "required": [ + "strategy" + ], + "type": "object", + }, + { + "description": "Strategy " + "that " + "increments " + "a " + "generated " + "metric " + "based " + "on " + "the " + "value " + "of " + "a " + "log " + "field.", + "properties": { + "field": { + "description": "Name " + "of " + "the " + "log " + "field " + "containing " + "the " + "numeric " + "value " + "to " + "increment " + "the " + "metric " + "by.", + "example": "errors", + "type": "string", + }, + "strategy": { + "description": "Uses " + "a " + "numeric " + "field " + "in " + "the " + "log " + "event " + "as " + "the " + "metric " + "increment.", + "enum": [ + "increment_by_field" + ], + "example": "increment_by_field", + "type": "string", + "x-enum-varnames": [ + "INCREMENT_BY_FIELD" + ], + }, + }, + "required": [ + "strategy", + "field", + ], + "type": "object", + }, + ], + }, + }, + "required": [ + "name", + "include", + "metric_type", + "value", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "generate_datadog_metrics", + "description": "The " + "processor " + "type. " + "Always " + "`generate_datadog_metrics`.", + "enum": ["generate_datadog_metrics"], + "example": "generate_datadog_metrics", + "type": "string", + "x-enum-varnames": [ + "GENERATE_DATADOG_METRICS" + ], + }, + }, + "required": [ + "id", + "type", + "inputs", + "include", + "metrics", + ], + "type": "object", + }, + { + "description": "The " + "`sample` " + "processor " + "allows " + "probabilistic " + "sampling " + "of " + "logs " + "at " + "a " + "fixed " + "rate.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "sample-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "percentage": { + "description": "The " + "percentage " + "of " + "logs " + "to " + "sample.", + "example": 10.0, + "format": "double", + "type": "number", + }, + "rate": { + "description": "Number " + "of " + "events " + "to " + "sample " + "(1 " + "in " + "N).", + "example": 10, + "format": "int64", + "minimum": 1, + "type": "integer", + }, + "type": { + "default": "sample", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sample`.", + "enum": ["sample"], + "example": "sample", + "type": "string", + "x-enum-varnames": ["SAMPLE"], + }, + }, + "required": ["id", "type", "include", "inputs"], + "type": "object", + }, + { + "description": "The " + "`parse_grok` " + "processor " + "extracts " + "structured " + "fields " + "from " + "unstructured " + "log " + "messages " + "using " + "Grok " + "patterns.", + "properties": { + "disable_library_rules": { + "default": False, + "description": "If " + "set " + "to " + "`true`, " + "disables " + "the " + "default " + "Grok " + "rules " + "provided " + "by " + "Datadog.", + "example": True, + "type": "boolean", + }, + "id": { + "description": "A " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "parse-grok-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "rules": { + "description": "The " + "list " + "of " + "Grok " + "parsing " + "rules. " + "If " + "multiple " + "matching " + "rules " + "are " + "provided, " + "they " + "are " + "evaluated " + "in " + "order. " + "The " + "first " + "successful " + "match " + "is " + "applied.", + "items": { + "description": "A " + "Grok " + "parsing " + "rule " + "used " + "in " + "the " + "`parse_grok` " + "processor. " + "Each " + "rule " + "defines " + "how " + "to " + "extract " + "structured " + "fields\n" + "from " + "a " + "specific " + "log " + "field " + "using " + "Grok " + "patterns.", + "properties": { + "match_rules": { + "description": "A " + "list " + "of " + "Grok " + "parsing " + "rules " + "that " + "define " + "how " + "to " + "extract " + "fields " + "from " + "the " + "source " + "field.\n" + "Each " + "rule " + "must " + "contain " + "a " + "name " + "and " + "a " + "valid " + "Grok " + "pattern.", + "example": [ + { + "name": "MyParsingRule", + "rule": "%{word:user} " + "connected " + "on " + '%{date("MM/dd/yyyy"):date}', + } + ], + "items": { + "description": "Defines " + "a " + "Grok " + "parsing " + "rule, " + "which " + "extracts " + "structured " + "fields " + "from " + "log " + "content " + "using " + "named " + "Grok " + "patterns.\n" + "Each " + "rule " + "must " + "have " + "a " + "unique " + "name " + "and " + "a " + "valid " + "Datadog " + "Grok " + "pattern " + "that " + "will " + "be " + "applied " + "to " + "the " + "source " + "field.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "rule.", + "example": "MyParsingRule", + "type": "string", + }, + "rule": { + "description": "The " + "definition " + "of " + "the " + "Grok " + "rule.", + "example": "%{word:user} " + "connected " + "on " + '%{date("MM/dd/yyyy"):date}', + "type": "string", + }, + }, + "required": [ + "name", + "rule", + ], + "type": "object", + }, + "type": "array", + }, + "source": { + "description": "The " + "name " + "of " + "the " + "field " + "in " + "the " + "log " + "event " + "to " + "apply " + "the " + "Grok " + "rules " + "to.", + "example": "message", + "type": "string", + }, + "support_rules": { + "description": "A " + "list " + "of " + "Grok " + "helper " + "rules " + "that " + "can " + "be " + "referenced " + "by " + "the " + "parsing " + "rules.", + "example": [ + { + "name": "user", + "rule": "%{word:user.name}", + } + ], + "items": { + "description": "The " + "Grok " + "helper " + "rule " + "referenced " + "in " + "the " + "parsing " + "rules.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "Grok " + "helper " + "rule.", + "example": "user", + "type": "string", + }, + "rule": { + "description": "The " + "definition " + "of " + "the " + "Grok " + "helper " + "rule.", + "example": " " + "%{word:user.name}", + "type": "string", + }, + }, + "required": [ + "name", + "rule", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "source", + "match_rules", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "parse_grok", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`parse_grok`.", + "enum": ["parse_grok"], + "example": "parse_grok", + "type": "string", + "x-enum-varnames": ["PARSE_GROK"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "rules", + ], + "type": "object", + }, + { + "description": "The " + "`sensitive_data_scanner` " + "processor " + "detects " + "and " + "optionally " + "redacts " + "sensitive " + "data " + "in " + "log " + "events.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "sensitive-scanner", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "source:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "rules": { + "description": "A " + "list " + "of " + "rules " + "for " + "identifying " + "and " + "acting " + "on " + "sensitive " + "data " + "patterns.", + "items": { + "description": "Defines " + "a " + "rule " + "for " + "detecting " + "sensitive " + "data, " + "including " + "matching " + "pattern, " + "scope, " + "and " + "the " + "action " + "to " + "take.", + "properties": { + "keyword_options": { + "description": "Configuration " + "for " + "keywords " + "used " + "to " + "reinforce " + "sensitive " + "data " + "pattern " + "detection.", + "properties": { + "keywords": { + "description": "A " + "list " + "of " + "keywords " + "to " + "match " + "near " + "the " + "sensitive " + "pattern.", + "example": [ + "ssn", + "card", + "account", + ], + "items": { + "type": "string" + }, + "type": "array", + }, + "proximity": { + "description": "Maximum " + "number " + "of " + "tokens " + "between " + "a " + "keyword " + "and " + "a " + "sensitive " + "value " + "match.", + "example": 5, + "format": "int64", + "type": "integer", + }, + }, + "required": [ + "keywords", + "proximity", + ], + "type": "object", + }, + "name": { + "description": "A " + "name " + "identifying " + "the " + "rule.", + "example": "Redact " + "Credit " + "Card " + "Numbers", + "type": "string", + }, + "on_match": { + "description": "Defines " + "what " + "action " + "to " + "take " + "when " + "sensitive " + "data " + "is " + "matched.", + "oneOf": [ + { + "description": "Configuration " + "for " + "completely " + "redacting " + "matched " + "sensitive " + "data.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "completely " + "replaces " + "the " + "matched " + "sensitive " + "data " + "with " + "a " + "fixed " + "replacement " + "string " + "to " + "remove " + "all " + "visibility.", + "enum": [ + "redact" + ], + "example": "redact", + "type": "string", + "x-enum-varnames": [ + "REDACT" + ], + }, + "options": { + "description": "Configuration " + "for " + "fully " + "redacting " + "sensitive " + "data.", + "properties": { + "replace": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionRedactOptions` " + "`replace`.", + "example": "***", + "type": "string", + } + }, + "required": [ + "replace" + ], + "type": "object", + }, + }, + "required": [ + "action", + "options", + ], + "type": "object", + }, + { + "description": "Configuration " + "for " + "hashing " + "matched " + "sensitive " + "values.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "replaces " + "the " + "matched " + "sensitive " + "data " + "with " + "a " + "hashed " + "representation, " + "preserving " + "structure " + "while " + "securing " + "content.", + "enum": [ + "hash" + ], + "example": "hash", + "type": "string", + "x-enum-varnames": [ + "HASH" + ], + }, + "options": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionHash` " + "`options`.", + "type": "object", + }, + }, + "required": [ + "action" + ], + "type": "object", + }, + { + "description": "Configuration " + "for " + "partially " + "redacting " + "matched " + "sensitive " + "data.", + "properties": { + "action": { + "description": "Action " + "type " + "that " + "redacts " + "part " + "of " + "the " + "sensitive " + "data " + "while " + "preserving " + "a " + "configurable " + "number " + "of " + "characters, " + "typically " + "used " + "for " + "masking " + "purposes " + "(e.g., " + "show " + "last " + "4 " + "digits " + "of " + "a " + "credit " + "card).", + "enum": [ + "partial_redact" + ], + "example": "partial_redact", + "type": "string", + "x-enum-varnames": [ + "PARTIAL_REDACT" + ], + }, + "options": { + "description": "Controls " + "how " + "partial " + "redaction " + "is " + "applied, " + "including " + "character " + "count " + "and " + "direction.", + "properties": { + "characters": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorActionPartialRedactOptions` " + "`characters`.", + "example": 4, + "format": "int64", + "type": "integer", + }, + "direction": { + "description": "Indicates " + "whether " + "to " + "redact " + "characters " + "from " + "the " + "first " + "or " + "last " + "part " + "of " + "the " + "matched " + "value.", + "enum": [ + "first", + "last", + ], + "example": "last", + "type": "string", + "x-enum-varnames": [ + "FIRST", + "LAST", + ], + }, + }, + "required": [ + "characters", + "direction", + ], + "type": "object", + }, + }, + "required": [ + "action", + "options", + ], + "type": "object", + }, + ], + }, + "pattern": { + "description": "Pattern " + "detection " + "configuration " + "for " + "identifying " + "sensitive " + "data " + "using " + "either " + "a " + "custom " + "regex " + "or " + "a " + "library " + "reference.", + "oneOf": [ + { + "description": "Defines " + "a " + "custom " + "regex-based " + "pattern " + "for " + "identifying " + "sensitive " + "data " + "in " + "logs.", + "properties": { + "options": { + "description": "Options " + "for " + "defining " + "a " + "custom " + "regex " + "pattern.", + "properties": { + "rule": { + "description": "A " + "regular " + "expression " + "used " + "to " + "detect " + "sensitive " + "values. " + "Must " + "be " + "a " + "valid " + "regex.", + "example": "\\b\\d{16}\\b", + "type": "string", + } + }, + "required": [ + "rule" + ], + "type": "object", + }, + "type": { + "description": "Indicates " + "a " + "custom " + "regular " + "expression " + "is " + "used " + "for " + "matching.", + "enum": [ + "custom" + ], + "example": "custom", + "type": "string", + "x-enum-varnames": [ + "CUSTOM" + ], + }, + }, + "required": [ + "type", + "options", + ], + "type": "object", + }, + { + "description": "Specifies " + "a " + "pattern " + "from " + "Datadog’s " + "sensitive " + "data " + "detection " + "library " + "to " + "match " + "known " + "sensitive " + "data " + "types.", + "properties": { + "options": { + "description": "Options " + "for " + "selecting " + "a " + "predefined " + "library " + "pattern " + "and " + "enabling " + "keyword " + "support.", + "properties": { + "id": { + "description": "Identifier " + "for " + "a " + "predefined " + "pattern " + "from " + "the " + "sensitive " + "data " + "scanner " + "pattern " + "library.", + "example": "credit_card", + "type": "string", + }, + "use_recommended_keywords": { + "description": "Whether " + "to " + "augment " + "the " + "pattern " + "with " + "recommended " + "keywords " + "(optional).", + "type": "boolean", + }, + }, + "required": [ + "id" + ], + "type": "object", + }, + "type": { + "description": "Indicates " + "that " + "a " + "predefined " + "library " + "pattern " + "is " + "used.", + "enum": [ + "library" + ], + "example": "library", + "type": "string", + "x-enum-varnames": [ + "LIBRARY" + ], + }, + }, + "required": [ + "type", + "options", + ], + "type": "object", + }, + ], + }, + "scope": { + "description": "Determines " + "which " + "parts " + "of " + "the " + "log " + "the " + "pattern-matching " + "rule " + "should " + "be " + "applied " + "to.", + "oneOf": [ + { + "description": "Includes " + "only " + "specific " + "fields " + "for " + "sensitive " + "data " + "scanning.", + "properties": { + "options": { + "description": "Fields " + "to " + "which " + "the " + "scope " + "rule " + "applies.", + "properties": { + "fields": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` " + "`fields`.", + "example": [ + "" + ], + "items": { + "type": "string" + }, + "type": "array", + } + }, + "required": [ + "fields" + ], + "type": "object", + }, + "target": { + "description": "Applies " + "the " + "rule " + "only " + "to " + "included " + "fields.", + "enum": [ + "include" + ], + "example": "include", + "type": "string", + "x-enum-varnames": [ + "INCLUDE" + ], + }, + }, + "required": [ + "target", + "options", + ], + "type": "object", + }, + { + "description": "Excludes " + "specific " + "fields " + "from " + "sensitive " + "data " + "scanning.", + "properties": { + "options": { + "description": "Fields " + "to " + "which " + "the " + "scope " + "rule " + "applies.", + "properties": { + "fields": { + "description": "The " + "`ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` " + "`fields`.", + "example": [ + "" + ], + "items": { + "type": "string" + }, + "type": "array", + } + }, + "required": [ + "fields" + ], + "type": "object", + }, + "target": { + "description": "Excludes " + "specific " + "fields " + "from " + "processing.", + "enum": [ + "exclude" + ], + "example": "exclude", + "type": "string", + "x-enum-varnames": [ + "EXCLUDE" + ], + }, + }, + "required": [ + "target", + "options", + ], + "type": "object", + }, + { + "description": "Applies " + "scanning " + "across " + "all " + "available " + "fields.", + "properties": { + "target": { + "description": "Applies " + "the " + "rule " + "to " + "all " + "fields.", + "enum": [ + "all" + ], + "example": "all", + "type": "string", + "x-enum-varnames": [ + "ALL" + ], + } + }, + "required": [ + "target" + ], + "type": "object", + }, + ], + }, + "tags": { + "description": "Tags " + "assigned " + "to " + "this " + "rule " + "for " + "filtering " + "and " + "classification.", + "example": ["pii", "ccn"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": [ + "name", + "tags", + "pattern", + "scope", + "on_match", + ], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "sensitive_data_scanner", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sensitive_data_scanner`.", + "enum": ["sensitive_data_scanner"], + "example": "sensitive_data_scanner", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER" + ], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "rules", + ], + "type": "object", + }, + { + "description": "The " + "`ocsf_mapper` " + "processor " + "transforms " + "logs " + "into " + "the " + "OCSF " + "schema " + "using " + "a " + "predefined " + "mapping " + "configuration.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline.", + "example": "ocsf-mapper-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "processor.", + "example": ["filter-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mappings": { + "description": "A " + "list " + "of " + "mapping " + "rules " + "to " + "convert " + "events " + "to " + "the " + "OCSF " + "format.", + "items": { + "description": "Defines " + "how " + "specific " + "events " + "are " + "transformed " + "to " + "OCSF " + "using " + "a " + "mapping " + "configuration.", + "properties": { + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "select " + "the " + "logs " + "that " + "this " + "mapping " + "should " + "apply " + "to.", + "example": "service:my-service", + "type": "string", + }, + "mapping": { + "description": "Defines " + "a " + "single " + "mapping " + "rule " + "for " + "transforming " + "logs " + "into " + "the " + "OCSF " + "schema.", + "oneOf": [ + { + "description": "Predefined " + "library " + "mappings " + "for " + "common " + "log " + "formats.", + "enum": [ + "CloudTrail " + "Account " + "Change", + "GCP " + "Cloud " + "Audit " + "CreateBucket", + "GCP " + "Cloud " + "Audit " + "CreateSink", + "GCP " + "Cloud " + "Audit " + "SetIamPolicy", + "GCP " + "Cloud " + "Audit " + "UpdateSink", + "Github " + "Audit " + "Log " + "API " + "Activity", + "Google " + "Workspace " + "Admin " + "Audit " + "addPrivilege", + "Microsoft " + "365 " + "Defender " + "Incident", + "Microsoft " + "365 " + "Defender " + "UserLoggedIn", + "Okta " + "System " + "Log " + "Authentication", + "Palo " + "Alto " + "Networks " + "Firewall " + "Traffic", + ], + "example": "CloudTrail " + "Account " + "Change", + "type": "string", + "x-enum-varnames": [ + "CLOUDTRAIL_ACCOUNT_CHANGE", + "GCP_CLOUD_AUDIT_CREATEBUCKET", + "GCP_CLOUD_AUDIT_CREATESINK", + "GCP_CLOUD_AUDIT_SETIAMPOLICY", + "GCP_CLOUD_AUDIT_UPDATESINK", + "GITHUB_AUDIT_LOG_API_ACTIVITY", + "GOOGLE_WORKSPACE_ADMIN_AUDIT_ADDPRIVILEGE", + "MICROSOFT_365_DEFENDER_INCIDENT", + "MICROSOFT_365_DEFENDER_USERLOGGEDIN", + "OKTA_SYSTEM_LOG_AUTHENTICATION", + "PALO_ALTO_NETWORKS_FIREWALL_TRAFFIC", + ], + } + ], + }, + }, + "required": ["include", "mapping"], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "ocsf_mapper", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`ocsf_mapper`.", + "enum": ["ocsf_mapper"], + "example": "ocsf_mapper", + "type": "string", + "x-enum-varnames": ["OCSF_MAPPER"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "mappings", + ], + "type": "object", + }, + { + "description": "The " + "`add_env_vars` " + "processor " + "adds " + "environment " + "variable " + "values " + "to " + "log " + "events.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "processor " + "in " + "the " + "pipeline.", + "example": "add-env-vars-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "add_env_vars", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`add_env_vars`.", + "enum": ["add_env_vars"], + "example": "add_env_vars", + "type": "string", + "x-enum-varnames": ["ADD_ENV_VARS"], + }, + "variables": { + "description": "A " + "list " + "of " + "environment " + "variable " + "mappings " + "to " + "apply " + "to " + "log " + "fields.", + "items": { + "description": "Defines " + "a " + "mapping " + "between " + "an " + "environment " + "variable " + "and " + "a " + "log " + "field.", + "properties": { + "field": { + "description": "The " + "target " + "field " + "in " + "the " + "log " + "event.", + "example": "log.environment.region", + "type": "string", + }, + "name": { + "description": "The " + "name " + "of " + "the " + "environment " + "variable " + "to " + "read.", + "example": "AWS_REGION", + "type": "string", + }, + }, + "required": ["field", "name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "variables", + ], + "type": "object", + }, + { + "description": "The " + "`dedupe` " + "processor " + "removes " + "duplicate " + "fields " + "in " + "log " + "events.", + "properties": { + "fields": { + "description": "A " + "list " + "of " + "log " + "field " + "paths " + "to " + "check " + "for " + "duplicates.", + "example": ["log.message", "log.error"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "dedupe-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "The " + "deduplication " + "mode " + "to " + "apply " + "to " + "the " + "fields.", + "enum": ["match", "ignore"], + "example": "match", + "type": "string", + "x-enum-varnames": ["MATCH", "IGNORE"], + }, + "type": { + "default": "dedupe", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`dedupe`.", + "enum": ["dedupe"], + "example": "dedupe", + "type": "string", + "x-enum-varnames": ["DEDUPE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "fields", + "mode", + ], + "type": "object", + }, + { + "description": "The " + "`enrichment_table` " + "processor " + "enriches " + "logs " + "using " + "a " + "static " + "CSV " + "file " + "or " + "GeoIP " + "database.", + "properties": { + "file": { + "description": "Defines " + "a " + "static " + "enrichment " + "table " + "loaded " + "from " + "a " + "CSV " + "file.", + "properties": { + "encoding": { + "description": "File " + "encoding " + "format.", + "properties": { + "delimiter": { + "description": "The " + "`encoding` " + "`delimiter`.", + "example": ",", + "type": "string", + }, + "includes_headers": { + "description": "The " + "`encoding` " + "`includes_headers`.", + "example": True, + "type": "boolean", + }, + "type": { + "description": "Specifies " + "the " + "encoding " + "format " + "(e.g., " + "CSV) " + "used " + "for " + "enrichment " + "tables.", + "enum": ["csv"], + "example": "csv", + "type": "string", + "x-enum-varnames": [ + "CSV" + ], + }, + }, + "required": [ + "type", + "delimiter", + "includes_headers", + ], + "type": "object", + }, + "key": { + "description": "Key " + "fields " + "used " + "to " + "look " + "up " + "enrichment " + "values.", + "items": { + "description": "Defines " + "how " + "to " + "map " + "log " + "fields " + "to " + "enrichment " + "table " + "columns " + "during " + "lookups.", + "properties": { + "column": { + "description": "The " + "`items` " + "`column`.", + "example": "user_id", + "type": "string", + }, + "comparison": { + "description": "Defines " + "how " + "to " + "compare " + "key " + "fields " + "for " + "enrichment " + "table " + "lookups.", + "enum": ["equals"], + "example": "equals", + "type": "string", + "x-enum-varnames": [ + "EQUALS" + ], + }, + "field": { + "description": "The " + "`items` " + "`field`.", + "example": "log.user.id", + "type": "string", + }, + }, + "required": [ + "column", + "comparison", + "field", + ], + "type": "object", + }, + "type": "array", + }, + "path": { + "description": "Path " + "to " + "the " + "CSV " + "file.", + "example": "/etc/enrichment/lookup.csv", + "type": "string", + }, + "schema": { + "description": "Schema " + "defining " + "column " + "names " + "and " + "their " + "types.", + "items": { + "description": "Describes " + "a " + "single " + "column " + "and " + "its " + "type " + "in " + "an " + "enrichment " + "table " + "schema.", + "properties": { + "column": { + "description": "The " + "`items` " + "`column`.", + "example": "region", + "type": "string", + }, + "type": { + "description": "Declares " + "allowed " + "data " + "types " + "for " + "enrichment " + "table " + "columns.", + "enum": [ + "string", + "boolean", + "integer", + "float", + "date", + "timestamp", + ], + "example": "string", + "type": "string", + "x-enum-varnames": [ + "STRING", + "BOOLEAN", + "INTEGER", + "FLOAT", + "DATE", + "TIMESTAMP", + ], + }, + }, + "required": [ + "column", + "type", + ], + "type": "object", + }, + "type": "array", + }, + }, + "required": [ + "encoding", + "key", + "path", + "schema", + ], + "type": "object", + }, + "geoip": { + "description": "Uses " + "a " + "GeoIP " + "database " + "to " + "enrich " + "logs " + "based " + "on " + "an " + "IP " + "field.", + "properties": { + "key_field": { + "description": "Path " + "to " + "the " + "IP " + "field " + "in " + "the " + "log.", + "example": "log.source.ip", + "type": "string", + }, + "locale": { + "description": "Locale " + "used " + "to " + "resolve " + "geographical " + "names.", + "example": "en", + "type": "string", + }, + "path": { + "description": "Path " + "to " + "the " + "GeoIP " + "database " + "file.", + "example": "/etc/geoip/GeoLite2-City.mmdb", + "type": "string", + }, + }, + "required": [ + "key_field", + "locale", + "path", + ], + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "enrichment-table-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "source:my-source", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["add-fields-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "target": { + "description": "Path " + "where " + "enrichment " + "results " + "should " + "be " + "stored " + "in " + "the " + "log.", + "example": "enriched.geoip", + "type": "string", + }, + "type": { + "default": "enrichment_table", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`enrichment_table`.", + "enum": ["enrichment_table"], + "example": "enrichment_table", + "type": "string", + "x-enum-varnames": ["ENRICHMENT_TABLE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "target", + ], + "type": "object", + }, + { + "description": "The " + "`reduce` " + "processor " + "aggregates " + "and " + "merges " + "logs " + "based " + "on " + "matching " + "keys " + "and " + "merge " + "strategies.", + "properties": { + "group_by": { + "description": "A " + "list " + "of " + "fields " + "used " + "to " + "group " + "log " + "events " + "for " + "merging.", + "example": [ + "log.user.id", + "log.device.id", + ], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "reduce-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "env:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["parse-json-processor"], + "items": {"type": "string"}, + "type": "array", + }, + "merge_strategies": { + "description": "List " + "of " + "merge " + "strategies " + "defining " + "how " + "values " + "from " + "grouped " + "events " + "should " + "be " + "combined.", + "items": { + "description": "Defines " + "how " + "a " + "specific " + "field " + "should " + "be " + "merged " + "across " + "grouped " + "events.", + "properties": { + "path": { + "description": "The " + "field " + "path " + "in " + "the " + "log " + "event.", + "example": "log.user.roles", + "type": "string", + }, + "strategy": { + "description": "The " + "merge " + "strategy " + "to " + "apply.", + "enum": [ + "discard", + "retain", + "sum", + "max", + "min", + "array", + "concat", + "concat_newline", + "concat_raw", + "shortest_array", + "longest_array", + "flat_unique", + ], + "example": "flat_unique", + "type": "string", + "x-enum-varnames": [ + "DISCARD", + "RETAIN", + "SUM", + "MAX", + "MIN", + "ARRAY", + "CONCAT", + "CONCAT_NEWLINE", + "CONCAT_RAW", + "SHORTEST_ARRAY", + "LONGEST_ARRAY", + "FLAT_UNIQUE", + ], + }, + }, + "required": ["path", "strategy"], + "type": "object", + }, + "type": "array", + }, + "type": { + "default": "reduce", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`reduce`.", + "enum": ["reduce"], + "example": "reduce", + "type": "string", + "x-enum-varnames": ["REDUCE"], + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "group_by", + "merge_strategies", + ], + "type": "object", + }, + { + "description": "The " + "`throttle` " + "processor " + "limits " + "the " + "number " + "of " + "events " + "that " + "pass " + "through " + "over " + "a " + "given " + "time " + "window.", + "properties": { + "group_by": { + "description": "Optional " + "list " + "of " + "fields " + "used " + "to " + "group " + "events " + "before " + "the " + "threshold " + "has " + "been " + "reached.", + "example": ["log.user.id"], + "items": {"type": "string"}, + "type": "array", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "throttle-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "env:prod", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "threshold": { + "description": "the " + "number " + "of " + "events " + "allowed " + "in " + "a " + "given " + "time " + "window. " + "Events " + "sent " + "after " + "the " + "threshold " + "has " + "been " + "reached, " + "are " + "dropped.", + "example": 1000, + "format": "int64", + "type": "integer", + }, + "type": { + "default": "throttle", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`throttle`.", + "enum": ["throttle"], + "example": "throttle", + "type": "string", + "x-enum-varnames": ["THROTTLE"], + }, + "window": { + "description": "The " + "time " + "window " + "in " + "seconds " + "over " + "which " + "the " + "threshold " + "applies.", + "example": 60.0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "id", + "type", + "include", + "inputs", + "threshold", + "window", + ], + "type": "object", + }, + { + "description": "The " + "`custom_processor` " + "processor " + "transforms " + "events " + "using " + "[Vector " + "Remap " + "Language " + "(VRL)](https://vector.dev/docs/reference/vrl/) " + "scripts " + "with " + "advanced " + "filtering " + "capabilities.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "processor.", + "example": "remap-vrl-processor", + "type": "string", + }, + "include": { + "default": "*", + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets. " + "This " + "field " + "should " + "always " + "be " + "set " + "to " + "`*` " + "for " + "the " + "custom_processor " + "processor.", + "example": "*", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "input " + "for " + "this " + "processor.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "remaps": { + "description": "Array " + "of " + "VRL " + "remap " + "rules.", + "items": { + "description": "Defines " + "a " + "single " + "VRL " + "remap " + "rule " + "with " + "its " + "own " + "filtering " + "and " + "transformation " + "logic.", + "properties": { + "drop_on_error": { + "description": "Whether " + "to " + "drop " + "events " + "that " + "caused " + "errors " + "during " + "processing.", + "example": False, + "type": "boolean", + }, + "enabled": { + "description": "Whether " + "this " + "remap " + "rule " + "is " + "enabled.", + "example": True, + "type": "boolean", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "filter " + "events " + "for " + "this " + "specific " + "remap " + "rule.", + "example": "service:web", + "type": "string", + }, + "name": { + "description": "A " + "descriptive " + "name " + "for " + "this " + "remap " + "rule.", + "example": "Parse " + "JSON " + "from " + "message " + "field", + "type": "string", + }, + "source": { + "description": "The " + "VRL " + "script " + "source " + "code " + "that " + "defines " + "the " + "processing " + "logic.", + "example": ". " + "= " + "parse_json!(.message)", + "type": "string", + }, + }, + "required": [ + "include", + "name", + "source", + "enabled", + "drop_on_error", + ], + "type": "object", + }, + "minItems": 1, + "type": "array", + }, + "type": { + "default": "custom_processor", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`custom_processor`.", + "enum": ["custom_processor"], + "example": "custom_processor", + "type": "string", + "x-enum-varnames": ["CUSTOM_PROCESSOR"], + }, + }, + "required": [ + "id", + "type", + "include", + "remaps", + "inputs", + ], + "type": "object", + }, + { + "description": "The " + "`datadog_tags` " + "processor " + "includes " + "or " + "excludes " + "specific " + "Datadog " + "tags " + "in " + "your " + "logs.", + "properties": { + "action": { + "description": "The " + "action " + "to " + "take " + "on " + "tags " + "with " + "matching " + "keys.", + "enum": ["include", "exclude"], + "example": "include", + "type": "string", + "x-enum-varnames": [ + "INCLUDE", + "EXCLUDE", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "datadog-tags-processor", + "type": "string", + }, + "include": { + "description": "A " + "Datadog " + "search " + "query " + "used " + "to " + "determine " + "which " + "logs " + "this " + "processor " + "targets.", + "example": "service:my-service", + "type": "string", + }, + "inputs": { + "description": "A " + "list " + "of " + "component " + "IDs " + "whose " + "output " + "is " + "used " + "as " + "the " + "`input` " + "for " + "this " + "component.", + "example": ["datadog-agent-source"], + "items": {"type": "string"}, + "type": "array", + }, + "keys": { + "description": "A list of tag keys.", + "example": [ + "env", + "service", + "version", + ], + "items": {"type": "string"}, + "type": "array", + }, + "mode": { + "description": "The processing mode.", + "enum": ["filter"], + "example": "filter", + "type": "string", + "x-enum-varnames": ["FILTER"], + }, + "type": { + "default": "datadog_tags", + "description": "The " + "processor " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_tags`.", + "enum": ["datadog_tags"], + "example": "datadog_tags", + "type": "string", + "x-enum-varnames": ["DATADOG_TAGS"], + }, + }, + "required": [ + "id", + "type", + "include", + "mode", + "action", + "keys", + "inputs", + ], + "type": "object", + }, + ], + }, + "type": "array", + }, + "sources": { + "description": "A " + "list " + "of " + "configured " + "data " + "sources " + "for " + "the " + "pipeline.", + "example": [ + {"id": "datadog-agent-source", "type": "datadog_agent"} + ], + "items": { + "description": "A data source for the pipeline.", + "oneOf": [ + { + "description": "The " + "`kafka` " + "source " + "ingests " + "data " + "from " + "Apache " + "Kafka " + "topics.", + "properties": { + "group_id": { + "description": "Consumer " + "group " + "ID " + "used " + "by " + "the " + "Kafka " + "client.", + "example": "consumer-group-0", + "type": "string", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "kafka-source", + "type": "string", + }, + "librdkafka_options": { + "description": "Optional " + "list " + "of " + "advanced " + "Kafka " + "client " + "configuration " + "options, " + "defined " + "as " + "key-value " + "pairs.", + "items": { + "description": "Represents " + "a " + "key-value " + "pair " + "used " + "to " + "configure " + "low-level " + "`librdkafka` " + "client " + "options " + "for " + "Kafka " + "sources, " + "such " + "as " + "timeouts, " + "buffer " + "sizes, " + "and " + "security " + "settings.", + "properties": { + "name": { + "description": "The " + "name " + "of " + "the " + "`librdkafka` " + "configuration " + "option " + "to " + "set.", + "example": "fetch.message.max.bytes", + "type": "string", + }, + "value": { + "description": "The " + "value " + "assigned " + "to " + "the " + "specified " + "`librdkafka` " + "configuration " + "option.", + "example": "1048576", + "type": "string", + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "sasl": { + "description": "Specifies " + "the " + "SASL " + "mechanism " + "for " + "authenticating " + "with " + "a " + "Kafka " + "cluster.", + "properties": { + "mechanism": { + "description": "SASL " + "mechanism " + "used " + "for " + "Kafka " + "authentication.", + "enum": [ + "PLAIN", + "SCRAM-SHA-256", + "SCRAM-SHA-512", + ], + "type": "string", + "x-enum-varnames": [ + "PLAIN", + "SCRAMNOT_SHANOT_256", + "SCRAMNOT_SHANOT_512", + ], + } + }, + "type": "object", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "topics": { + "description": "A " + "list " + "of " + "Kafka " + "topic " + "names " + "to " + "subscribe " + "to. " + "The " + "source " + "ingests " + "messages " + "from " + "each " + "topic " + "specified.", + "example": ["topic1", "topic2"], + "items": {"type": "string"}, + "type": "array", + }, + "type": { + "default": "kafka", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`kafka`.", + "enum": ["kafka"], + "example": "kafka", + "type": "string", + "x-enum-varnames": ["KAFKA"], + }, + }, + "required": [ + "id", + "type", + "group_id", + "topics", + ], + "type": "object", + }, + { + "description": "The " + "`datadog_agent` " + "source " + "collects " + "logs " + "from " + "the " + "Datadog " + "Agent.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "datadog-agent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "datadog_agent", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`datadog_agent`.", + "enum": ["datadog_agent"], + "example": "datadog_agent", + "type": "string", + "x-enum-varnames": ["DATADOG_AGENT"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`splunk_tcp` " + "source " + "receives " + "logs " + "from " + "a " + "Splunk " + "Universal " + "Forwarder " + "over " + "TCP.\n" + "TLS " + "is " + "supported " + "for " + "secure " + "transmission.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-tcp-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "splunk_tcp", + "description": "The " + "source " + "type. " + "Always " + "`splunk_tcp`.", + "enum": ["splunk_tcp"], + "example": "splunk_tcp", + "type": "string", + "x-enum-varnames": ["SPLUNK_TCP"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`splunk_hec` " + "source " + "implements " + "the " + "Splunk " + "HTTP " + "Event " + "Collector " + "(HEC) " + "API.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "splunk-hec-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "splunk_hec", + "description": "The " + "source " + "type. " + "Always " + "`splunk_hec`.", + "enum": ["splunk_hec"], + "example": "splunk_hec", + "type": "string", + "x-enum-varnames": ["SPLUNK_HEC"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`amazon_s3` " + "source " + "ingests " + "logs " + "from " + "an " + "Amazon " + "S3 " + "bucket.\n" + "It " + "supports " + "AWS " + "authentication " + "and " + "TLS " + "encryption.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "aws-s3-source", + "type": "string", + }, + "region": { + "description": "AWS " + "region " + "where " + "the " + "S3 " + "bucket " + "resides.", + "example": "us-east-1", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_s3", + "description": "The " + "source " + "type. " + "Always " + "`amazon_s3`.", + "enum": ["amazon_s3"], + "example": "amazon_s3", + "type": "string", + "x-enum-varnames": ["AMAZON_S3"], + }, + }, + "required": ["id", "type", "region"], + "type": "object", + }, + { + "description": "The " + "`fluentd` " + "source " + "ingests " + "logs " + "from " + "a " + "Fluentd-compatible " + "service.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "fluent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "fluentd", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`fluentd.", + "enum": ["fluentd"], + "example": "fluentd", + "type": "string", + "x-enum-varnames": ["FLUENTD"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`fluent_bit` " + "source " + "ingests " + "logs " + "from " + "Fluent " + "Bit.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(for " + "example, " + "as " + "the " + "`input` " + "to " + "downstream " + "components).", + "example": "fluent-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "fluent_bit", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`fluent_bit`.", + "enum": ["fluent_bit"], + "example": "fluent_bit", + "type": "string", + "x-enum-varnames": ["FLUENT_BIT"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`http_server` " + "source " + "collects " + "logs " + "over " + "HTTP " + "POST " + "from " + "external " + "services.", + "properties": { + "auth_strategy": { + "description": "HTTP " + "authentication " + "method.", + "enum": ["none", "plain"], + "example": "plain", + "type": "string", + "x-enum-varnames": ["NONE", "PLAIN"], + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "Unique " + "ID " + "for " + "the " + "HTTP " + "server " + "source.", + "example": "http-server-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "http_server", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`http_server`.", + "enum": ["http_server"], + "example": "http_server", + "type": "string", + "x-enum-varnames": ["HTTP_SERVER"], + }, + }, + "required": [ + "id", + "type", + "auth_strategy", + "decoding", + ], + "type": "object", + }, + { + "description": "The " + "`sumo_logic` " + "source " + "receives " + "logs " + "from " + "Sumo " + "Logic " + "collectors.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "sumo-logic-source", + "type": "string", + }, + "type": { + "default": "sumo_logic", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`sumo_logic`.", + "enum": ["sumo_logic"], + "example": "sumo_logic", + "type": "string", + "x-enum-varnames": ["SUMO_LOGIC"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`rsyslog` " + "source " + "listens " + "for " + "logs " + "over " + "TCP " + "or " + "UDP " + "from " + "an " + "`rsyslog` " + "server " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "rsyslog-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "by " + "the " + "syslog " + "source " + "to " + "receive " + "messages.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "rsyslog", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`rsyslog`.", + "enum": ["rsyslog"], + "example": "rsyslog", + "type": "string", + "x-enum-varnames": ["RSYSLOG"], + }, + }, + "required": ["id", "type", "mode"], + "type": "object", + }, + { + "description": "The " + "`syslog_ng` " + "source " + "listens " + "for " + "logs " + "over " + "TCP " + "or " + "UDP " + "from " + "a " + "`syslog-ng` " + "server " + "using " + "the " + "syslog " + "protocol.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "syslog-ng-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "by " + "the " + "syslog " + "source " + "to " + "receive " + "messages.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "syslog_ng", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`syslog_ng`.", + "enum": ["syslog_ng"], + "example": "syslog_ng", + "type": "string", + "x-enum-varnames": ["SYSLOG_NG"], + }, + }, + "required": ["id", "type", "mode"], + "type": "object", + }, + { + "description": "The " + "`amazon_data_firehose` " + "source " + "ingests " + "logs " + "from " + "AWS " + "Data " + "Firehose.", + "properties": { + "auth": { + "description": "AWS " + "authentication " + "credentials " + "used " + "for " + "accessing " + "AWS " + "services " + "such " + "as " + "S3.\n" + "If " + "omitted, " + "the " + "system’s " + "default " + "credentials " + "are " + "used " + "(for " + "example, " + "the " + "IAM " + "role " + "and " + "environment " + "variables).", + "properties": { + "assume_role": { + "description": "The " + "Amazon " + "Resource " + "Name " + "(ARN) " + "of " + "the " + "role " + "to " + "assume.", + "type": "string", + }, + "external_id": { + "description": "A " + "unique " + "identifier " + "for " + "cross-account " + "role " + "assumption.", + "type": "string", + }, + "session_name": { + "description": "A " + "session " + "identifier " + "used " + "for " + "logging " + "and " + "tracing " + "the " + "assumed " + "role " + "session.", + "type": "string", + }, + }, + "type": "object", + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "amazon-firehose-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "amazon_data_firehose", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`amazon_data_firehose`.", + "enum": ["amazon_data_firehose"], + "example": "amazon_data_firehose", + "type": "string", + "x-enum-varnames": [ + "AMAZON_DATA_FIREHOSE" + ], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`google_pubsub` " + "source " + "ingests " + "logs " + "from " + "a " + "Google " + "Cloud " + "Pub/Sub " + "subscription.", + "properties": { + "auth": { + "description": "GCP " + "credentials " + "used " + "to " + "authenticate " + "with " + "Google " + "Cloud " + "Storage.", + "properties": { + "credentials_file": { + "description": "Path " + "to " + "the " + "GCP " + "service " + "account " + "key " + "file.", + "example": "/var/secrets/gcp-credentials.json", + "type": "string", + } + }, + "required": ["credentials_file"], + "type": "object", + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "google-pubsub-source", + "type": "string", + }, + "project": { + "description": "The " + "GCP " + "project " + "ID " + "that " + "owns " + "the " + "Pub/Sub " + "subscription.", + "example": "my-gcp-project", + "type": "string", + }, + "subscription": { + "description": "The " + "Pub/Sub " + "subscription " + "name " + "from " + "which " + "messages " + "are " + "consumed.", + "example": "logs-subscription", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "google_pubsub", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`google_pubsub`.", + "enum": ["google_pubsub"], + "example": "google_pubsub", + "type": "string", + "x-enum-varnames": ["GOOGLE_PUBSUB"], + }, + }, + "required": [ + "id", + "type", + "auth", + "decoding", + "project", + "subscription", + ], + "type": "object", + }, + { + "description": "The " + "`http_client` " + "source " + "scrapes " + "logs " + "from " + "HTTP " + "endpoints " + "at " + "regular " + "intervals.", + "properties": { + "auth_strategy": { + "description": "Optional " + "authentication " + "strategy " + "for " + "HTTP " + "requests.", + "enum": ["basic", "bearer"], + "example": "basic", + "type": "string", + "x-enum-varnames": ["BASIC", "BEARER"], + }, + "decoding": { + "description": "The " + "decoding " + "format " + "used " + "to " + "interpret " + "incoming " + "logs.", + "enum": [ + "bytes", + "gelf", + "json", + "syslog", + ], + "example": "json", + "type": "string", + "x-enum-varnames": [ + "DECODE_BYTES", + "DECODE_GELF", + "DECODE_JSON", + "DECODE_SYSLOG", + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "http-client-source", + "type": "string", + }, + "scrape_interval_secs": { + "description": "The " + "interval " + "(in " + "seconds) " + "between " + "HTTP " + "scrape " + "requests.", + "example": 60, + "format": "int64", + "type": "integer", + }, + "scrape_timeout_secs": { + "description": "The " + "timeout " + "(in " + "seconds) " + "for " + "each " + "scrape " + "request.", + "example": 10, + "format": "int64", + "type": "integer", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "http_client", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`http_client`.", + "enum": ["http_client"], + "example": "http_client", + "type": "string", + "x-enum-varnames": ["HTTP_CLIENT"], + }, + }, + "required": ["id", "type", "decoding"], + "type": "object", + }, + { + "description": "The " + "`logstash` " + "source " + "ingests " + "logs " + "from " + "a " + "Logstash " + "forwarder.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "logstash-source", + "type": "string", + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "logstash", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`logstash`.", + "enum": ["logstash"], + "example": "logstash", + "type": "string", + "x-enum-varnames": ["LOGSTASH"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + { + "description": "The " + "`socket` " + "source " + "ingests " + "logs " + "over " + "TCP " + "or " + "UDP.", + "properties": { + "framing": { + "description": "Framing " + "method " + "configuration " + "for " + "the " + "socket " + "source.", + "oneOf": [ + { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "newline " + "character.", + "properties": { + "method": { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "newline " + "character.", + "enum": [ + "newline_delimited" + ], + "example": "newline_delimited", + "type": "string", + "x-enum-varnames": [ + "NEWLINE_DELIMITED" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "are " + "passed " + "through " + "as-is " + "according " + "to " + "the " + "underlying " + "I/O " + "boundaries " + "(for " + "example, " + "split " + "between " + "messages " + "or " + "stream " + "segments).", + "properties": { + "method": { + "description": "Byte " + "frames " + "are " + "passed " + "through " + "as-is " + "according " + "to " + "the " + "underlying " + "I/O " + "boundaries " + "(for " + "example, " + "split " + "between " + "messages " + "or " + "stream " + "segments).", + "enum": ["bytes"], + "example": "bytes", + "type": "string", + "x-enum-varnames": [ + "BYTES" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "chosen " + "character.", + "properties": { + "delimiter": { + "description": "A " + "single " + "ASCII " + "character " + "used " + "to " + "delimit " + "events.", + "example": "|", + "maxLength": 1, + "minLength": 1, + "type": "string", + }, + "method": { + "description": "Byte " + "frames " + "which " + "are " + "delimited " + "by " + "a " + "chosen " + "character.", + "enum": [ + "character_delimited" + ], + "example": "character_delimited", + "type": "string", + "x-enum-varnames": [ + "CHARACTER_DELIMITED" + ], + }, + }, + "required": [ + "method", + "delimiter", + ], + "type": "object", + }, + { + "description": "Byte " + "frames " + "according " + "to " + "the " + "octet " + "counting " + "format " + "as " + "per " + "RFC6587.", + "properties": { + "method": { + "description": "Byte " + "frames " + "according " + "to " + "the " + "octet " + "counting " + "format " + "as " + "per " + "RFC6587.", + "enum": [ + "octet_counting" + ], + "example": "octet_counting", + "type": "string", + "x-enum-varnames": [ + "OCTET_COUNTING" + ], + } + }, + "required": ["method"], + "type": "object", + }, + { + "description": "Byte " + "frames " + "which " + "are " + "chunked " + "GELF " + "messages.", + "properties": { + "method": { + "description": "Byte " + "frames " + "which " + "are " + "chunked " + "GELF " + "messages.", + "enum": [ + "chunked_gelf" + ], + "example": "chunked_gelf", + "type": "string", + "x-enum-varnames": [ + "CHUNKED_GELF" + ], + } + }, + "required": ["method"], + "type": "object", + }, + ], + }, + "id": { + "description": "The " + "unique " + "identifier " + "for " + "this " + "component. " + "Used " + "to " + "reference " + "this " + "component " + "in " + "other " + "parts " + "of " + "the " + "pipeline " + "(e.g., " + "as " + "input " + "to " + "downstream " + "components).", + "example": "socket-source", + "type": "string", + }, + "mode": { + "description": "Protocol " + "used " + "to " + "receive " + "logs.", + "enum": ["tcp", "udp"], + "example": "tcp", + "type": "string", + "x-enum-varnames": ["TCP", "UDP"], + }, + "tls": { + "description": "Configuration " + "for " + "enabling " + "TLS " + "encryption " + "between " + "the " + "pipeline " + "component " + "and " + "external " + "services.", + "properties": { + "ca_file": { + "description": "Path " + "to " + "the " + "Certificate " + "Authority " + "(CA) " + "file " + "used " + "to " + "validate " + "the " + "server’s " + "TLS " + "certificate.", + "type": "string", + }, + "crt_file": { + "description": "Path " + "to " + "the " + "TLS " + "client " + "certificate " + "file " + "used " + "to " + "authenticate " + "the " + "pipeline " + "component " + "with " + "upstream " + "or " + "downstream " + "services.", + "example": "/path/to/cert.crt", + "type": "string", + }, + "key_file": { + "description": "Path " + "to " + "the " + "private " + "key " + "file " + "associated " + "with " + "the " + "TLS " + "client " + "certificate. " + "Used " + "for " + "mutual " + "TLS " + "authentication.", + "type": "string", + }, + }, + "required": ["crt_file"], + "type": "object", + }, + "type": { + "default": "socket", + "description": "The " + "source " + "type. " + "The " + "value " + "should " + "always " + "be " + "`socket`.", + "enum": ["socket"], + "example": "socket", + "type": "string", + "x-enum-varnames": ["SOCKET"], + }, + }, + "required": ["id", "type", "mode", "framing"], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "required": ["sources", "destinations"], + "type": "object", + }, + "name": { + "description": "Name of the pipeline.", + "example": "Main Observability Pipeline", + "type": "string", + }, + }, + "required": ["name", "config"], + "type": "object", + }, + "id": { + "description": "Unique identifier for the pipeline.", + "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "type": "string", + }, + "type": { + "default": "pipelines", + "description": "The resource type " + "identifier. For " + "pipeline resources, " + "this should always be " + "set to `pipelines`.", + "example": "pipelines", + "type": "string", + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATERESTRICTIONPOLICY_REQUEST_BODY_SCHEMA": { + "description": "Update request for a restriction policy.", + "properties": { + "data": { + "description": "Restriction policy object.", + "properties": { + "attributes": { + "description": "Restriction policy attributes.", + "example": {"bindings": []}, + "properties": { + "bindings": { + "description": "An array of bindings.", + "items": { + "description": "Specifies " + "which " + "principals " + "are " + "associated " + "with " + "a " + "relation.", + "properties": { + "principals": { + "description": "An " + "array " + "of " + "principals. " + "A " + "principal " + "is " + "a " + "subject " + "or " + "group " + "of " + "subjects.\n" + "Each " + "principal " + "is " + "formatted " + "as " + "`type:id`. " + "Supported " + "types: " + "`role`, " + "`team`, " + "`user`, " + "and " + "`org`.\n" + "The " + "org " + "ID " + "can " + "be " + "obtained " + "through " + "the " + "api/v2/current_user " + "API.\n" + "The " + "user " + "principal " + "type " + "accepts " + "service " + "account " + "IDs.", + "example": [ + "role:00000000-0000-1111-0000-000000000000" + ], + "items": { + "description": "Subject " + "or " + "group " + "of " + "subjects. " + "Each " + "principal " + "is " + "formatted " + "as " + "`type:id`.\n" + "Supported " + "types: " + "`role`, " + "`team`, " + "`user`, " + "and " + "`org`.\n" + "The " + "org " + "ID " + "can " + "be " + "obtained " + "through " + "the " + "api/v2/current_user " + "API.\n" + "The " + "user " + "principal " + "type " + "accepts " + "service " + "account " + "IDs.", + "type": "string", + }, + "type": "array", + }, + "relation": { + "description": "The role/level of access.", + "example": "editor", + "type": "string", + }, + }, + "required": ["relation", "principals"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["bindings"], + "type": "object", + }, + "id": { + "description": "The identifier, always " + "equivalent to the value " + "specified in the " + "`resource_id` path " + "parameter.", + "example": "dashboard:abc-def-ghi", + "type": "string", + }, + "type": { + "default": "restriction_policy", + "description": "Restriction policy type.", + "enum": ["restriction_policy"], + "example": "restriction_policy", + "type": "string", + "x-enum-varnames": ["RESTRICTION_POLICY"], + }, + }, + "required": ["type", "id", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEROLE_REQUEST_BODY_SCHEMA": { + "description": "Create a role.", + "properties": { + "data": { + "description": "Data related to the creation of a role.", + "properties": { + "attributes": { + "description": "Attributes of the created role.", + "properties": { + "created_at": { + "description": "Creation time of the role.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "modified_at": { + "description": "Time of last role modification.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "name": { + "description": "Name of the role.", + "example": "developers", + "type": "string", + }, + }, + "required": ["name"], + "type": "object", + }, + "relationships": { + "description": "Relationships of the role object.", + "properties": { + "permissions": { + "description": "Relationship to multiple permissions objects.", + "properties": { + "data": { + "description": "Relationships to permission objects.", + "items": { + "description": "Relationship to permission object.", + "properties": { + "id": { + "description": "ID of the permission.", + "type": "string", + }, + "type": { + "default": "permissions", + "description": "Permissions resource type.", + "enum": ["permissions"], + "example": "permissions", + "type": "string", + "x-enum-varnames": ["PERMISSIONS"], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": ["roles"], + "example": "roles", + "type": "string", + "x-enum-varnames": ["ROLES"], + }, + }, + "required": ["attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "EDITROLE_REQUEST_BODY_SCHEMA": { + "description": "Update a role.", + "properties": { + "data": { + "description": "Data related to the update of a role.", + "properties": { + "attributes": { + "description": "Attributes of the role.", + "properties": { + "created_at": { + "description": "Creation time of the role.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "modified_at": { + "description": "Time of last role modification.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "name": {"description": "Name of the role.", "type": "string"}, + "user_count": { + "description": "The user count.", + "format": "int32", + "maximum": 2147483647, + "type": "integer", + }, + }, + "type": "object", + }, + "id": { + "description": "The unique identifier of the role.", + "example": "00000000-0000-1111-0000-000000000000", + "type": "string", + }, + "relationships": { + "description": "Relationships of the role object.", + "properties": { + "permissions": { + "description": "Relationship to multiple permissions objects.", + "properties": { + "data": { + "description": "Relationships to permission objects.", + "items": { + "description": "Relationship to permission object.", + "properties": { + "id": { + "description": "ID of the permission.", + "type": "string", + }, + "type": { + "default": "permissions", + "description": "Permissions resource type.", + "enum": ["permissions"], + "example": "permissions", + "type": "string", + "x-enum-varnames": ["PERMISSIONS"], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": ["roles"], + "example": "roles", + "type": "string", + "x-enum-varnames": ["ROLES"], + }, + }, + "required": ["attributes", "type", "id"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "AGGREGATERUMEVENTS_REQUEST_BODY_SCHEMA": { + "description": "The object sent with the request to retrieve aggregation buckets of " + "RUM events from your organization.", + "properties": { + "compute": { + "description": "The list of metrics or timeseries to " + "compute for the retrieved buckets.", + "items": { + "description": "A compute rule to compute metrics or timeseries.", + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + ], + }, + "interval": { + "description": "The " + "time " + "buckets' " + "size " + "(only " + "used " + "for " + "type=timeseries)\n" + "Defaults " + "to a " + "resolution " + "of " + "150 " + "points.", + "example": "5m", + "type": "string", + }, + "metric": { + "description": "The metric to use.", + "example": "@duration", + "type": "string", + }, + "type": { + "default": "total", + "description": "The type of compute.", + "enum": ["timeseries", "total"], + "type": "string", + "x-enum-varnames": ["TIMESERIES", "TOTAL"], + }, + }, + "required": ["aggregation"], + "type": "object", + }, + "type": "array", + }, + "filter": { + "description": "The search and filter query settings.", + "properties": { + "from": { + "default": "now-15m", + "description": "The minimum time " + "for the requested " + "events; supports " + "date (in [ISO " + "8601](https://www.w3.org/TR/NOTE-datetime) " + "format with full " + "date, hours, " + "minutes, and the " + "`Z` UTC indicator - " + "seconds and " + "fractional seconds " + "are optional), " + "math, and regular " + "timestamps (in " + "milliseconds).", + "example": "now-15m", + "type": "string", + }, + "query": { + "default": "*", + "description": "The search query following the RUM search syntax.", + "example": "@type:session AND @session.type:user", + "type": "string", + }, + "to": { + "default": "now", + "description": "The maximum time for " + "the requested events; " + "supports date (in " + "[ISO " + "8601](https://www.w3.org/TR/NOTE-datetime) " + "format with full " + "date, hours, minutes, " + "and the `Z` UTC " + "indicator - seconds " + "and fractional " + "seconds are " + "optional), math, and " + "regular timestamps " + "(in milliseconds).", + "example": "now", + "type": "string", + }, + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group-by rule.", + "properties": { + "facet": { + "description": "The name of the facet to use (required).", + "example": "@view.time_spent", + "type": "string", + }, + "histogram": { + "description": "Used " + "to " + "perform " + "a " + "histogram " + "computation " + "(only " + "for " + "measure " + "facets).\n" + "Note: " + "At " + "most " + "100 " + "buckets " + "are " + "allowed, " + "the " + "number " + "of " + "buckets " + "is " + "(max " + "- " + "min)/interval.", + "properties": { + "interval": { + "description": "The bin size of the histogram buckets.", + "example": 10, + "format": "double", + "type": "number", + }, + "max": { + "description": "The " + "maximum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "greater " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 100, + "format": "double", + "type": "number", + }, + "min": { + "description": "The " + "minimum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "smaller " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 50, + "format": "double", + "type": "number", + }, + }, + "required": ["interval", "min", "max"], + "type": "object", + }, + "limit": { + "default": 10, + "description": "The maximum buckets to return for this group-by.", + "format": "int64", + "type": "integer", + }, + "missing": { + "description": "The " + "value " + "to " + "use " + "for " + "logs " + "that " + "don't " + "have " + "the " + "facet " + "used " + "to " + "group " + "by.", + "oneOf": [ + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "string " + "valued " + "facet.", + "type": "string", + }, + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "a " + "number " + "valued " + "facet.", + "format": "double", + "type": "number", + }, + ], + }, + "sort": { + "description": "A sort rule.", + "example": {"aggregation": "count", "order": "asc"}, + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + ], + }, + "metric": { + "description": "The " + "metric " + "to " + "sort " + "by " + "(only " + "used " + "for " + "`type=measure`).", + "example": "@duration", + "type": "string", + }, + "order": { + "description": "The order to use, ascending or descending.", + "enum": ["asc", "desc"], + "example": "asc", + "type": "string", + "x-enum-varnames": ["ASCENDING", "DESCENDING"], + }, + "type": { + "default": "alphabetical", + "description": "The type of sorting algorithm.", + "enum": ["alphabetical", "measure"], + "type": "string", + "x-enum-varnames": ["ALPHABETICAL", "MEASURE"], + }, + }, + "type": "object", + }, + "total": { + "default": False, + "description": "A " + "resulting " + "object " + "to put " + "the " + "given " + "computes " + "in " + "over " + "all " + "the " + "matching " + "records.", + "oneOf": [ + { + "description": "If " + "set " + "to " + "true, " + "creates " + "an " + "additional " + "bucket " + "labeled " + '"$facet_total".', + "type": "boolean", + }, + { + "description": "A " + "string " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "type": "string", + }, + { + "description": "A " + "number " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "format": "double", + "type": "number", + }, + ], + }, + }, + "required": ["facet"], + "type": "object", + }, + "type": "array", + }, + "options": { + "description": "Global query options that are used during " + "the query.\n" + "Note: Only supply timezone or time offset, " + "not both. Otherwise, the query fails.", + "properties": { + "time_offset": { + "description": "The time offset (in seconds) to apply to the query.", + "format": "int64", + "type": "integer", + }, + "timezone": { + "default": "UTC", + "description": "The timezone " + "can be " + "specified as " + "GMT, UTC, an " + "offset from " + "UTC (like " + "UTC+1), or as " + "a Timezone " + "Database " + "identifier " + "(like " + "America/New_York).", + "example": "GMT", + "type": "string", + }, + }, + "type": "object", + }, + "page": { + "description": "Paging attributes for listing events.", + "properties": { + "cursor": { + "description": "List following " + "results with a " + "cursor provided in " + "the previous query.", + "example": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", + "type": "string", + }, + "limit": { + "default": 10, + "description": "Maximum number of events in the response.", + "example": 25, + "format": "int32", + "maximum": 1000, + "type": "integer", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "ORDERRUMRETENTIONFILTERS_REQUEST_BODY_SCHEMA": { + "description": "The list of RUM retention filter IDs along with their corresponding " + "type to reorder.\n" + "All retention filter IDs should be included in the list created for a " + "RUM application.", + "properties": { + "data": { + "description": "A list of RUM retention filter IDs along with type.", + "items": { + "description": "The RUM retention filter data for ordering.", + "properties": { + "id": { + "description": "ID of retention filter in UUID.", + "example": "051601eb-54a0-abc0-03f9-cc02efa18892", + "type": "string", + }, + "type": { + "default": "retention_filters", + "description": "The type of " + "the " + "resource. " + "The value " + "should " + "always be " + "retention_filters.", + "enum": ["retention_filters"], + "example": "retention_filters", + "type": "string", + "x-enum-varnames": ["RETENTION_FILTERS"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "CREATERUMMETRIC_REQUEST_BODY_SCHEMA": { + "description": "The new rum-based metric body.", + "properties": { + "data": { + "description": "The new rum-based metric properties.", + "properties": { + "attributes": { + "description": "The object " + "describing the " + "Datadog " + "rum-based " + "metric to " + "create.", + "properties": { + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "aggregation_type": { + "description": "The type of aggregation to use.", + "enum": ["count", "distribution"], + "example": "distribution", + "type": "string", + "x-enum-varnames": ["COUNT", "DISTRIBUTION"], + }, + "include_percentiles": { + "description": "Toggle " + "to " + "include " + "or " + "exclude " + "percentile " + "aggregations " + "for " + "distribution " + "metrics.\n" + "Only " + "present " + "when " + "`aggregation_type` " + "is " + "`distribution`.", + "example": True, + "type": "boolean", + }, + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "rum-based " + "metric " + "will " + "aggregate " + "on.\n" + "Only " + "present " + "when " + "`aggregation_type` " + "is " + "`distribution`.", + "example": "@duration", + "type": "string", + }, + }, + "required": ["aggregation_type"], + "type": "object", + }, + "event_type": { + "description": "The type of RUM events to filter on.", + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital", + ], + "example": "session", + "type": "string", + "x-enum-varnames": [ + "SESSION", + "VIEW", + "ACTION", + "ERROR", + "RESOURCE", + "LONG_TASK", + "VITAL", + ], + }, + "filter": { + "description": "The " + "rum-based " + "metric " + "filter. " + "Events " + "matching " + "this " + "filter " + "will " + "be " + "aggregated " + "in " + "this " + "metric.", + "properties": { + "query": { + "default": "*", + "description": "The " + "search " + "query " + "- " + "following " + "the " + "RUM " + "search " + "syntax.", + "example": "@service:web-ui: ", + "type": "string", + } + }, + "required": ["query"], + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "rum-based " + "metric " + "will " + "be " + "aggregated " + "over.", + "example": "@browser.name", + "type": "string", + }, + "tag_name": { + "description": "Eventual " + "name " + "of " + "the " + "tag " + "that " + "gets " + "created. " + "By " + "default, " + "`path` " + "is " + "used " + "as " + "the " + "tag " + "name.", + "example": "browser_name", + "type": "string", + }, + }, + "required": ["path"], + "type": "object", + }, + "type": "array", + }, + "uniqueness": { + "description": "The " + "rule " + "to " + "count " + "updatable " + "events. " + "Is " + "only " + "set " + "if " + "`event_type` " + "is " + "`sessions` " + "or " + "`views`.", + "properties": { + "when": { + "description": "When " + "to " + "count " + "updatable " + "events. " + "`match` " + "when " + "the " + "event " + "is " + "first " + "seen, " + "or " + "`end` " + "when " + "the " + "event " + "is " + "complete.", + "enum": ["match", "end"], + "example": "match", + "type": "string", + "x-enum-varnames": ["WHEN_MATCH", "WHEN_END"], + } + }, + "required": ["when"], + "type": "object", + }, + }, + "required": ["event_type", "compute"], + "type": "object", + }, + "id": { + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string", + }, + "type": { + "default": "rum_metrics", + "description": "The type of the " + "resource. The value " + "should always be " + "rum_metrics.", + "enum": ["rum_metrics"], + "example": "rum_metrics", + "type": "string", + "x-enum-varnames": ["RUM_METRICS"], + }, + }, + "required": ["id", "type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATERUMMETRIC_REQUEST_BODY_SCHEMA": { + "description": "The new rum-based metric body.", + "properties": { + "data": { + "description": "The new rum-based metric properties.", + "properties": { + "attributes": { + "description": "The rum-based metric properties that will be updated.", + "properties": { + "compute": { + "description": "The compute rule to compute the rum-based metric.", + "properties": { + "include_percentiles": { + "description": "Toggle " + "to " + "include " + "or " + "exclude " + "percentile " + "aggregations " + "for " + "distribution " + "metrics.\n" + "Only " + "present " + "when " + "`aggregation_type` " + "is " + "`distribution`.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "filter": { + "description": "The " + "rum-based " + "metric " + "filter. " + "Events " + "matching " + "this " + "filter " + "will " + "be " + "aggregated " + "in " + "this " + "metric.", + "properties": { + "query": { + "default": "*", + "description": "The " + "search " + "query " + "- " + "following " + "the " + "RUM " + "search " + "syntax.", + "example": "@service:web-ui: ", + "type": "string", + } + }, + "required": ["query"], + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "path": { + "description": "The " + "path " + "to " + "the " + "value " + "the " + "rum-based " + "metric " + "will " + "be " + "aggregated " + "over.", + "example": "@browser.name", + "type": "string", + }, + "tag_name": { + "description": "Eventual " + "name " + "of " + "the " + "tag " + "that " + "gets " + "created. " + "By " + "default, " + "`path` " + "is " + "used " + "as " + "the " + "tag " + "name.", + "example": "browser_name", + "type": "string", + }, + }, + "required": ["path"], + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "id": { + "description": "The name of the rum-based metric.", + "example": "rum.sessions.webui.count", + "type": "string", + }, + "type": { + "default": "rum_metrics", + "description": "The type of the " + "resource. The value " + "should always be " + "rum_metrics.", + "enum": ["rum_metrics"], + "example": "rum_metrics", + "type": "string", + "x-enum-varnames": ["RUM_METRICS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATESCORECARDOUTCOMES_REQUEST_BODY_SCHEMA": { + "description": "Scorecard outcomes batch request.", + "properties": { + "data": { + "description": "Scorecard outcomes batch request data.", + "properties": { + "attributes": { + "description": "The JSON:API " + "attributes for " + "a batched set " + "of scorecard " + "outcomes.", + "properties": { + "results": { + "description": "Set " + "of " + "scorecard " + "outcomes " + "to " + "update " + "asynchronously.", + "items": { + "description": "Scorecard " + "outcome " + "for " + "a " + "single " + "entity " + "and " + "rule.", + "properties": { + "entity_reference": { + "description": "The " + "unique " + "reference " + "for " + "an " + "IDP " + "entity.", + "example": "service:my-service", + "type": "string", + }, + "remarks": { + "description": "Any " + "remarks " + "regarding " + "the " + "scorecard " + "rule's " + "evaluation. " + "Supports " + "HTML " + "hyperlinks.", + "example": "See: " + "Services', + "type": "string", + }, + "rule_id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string", + }, + "state": { + "description": "The state of the rule evaluation.", + "enum": ["pass", "fail", "skip"], + "example": "pass", + "type": "string", + "x-enum-varnames": ["PASS", "FAIL", "SKIP"], + }, + }, + "required": ["rule_id", "entity_reference", "state"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "type": { + "default": "batched-outcome", + "description": "The JSON:API type for scorecard outcomes.", + "enum": ["batched-outcome"], + "example": "batched-outcome", + "type": "string", + "x-enum-varnames": ["BATCHED_OUTCOME"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "SETSERVICERULEOUTCOMESBATCH_REQUEST_BODY_SCHEMA": { + "description": "Scorecard outcomes batch request.", + "properties": { + "data": { + "description": "Scorecard outcomes batch request data.", + "properties": { + "attributes": { + "description": "The JSON:API " + "attributes for " + "a batched set " + "of scorecard " + "outcomes.", + "properties": { + "results": { + "description": "Set of scorecard outcomes to update.", + "items": { + "description": "Scorecard " + "outcome " + "for " + "a " + "specific " + "rule, " + "for " + "a " + "given " + "service " + "within " + "a " + "batched " + "update.", + "properties": { + "remarks": { + "description": "Any " + "remarks " + "regarding " + "the " + "scorecard " + "rule's " + "evaluation, " + "and " + "supports " + "HTML " + "hyperlinks.", + "example": "See: " + "Services', + "type": "string", + }, + "rule_id": { + "description": "The unique ID for a scorecard rule.", + "example": "q8MQxk8TCqrHnWkx", + "type": "string", + }, + "service_name": { + "description": "The " + "unique " + "name " + "for " + "a " + "service " + "in " + "the " + "catalog.", + "example": "my-service", + "type": "string", + }, + "state": { + "description": "The state of the rule evaluation.", + "enum": ["pass", "fail", "skip"], + "example": "pass", + "type": "string", + "x-enum-varnames": ["PASS", "FAIL", "SKIP"], + }, + }, + "required": ["rule_id", "service_name", "state"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "type": { + "default": "batched-outcome", + "description": "The JSON:API type for scorecard outcomes.", + "enum": ["batched-outcome"], + "example": "batched-outcome", + "type": "string", + "x-enum-varnames": ["BATCHED_OUTCOME"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "CREATESCORECARDRULE_REQUEST_BODY_SCHEMA": { + "description": "Scorecard create rule request.", + "properties": { + "data": { + "description": "Scorecard create rule request data.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": True, + "description": "The scorecard name to which this rule must belong.", + "type": "string", + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string", + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean", + }, + "description": { + "description": "Explanation of the rule.", + "type": "string", + }, + "enabled": { + "description": "If " + "enabled, " + "the " + "rule " + "is " + "calculated " + "as " + "part " + "of " + "the " + "score.", + "example": True, + "type": "boolean", + }, + "level": { + "description": "The maturity level of the rule (1, 2, or 3).", + "example": 2, + "format": "int32", + "maximum": 3, + "minimum": 1, + "type": "integer", + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string", + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string", + }, + "owner": {"description": "Owner of the rule.", "type": "string"}, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": ["rule"], + "example": "rule", + "type": "string", + "x-enum-varnames": ["RULE"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "UPDATESCORECARDRULE_REQUEST_BODY_SCHEMA": { + "description": "Request to update a scorecard rule.", + "properties": { + "data": { + "description": "Data for the request to update a scorecard rule.", + "properties": { + "attributes": { + "description": "Details of a rule.", + "properties": { + "category": { + "deprecated": True, + "description": "The scorecard name to which this rule must belong.", + "type": "string", + }, + "created_at": { + "description": "Creation time of the rule outcome.", + "format": "date-time", + "type": "string", + }, + "custom": { + "description": "Defines if the rule is a custom rule.", + "type": "boolean", + }, + "description": { + "description": "Explanation of the rule.", + "type": "string", + }, + "enabled": { + "description": "If " + "enabled, " + "the " + "rule " + "is " + "calculated " + "as " + "part " + "of " + "the " + "score.", + "example": True, + "type": "boolean", + }, + "level": { + "description": "The maturity level of the rule (1, 2, or 3).", + "example": 2, + "format": "int32", + "maximum": 3, + "minimum": 1, + "type": "integer", + }, + "modified_at": { + "description": "Time of the last rule outcome modification.", + "format": "date-time", + "type": "string", + }, + "name": { + "description": "Name of the rule.", + "example": "Team Defined", + "type": "string", + }, + "owner": {"description": "Owner of the rule.", "type": "string"}, + "scorecard_name": { + "description": "The scorecard name to which this rule must belong.", + "example": "Deployments automated via Deployment Trains", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "default": "rule", + "description": "The JSON:API type for scorecard rules.", + "enum": ["rule"], + "example": "rule", + "type": "string", + "x-enum-varnames": ["RULE"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "CREATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the Agent rule to create", + "properties": { + "data": { + "description": "Object for a single Agent rule", + "properties": { + "attributes": { + "description": "Create a new Cloud Workload Security Agent rule.", + "properties": { + "actions": { + "description": "The " + "array " + "of " + "actions " + "the " + "rule " + "can " + "perform " + "if " + "triggered", + "items": { + "description": "The action the rule can perform if triggered", + "properties": { + "filter": { + "description": "SECL " + "expression " + "used " + "to " + "target " + "the " + "container " + "to " + "apply " + "the " + "action " + "on", + "type": "string", + }, + "hash": { + "additionalProperties": {}, + "description": "An " + "empty " + "object " + "indicating " + "the " + "hash " + "action", + "type": "object", + }, + "kill": { + "description": "Kill " + "system " + "call " + "applied " + "on " + "the " + "container " + "matching " + "the " + "rule", + "properties": { + "signal": { + "description": "Supported " + "signals " + "for " + "the " + "kill " + "system " + "call", + "type": "string", + } + }, + "type": "object", + }, + "metadata": { + "description": "The " + "metadata " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "image_tag": { + "description": "The " + "image " + "tag " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "service": { + "description": "The " + "service " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "short_image": { + "description": "The " + "short " + "image " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + }, + "type": "object", + }, + "set": { + "description": "The " + "set " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "append": { + "description": "Whether " + "the " + "value " + "should " + "be " + "appended " + "to " + "the " + "field.", + "type": "boolean", + }, + "default_value": { + "description": "The " + "default " + "value " + "of " + "the " + "set " + "action", + "type": "string", + }, + "expression": { + "description": "The " + "expression " + "of " + "the " + "set " + "action.", + "type": "string", + }, + "field": { + "description": "The field of the set action", + "type": "string", + }, + "inherited": { + "description": "Whether " + "the " + "value " + "should " + "be " + "inherited.", + "type": "boolean", + }, + "name": { + "description": "The name of the set action", + "type": "string", + }, + "scope": { + "description": "The scope of the set action.", + "type": "string", + }, + "size": { + "description": "The size of the set action.", + "format": "int64", + "type": "integer", + }, + "ttl": { + "description": "The " + "time " + "to " + "live " + "of " + "the " + "set " + "action.", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "The value of the set action", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "nullable": True, + "type": "array", + }, + "agent_version": { + "description": "Constrain " + "the " + "rule " + "to " + "specific " + "versions " + "of " + "the " + "Datadog " + "Agent.", + "type": "string", + }, + "blocking": { + "description": "The blocking policies that the rule belongs to.", + "items": {"type": "string"}, + "type": "array", + }, + "description": { + "description": "The description of the Agent rule.", + "example": "My Agent rule", + "type": "string", + }, + "disabled": { + "description": "The disabled policies that the rule belongs to.", + "items": {"type": "string"}, + "type": "array", + }, + "enabled": { + "description": "Whether the Agent rule is enabled.", + "example": True, + "type": "boolean", + }, + "expression": { + "description": "The SECL expression of the Agent rule.", + "example": 'exec.file.name == "sh"', + "type": "string", + }, + "filters": { + "description": "The platforms the Agent rule is supported on.", + "items": {"type": "string"}, + "type": "array", + }, + "monitoring": { + "description": "The monitoring policies that the rule belongs to.", + "items": {"type": "string"}, + "type": "array", + }, + "name": { + "description": "The name of the Agent rule.", + "example": "my_agent_rule", + "type": "string", + }, + "policy_id": { + "description": "The " + "ID " + "of " + "the " + "policy " + "where " + "the " + "Agent " + "rule " + "is " + "saved.", + "example": "a8c8e364-6556-434d-b798-a4c23de29c0b", + "type": "string", + }, + "product_tags": { + "description": "The list of product tags associated with the rule.", + "items": {"type": "string"}, + "type": "array", + }, + "silent": { + "description": "Whether the rule is silent.", + "example": False, + "type": "boolean", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": { + "default": "agent_rule", + "description": "The type of the resource, must always be `agent_rule`", + "enum": ["agent_rule"], + "example": "agent_rule", + "type": "string", + "x-enum-varnames": ["AGENT_RULE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATECLOUDWORKLOADSECURITYAGENTRULE_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the Agent rule with the attributes to update", + "properties": { + "data": { + "description": "Object for a single Agent rule", + "properties": { + "attributes": { + "description": "Update an existing Cloud Workload Security Agent rule", + "properties": { + "actions": { + "description": "The " + "array " + "of " + "actions " + "the " + "rule " + "can " + "perform " + "if " + "triggered", + "items": { + "description": "The action the rule can perform if triggered", + "properties": { + "filter": { + "description": "SECL " + "expression " + "used " + "to " + "target " + "the " + "container " + "to " + "apply " + "the " + "action " + "on", + "type": "string", + }, + "hash": { + "additionalProperties": {}, + "description": "An " + "empty " + "object " + "indicating " + "the " + "hash " + "action", + "type": "object", + }, + "kill": { + "description": "Kill " + "system " + "call " + "applied " + "on " + "the " + "container " + "matching " + "the " + "rule", + "properties": { + "signal": { + "description": "Supported " + "signals " + "for " + "the " + "kill " + "system " + "call", + "type": "string", + } + }, + "type": "object", + }, + "metadata": { + "description": "The " + "metadata " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "image_tag": { + "description": "The " + "image " + "tag " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "service": { + "description": "The " + "service " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + "short_image": { + "description": "The " + "short " + "image " + "of " + "the " + "metadata " + "action", + "type": "string", + }, + }, + "type": "object", + }, + "set": { + "description": "The " + "set " + "action " + "applied " + "on " + "the " + "scope " + "matching " + "the " + "rule", + "properties": { + "append": { + "description": "Whether " + "the " + "value " + "should " + "be " + "appended " + "to " + "the " + "field.", + "type": "boolean", + }, + "default_value": { + "description": "The " + "default " + "value " + "of " + "the " + "set " + "action", + "type": "string", + }, + "expression": { + "description": "The " + "expression " + "of " + "the " + "set " + "action.", + "type": "string", + }, + "field": { + "description": "The field of the set action", + "type": "string", + }, + "inherited": { + "description": "Whether " + "the " + "value " + "should " + "be " + "inherited.", + "type": "boolean", + }, + "name": { + "description": "The name of the set action", + "type": "string", + }, + "scope": { + "description": "The scope of the set action.", + "type": "string", + }, + "size": { + "description": "The size of the set action.", + "format": "int64", + "type": "integer", + }, + "ttl": { + "description": "The " + "time " + "to " + "live " + "of " + "the " + "set " + "action.", + "format": "int64", + "type": "integer", + }, + "value": { + "description": "The value of the set action", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "nullable": True, + "type": "array", + }, + "agent_version": { + "description": "Constrain " + "the " + "rule " + "to " + "specific " + "versions " + "of " + "the " + "Datadog " + "Agent", + "type": "string", + }, + "blocking": { + "description": "The blocking policies that the rule belongs to", + "items": {"type": "string"}, + "type": "array", + }, + "description": { + "description": "The description of the Agent rule", + "example": "My Agent rule", + "type": "string", + }, + "disabled": { + "description": "The disabled policies that the rule belongs to", + "items": {"type": "string"}, + "type": "array", + }, + "enabled": { + "description": "Whether the Agent rule is enabled", + "example": True, + "type": "boolean", + }, + "expression": { + "description": "The SECL expression of the Agent rule", + "example": 'exec.file.name == "sh"', + "type": "string", + }, + "monitoring": { + "description": "The monitoring policies that the rule belongs to", + "items": {"type": "string"}, + "type": "array", + }, + "policy_id": { + "description": "The ID of the policy where the Agent rule is saved", + "example": "a8c8e364-6556-434d-b798-a4c23de29c0b", + "type": "string", + }, + "product_tags": { + "description": "The list of product tags associated with the rule", + "items": {"type": "string"}, + "type": "array", + }, + "silent": { + "description": "Whether the rule is silent.", + "example": False, + "type": "boolean", + }, + }, + "type": "object", + }, + "id": { + "description": "The ID of the Agent rule", + "example": "3dd-0uc-h1s", + "type": "string", + }, + "type": { + "default": "agent_rule", + "description": "The type of the resource, must always be `agent_rule`", + "enum": ["agent_rule"], + "example": "agent_rule", + "type": "string", + "x-enum-varnames": ["AGENT_RULE"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATESECURITYFILTER_REQUEST_BODY_SCHEMA": { + "description": "Request object that includes the security filter that you would like " + "to create.", + "properties": { + "data": { + "description": "Object for a single security filter.", + "properties": { + "attributes": { + "description": "Object " + "containing the " + "attributes of " + "the security " + "filter to be " + "created.", + "properties": { + "exclusion_filters": { + "description": "Exclusion " + "filters " + "to " + "exclude " + "some " + "logs " + "from " + "the " + "security " + "filter.", + "example": [{"name": "Exclude staging", "query": "source:staging"}], + "items": { + "description": "Exclusion filter for the security filter.", + "example": { + "name": "Exclude staging", + "query": "source:staging", + }, + "properties": { + "name": { + "description": "Exclusion filter name.", + "example": "Exclude staging", + "type": "string", + }, + "query": { + "description": "Exclusion " + "filter " + "query. " + "Logs " + "that " + "match " + "this " + "query " + "are " + "excluded " + "from " + "the " + "security " + "filter.", + "example": "source:staging", + "type": "string", + }, + }, + "required": ["name", "query"], + "type": "object", + }, + "type": "array", + }, + "filtered_data_type": { + "description": "The filtered data type.", + "enum": ["logs"], + "example": "logs", + "type": "string", + "x-enum-varnames": ["LOGS"], + }, + "is_enabled": { + "description": "Whether the security filter is enabled.", + "example": True, + "type": "boolean", + }, + "name": { + "description": "The name of the security filter.", + "example": "Custom security filter", + "type": "string", + }, + "query": { + "description": "The query of the security filter.", + "example": "service:api", + "type": "string", + }, + }, + "required": [ + "name", + "query", + "exclusion_filters", + "filtered_data_type", + "is_enabled", + ], + "type": "object", + }, + "type": { + "default": "security_filters", + "description": "The type of the " + "resource. The value " + "should always be " + "`security_filters`.", + "enum": ["security_filters"], + "example": "security_filters", + "type": "string", + "x-enum-varnames": ["SECURITY_FILTERS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATESECURITYFILTER_REQUEST_BODY_SCHEMA": { + "description": "The new security filter body.", + "properties": { + "data": { + "description": "The new security filter properties.", + "properties": { + "attributes": { + "description": "The security filters properties to be updated.", + "properties": { + "exclusion_filters": { + "description": "Exclusion " + "filters " + "to " + "exclude " + "some " + "logs " + "from " + "the " + "security " + "filter.", + "example": [], + "items": { + "description": "Exclusion filter for the security filter.", + "example": { + "name": "Exclude staging", + "query": "source:staging", + }, + "properties": { + "name": { + "description": "Exclusion filter name.", + "example": "Exclude staging", + "type": "string", + }, + "query": { + "description": "Exclusion " + "filter " + "query. " + "Logs " + "that " + "match " + "this " + "query " + "are " + "excluded " + "from " + "the " + "security " + "filter.", + "example": "source:staging", + "type": "string", + }, + }, + "required": ["name", "query"], + "type": "object", + }, + "type": "array", + }, + "filtered_data_type": { + "description": "The filtered data type.", + "enum": ["logs"], + "example": "logs", + "type": "string", + "x-enum-varnames": ["LOGS"], + }, + "is_enabled": { + "description": "Whether the security filter is enabled.", + "example": True, + "type": "boolean", + }, + "name": { + "description": "The name of the security filter.", + "example": "Custom security filter", + "type": "string", + }, + "query": { + "description": "The query of the security filter.", + "example": "service:api", + "type": "string", + }, + "version": { + "description": "The version of the security filter to update.", + "example": 1, + "format": "int32", + "maximum": 2147483647, + "type": "integer", + }, + }, + "type": "object", + }, + "type": { + "default": "security_filters", + "description": "The type of the " + "resource. The value " + "should always be " + "`security_filters`.", + "enum": ["security_filters"], + "example": "security_filters", + "type": "string", + "x-enum-varnames": ["SECURITY_FILTERS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "GETFUTURERULESUPPRESSIONS_REQUEST_BODY_SCHEMA": { + "description": "Create a new rule.", + "oneOf": [ + { + "description": "Create a new rule.", + "properties": { + "calculatedFields": { + "description": "Calculated fields. " + "Only allowed for " + "scheduled rules - in " + "other words, when " + "schedulingOptions is " + "also defined.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "groupSignalsBy": { + "description": "Additional grouping to " + "perform on top of the " + "existing groups in the " + "query section. Must be a " + "subset of the existing " + "groups.", + "example": ["service"], + "items": {"description": "Field to group by.", "type": "string"}, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting logs which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "customQueryExtension": { + "description": "Query extension to append to the logs query.", + "example": "a > 3", + "type": "string", + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "rule. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "index": { + "description": "**This " + "field " + "is " + "currently " + "unstable " + "and " + "might " + "be " + "removed " + "in " + "a " + "minor " + "version " + "upgrade.**\n" + "The " + "index " + "to " + "run " + "the " + "query " + "on, " + "if " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "type": "string", + }, + "indexes": { + "description": "List " + "of " + "indexes " + "to " + "query " + "when " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules, " + "such " + "as " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "items": {"description": "Index.", "type": "string"}, + "type": "array", + }, + "metric": { + "deprecated": True, + "description": "(Deprecated) " + "The " + "target " + "field " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum " + "or " + "max\n" + "aggregations. " + "`metrics` " + "field " + "should " + "be " + "used " + "instead.", + "type": "string", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables for the rule.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether " + "to " + "include " + "or " + "exclude " + "the " + "matched " + "values.", + "type": "boolean", + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The " + "name " + "of " + "the " + "query " + "to " + "apply " + "the " + "reference " + "table " + "to.", + "type": "string", + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "schedulingOptions": { + "description": "Options for scheduled " + "rules. When this " + "field is present, the " + "rule runs based on " + "the schedule. When " + "absent, it runs " + "real-time on ingested " + "logs.", + "nullable": True, + "properties": { + "rrule": { + "description": "Schedule " + "for " + "the " + "rule " + "queries, " + "written " + "in " + "RRULE " + "syntax. " + "See " + "[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) " + "for " + "syntax " + "reference.", + "example": "FREQ=HOURLY;INTERVAL=1;", + "type": "string", + }, + "start": { + "description": "Start " + "date " + "for " + "the " + "schedule, " + "in " + "ISO " + "8601 " + "format " + "without " + "timezone.", + "example": "2025-07-14T12:00:00", + "type": "string", + }, + "timezone": { + "description": "Time " + "zone " + "of " + "the " + "start " + "date, " + "in " + "the " + "[tz " + "database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) " + "format.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases for generating " + "signals from " + "third-party rules. Only " + "available for " + "third-party rules.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets for each case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "query": { + "description": "A " + "query " + "to " + "map " + "a " + "third " + "party " + "event " + "to " + "this " + "case.", + "type": "string", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": [ + "api_security", + "application_security", + "log_detection", + "workload_security", + ], + "type": "string", + "x-enum-varnames": [ + "API_SECURITY", + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + ], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + { + "description": "Create a new signal correlation rule.", + "properties": { + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting signals which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule on signals.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "correlatedByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "correlatedQueryIndex": { + "description": "Index " + "of " + "the " + "rule " + "query " + "used " + "to " + "retrieve " + "the " + "correlated " + "field.", + "format": "int32", + "maximum": 9, + "type": "integer", + }, + "metrics": { + "description": "Group of target fields to aggregate over.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "ruleId": { + "description": "Rule ID to match on signals.", + "example": "org-ru1-e1d", + "type": "string", + }, + }, + "required": ["ruleId"], + "type": "object", + }, + "type": "array", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["signal_correlation"], + "type": "string", + "x-enum-varnames": ["SIGNAL_CORRELATION"], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + { + "description": "Create a new cloud configuration rule.", + "properties": { + "cases": { + "description": "Description of generated findings " + "and signals (severity and " + "channels to be notified in case " + "of a signal). Must contain " + "exactly one item.", + "items": { + "description": "Description of signals.", + "properties": { + "notifications": { + "description": "Notification targets for each rule case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "complianceSignalOptions": { + "description": "How to generate " + "compliance " + "signals. Useful " + "for " + "cloud_configuration " + "rules only.", + "properties": { + "defaultActivationStatus": { + "description": "The default activation status.", + "nullable": True, + "type": "boolean", + }, + "defaultGroupByFields": { + "description": "The default group by fields.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + "userActivationStatus": { + "description": "Whether signals will be sent.", + "nullable": True, + "type": "boolean", + }, + "userGroupByFields": { + "description": "Fields " + "to " + "use " + "to " + "group " + "findings " + "by " + "when " + "sending " + "signals.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message in markdown format for " + "generated findings and signals.", + "example": "#Description\n" + "Explanation of the rule.\n" + "\n" + "#Remediation\n" + "How to fix the security issue.", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options on cloud configuration rules.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + } + }, + "required": ["complianceRuleOptions"], + "type": "object", + }, + "tags": { + "description": "Tags for generated findings and signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["cloud_configuration"], + "type": "string", + "x-enum-varnames": ["CLOUD_CONFIGURATION"], + }, + }, + "required": [ + "name", + "isEnabled", + "options", + "complianceSignalOptions", + "cases", + "message", + ], + "type": "object", + }, + ], + }, + "UPDATESUPPRESSIONRULE_REQUEST_BODY_SCHEMA": { + "description": "Request object containing the fields to update on the suppression rule.", + "properties": { + "data": { + "description": "The new suppression properties; partial updates are supported.", + "properties": { + "attributes": { + "description": "The suppression rule properties to be updated.", + "properties": { + "data_exclusion_query": { + "description": "An " + "exclusion " + "query " + "on " + "the " + "input " + "data " + "of " + "the " + "security " + "rules, " + "which " + "could " + "be " + "logs, " + "Agent " + "events, " + "or " + "other " + "types " + "of " + "data " + "based " + "on " + "the " + "security " + "rule. " + "Events " + "matching " + "this " + "query " + "are " + "ignored " + "by " + "any " + "detection " + "rules " + "referenced " + "in " + "the " + "suppression " + "rule.", + "example": "source:cloudtrail account_id:12345", + "type": "string", + }, + "description": { + "description": "A description for the suppression rule.", + "example": "This " + "rule " + "suppresses " + "low-severity " + "signals " + "in " + "staging " + "environments.", + "type": "string", + }, + "enabled": { + "description": "Whether the suppression rule is enabled.", + "example": True, + "type": "boolean", + }, + "expiration_date": { + "description": "A " + "Unix " + "millisecond " + "timestamp " + "giving " + "an " + "expiration " + "date " + "for " + "the " + "suppression " + "rule. " + "After " + "this " + "date, " + "it " + "won't " + "suppress " + "signals " + "anymore. " + "If " + "unset, " + "the " + "expiration " + "date " + "of " + "the " + "suppression " + "rule " + "is " + "left " + "untouched. " + "If " + "set " + "to " + "`null`, " + "the " + "expiration " + "date " + "is " + "removed.", + "example": 1703187336000, + "format": "int64", + "nullable": True, + "type": "integer", + }, + "name": { + "description": "The name of the suppression rule.", + "example": "Custom suppression", + "type": "string", + }, + "rule_query": { + "description": "The " + "rule " + "query " + "of " + "the " + "suppression " + "rule, " + "with " + "the " + "same " + "syntax " + "as " + "the " + "search " + "bar " + "for " + "detection " + "rules.", + "example": "type:log_detection source:cloudtrail", + "type": "string", + }, + "start_date": { + "description": "A " + "Unix " + "millisecond " + "timestamp " + "giving " + "the " + "start " + "date " + "for " + "the " + "suppression " + "rule. " + "After " + "this " + "date, " + "it " + "starts " + "suppressing " + "signals. " + "If " + "unset, " + "the " + "start " + "date " + "of " + "the " + "suppression " + "rule " + "is " + "left " + "untouched. " + "If " + "set " + "to " + "`null`, " + "the " + "start " + "date " + "is " + "removed.", + "example": 1703187336000, + "format": "int64", + "nullable": True, + "type": "integer", + }, + "suppression_query": { + "description": "The " + "suppression " + "query " + "of " + "the " + "suppression " + "rule. " + "If " + "a " + "signal " + "matches " + "this " + "query, " + "it " + "is " + "suppressed " + "and " + "not " + "triggered. " + "Same " + "syntax " + "as " + "the " + "queries " + "to " + "search " + "signals " + "in " + "the " + "signal " + "explorer.", + "example": "env:staging status:low", + "type": "string", + }, + "version": { + "description": "The " + "current " + "version " + "of " + "the " + "suppression. " + "This " + "is " + "optional, " + "but " + "it " + "can " + "help " + "prevent " + "concurrent " + "modifications.", + "format": "int32", + "maximum": 2147483647, + "type": "integer", + }, + }, + "type": "object", + }, + "type": { + "default": "suppressions", + "description": "The type of the " + "resource. The value " + "should always be " + "`suppressions`.", + "enum": ["suppressions"], + "example": "suppressions", + "type": "string", + "x-enum-varnames": ["SUPPRESSIONS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA": { + "description": "Create a new rule.", + "oneOf": [ + { + "description": "Create a new rule.", + "properties": { + "calculatedFields": { + "description": "Calculated fields. " + "Only allowed for " + "scheduled rules - in " + "other words, when " + "schedulingOptions is " + "also defined.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "groupSignalsBy": { + "description": "Additional grouping to " + "perform on top of the " + "existing groups in the " + "query section. Must be a " + "subset of the existing " + "groups.", + "example": ["service"], + "items": {"description": "Field to group by.", "type": "string"}, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting logs which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "customQueryExtension": { + "description": "Query extension to append to the logs query.", + "example": "a > 3", + "type": "string", + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "rule. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "index": { + "description": "**This " + "field " + "is " + "currently " + "unstable " + "and " + "might " + "be " + "removed " + "in " + "a " + "minor " + "version " + "upgrade.**\n" + "The " + "index " + "to " + "run " + "the " + "query " + "on, " + "if " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "type": "string", + }, + "indexes": { + "description": "List " + "of " + "indexes " + "to " + "query " + "when " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules, " + "such " + "as " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "items": {"description": "Index.", "type": "string"}, + "type": "array", + }, + "metric": { + "deprecated": True, + "description": "(Deprecated) " + "The " + "target " + "field " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum " + "or " + "max\n" + "aggregations. " + "`metrics` " + "field " + "should " + "be " + "used " + "instead.", + "type": "string", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables for the rule.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether " + "to " + "include " + "or " + "exclude " + "the " + "matched " + "values.", + "type": "boolean", + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The " + "name " + "of " + "the " + "query " + "to " + "apply " + "the " + "reference " + "table " + "to.", + "type": "string", + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "schedulingOptions": { + "description": "Options for scheduled " + "rules. When this " + "field is present, the " + "rule runs based on " + "the schedule. When " + "absent, it runs " + "real-time on ingested " + "logs.", + "nullable": True, + "properties": { + "rrule": { + "description": "Schedule " + "for " + "the " + "rule " + "queries, " + "written " + "in " + "RRULE " + "syntax. " + "See " + "[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) " + "for " + "syntax " + "reference.", + "example": "FREQ=HOURLY;INTERVAL=1;", + "type": "string", + }, + "start": { + "description": "Start " + "date " + "for " + "the " + "schedule, " + "in " + "ISO " + "8601 " + "format " + "without " + "timezone.", + "example": "2025-07-14T12:00:00", + "type": "string", + }, + "timezone": { + "description": "Time " + "zone " + "of " + "the " + "start " + "date, " + "in " + "the " + "[tz " + "database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) " + "format.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases for generating " + "signals from " + "third-party rules. Only " + "available for " + "third-party rules.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets for each case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "query": { + "description": "A " + "query " + "to " + "map " + "a " + "third " + "party " + "event " + "to " + "this " + "case.", + "type": "string", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": [ + "api_security", + "application_security", + "log_detection", + "workload_security", + ], + "type": "string", + "x-enum-varnames": [ + "API_SECURITY", + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + ], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + { + "description": "Create a new signal correlation rule.", + "properties": { + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting signals which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule on signals.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "correlatedByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "correlatedQueryIndex": { + "description": "Index " + "of " + "the " + "rule " + "query " + "used " + "to " + "retrieve " + "the " + "correlated " + "field.", + "format": "int32", + "maximum": 9, + "type": "integer", + }, + "metrics": { + "description": "Group of target fields to aggregate over.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "ruleId": { + "description": "Rule ID to match on signals.", + "example": "org-ru1-e1d", + "type": "string", + }, + }, + "required": ["ruleId"], + "type": "object", + }, + "type": "array", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["signal_correlation"], + "type": "string", + "x-enum-varnames": ["SIGNAL_CORRELATION"], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + { + "description": "Create a new cloud configuration rule.", + "properties": { + "cases": { + "description": "Description of generated findings " + "and signals (severity and " + "channels to be notified in case " + "of a signal). Must contain " + "exactly one item.", + "items": { + "description": "Description of signals.", + "properties": { + "notifications": { + "description": "Notification targets for each rule case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "complianceSignalOptions": { + "description": "How to generate " + "compliance " + "signals. Useful " + "for " + "cloud_configuration " + "rules only.", + "properties": { + "defaultActivationStatus": { + "description": "The default activation status.", + "nullable": True, + "type": "boolean", + }, + "defaultGroupByFields": { + "description": "The default group by fields.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + "userActivationStatus": { + "description": "Whether signals will be sent.", + "nullable": True, + "type": "boolean", + }, + "userGroupByFields": { + "description": "Fields " + "to " + "use " + "to " + "group " + "findings " + "by " + "when " + "sending " + "signals.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message in markdown format for " + "generated findings and signals.", + "example": "#Description\n" + "Explanation of the rule.\n" + "\n" + "#Remediation\n" + "How to fix the security issue.", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options on cloud configuration rules.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + } + }, + "required": ["complianceRuleOptions"], + "type": "object", + }, + "tags": { + "description": "Tags for generated findings and signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["cloud_configuration"], + "type": "string", + "x-enum-varnames": ["CLOUD_CONFIGURATION"], + }, + }, + "required": [ + "name", + "isEnabled", + "options", + "complianceSignalOptions", + "cases", + "message", + ], + "type": "object", + }, + ], + }, + "CONVERTRULEJSONTOTERRAFORM_REQUEST_BODY_SCHEMA": { + "description": "Convert a rule from JSON to Terraform.", + "oneOf": [ + { + "description": "The payload of a rule.", + "properties": { + "calculatedFields": { + "description": "Calculated fields. " + "Only allowed for " + "scheduled rules - in " + "other words, when " + "schedulingOptions is " + "also defined.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "customMessage": { + "description": "Custom/Overridden message " + "for generated signals " + "(used in case of Default " + "rule update).", + "type": "string", + }, + "customName": { + "description": "Custom/Overridden name of " + "the rule (used in case of " + "Default rule update).", + "type": "string", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "groupSignalsBy": { + "description": "Additional grouping to " + "perform on top of the " + "existing groups in the " + "query section. Must be a " + "subset of the existing " + "groups.", + "example": ["service"], + "items": {"description": "Field to group by.", "type": "string"}, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting logs which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "customQueryExtension": { + "description": "Query extension to append to the logs query.", + "example": "a > 3", + "type": "string", + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "rule. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "index": { + "description": "**This " + "field " + "is " + "currently " + "unstable " + "and " + "might " + "be " + "removed " + "in " + "a " + "minor " + "version " + "upgrade.**\n" + "The " + "index " + "to " + "run " + "the " + "query " + "on, " + "if " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "type": "string", + }, + "indexes": { + "description": "List " + "of " + "indexes " + "to " + "query " + "when " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules, " + "such " + "as " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "items": {"description": "Index.", "type": "string"}, + "type": "array", + }, + "metric": { + "deprecated": True, + "description": "(Deprecated) " + "The " + "target " + "field " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum " + "or " + "max\n" + "aggregations. " + "`metrics` " + "field " + "should " + "be " + "used " + "instead.", + "type": "string", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables for the rule.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether " + "to " + "include " + "or " + "exclude " + "the " + "matched " + "values.", + "type": "boolean", + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The " + "name " + "of " + "the " + "query " + "to " + "apply " + "the " + "reference " + "table " + "to.", + "type": "string", + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "schedulingOptions": { + "description": "Options for scheduled " + "rules. When this " + "field is present, the " + "rule runs based on " + "the schedule. When " + "absent, it runs " + "real-time on ingested " + "logs.", + "nullable": True, + "properties": { + "rrule": { + "description": "Schedule " + "for " + "the " + "rule " + "queries, " + "written " + "in " + "RRULE " + "syntax. " + "See " + "[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) " + "for " + "syntax " + "reference.", + "example": "FREQ=HOURLY;INTERVAL=1;", + "type": "string", + }, + "start": { + "description": "Start " + "date " + "for " + "the " + "schedule, " + "in " + "ISO " + "8601 " + "format " + "without " + "timezone.", + "example": "2025-07-14T12:00:00", + "type": "string", + }, + "timezone": { + "description": "Time " + "zone " + "of " + "the " + "start " + "date, " + "in " + "the " + "[tz " + "database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) " + "format.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases for generating " + "signals from " + "third-party rules. Only " + "available for " + "third-party rules.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets for each case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "query": { + "description": "A " + "query " + "to " + "map " + "a " + "third " + "party " + "event " + "to " + "this " + "case.", + "type": "string", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": [ + "api_security", + "application_security", + "log_detection", + "workload_security", + ], + "type": "string", + "x-enum-varnames": [ + "API_SECURITY", + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + ], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + { + "description": "The payload of a signal correlation rule.", + "properties": { + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "customMessage": { + "description": "Custom/Overridden message " + "for generated signals " + "(used in case of Default " + "rule update).", + "type": "string", + }, + "customName": { + "description": "Custom/Overridden name of " + "the rule (used in case of " + "Default rule update).", + "type": "string", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting signals which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule on signals.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "correlatedByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "correlatedQueryIndex": { + "description": "Index " + "of " + "the " + "rule " + "query " + "used " + "to " + "retrieve " + "the " + "correlated " + "field.", + "format": "int32", + "maximum": 9, + "type": "integer", + }, + "metrics": { + "description": "Group of target fields to aggregate over.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "ruleId": { + "description": "Rule ID to match on signals.", + "example": "org-ru1-e1d", + "type": "string", + }, + }, + "required": ["ruleId"], + "type": "object", + }, + "type": "array", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["signal_correlation"], + "type": "string", + "x-enum-varnames": ["SIGNAL_CORRELATION"], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + ], + }, + "TESTSECURITYRULE_REQUEST_BODY_SCHEMA": { + "description": "Test the rule queries of a rule (rule property is ignored when " + "applied to an existing rule)", + "properties": { + "rule": { + "description": "Test a rule.", + "oneOf": [ + { + "description": "The payload of a rule to test", + "properties": { + "calculatedFields": { + "description": "Calculated " + "fields. " + "Only " + "allowed " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "schedulingOptions " + "is " + "also " + "defined.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp " + "- " + "@request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options " + "for " + "the " + "rule " + "action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": { + "description": "Name of the case.", + "type": "string", + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "filters": { + "description": "Additional " + "queries " + "to " + "filter " + "matched " + "events " + "before " + "they " + "are " + "processed. " + "This " + "field " + "is " + "deprecated " + "for log " + "detection, " + "signal " + "correlation, " + "and " + "workload " + "security " + "rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "groupSignalsBy": { + "description": "Additional " + "grouping " + "to " + "perform " + "on " + "top " + "of " + "the " + "existing " + "groups " + "in " + "the " + "query " + "section. " + "Must " + "be " + "a " + "subset " + "of " + "the " + "existing " + "groups.", + "example": ["service"], + "items": {"description": "Field to group by.", "type": "string"}, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether " + "the " + "notifications " + "include " + "the " + "triggering " + "group-by " + "values " + "in " + "their " + "title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options " + "on " + "impossible " + "travel " + "detection " + "method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS", + ], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE", + ], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name " + "of " + "the " + "child " + "step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name " + "of " + "the " + "parent " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical", + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries " + "for " + "selecting " + "logs " + "which " + "are " + "part of " + "the " + "rule.", + "example": [], + "items": { + "description": "Query for matching rule.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "customQueryExtension": { + "description": "Query " + "extension " + "to " + "append " + "to " + "the " + "logs " + "query.", + "example": "a > 3", + "type": "string", + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "rule. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "index": { + "description": "**This " + "field " + "is " + "currently " + "unstable " + "and " + "might " + "be " + "removed " + "in " + "a " + "minor " + "version " + "upgrade.**\n" + "The " + "index " + "to " + "run " + "the " + "query " + "on, " + "if " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "type": "string", + }, + "indexes": { + "description": "List " + "of " + "indexes " + "to " + "query " + "when " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules, " + "such " + "as " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "items": {"description": "Index.", "type": "string"}, + "type": "array", + }, + "metric": { + "deprecated": True, + "description": "(Deprecated) " + "The " + "target " + "field " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum " + "or " + "max\n" + "aggregations. " + "`metrics` " + "field " + "should " + "be " + "used " + "instead.", + "type": "string", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": { + "description": "Name of the query.", + "type": "string", + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables for the rule.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether " + "to " + "include " + "or " + "exclude " + "the " + "matched " + "values.", + "type": "boolean", + }, + "columnName": { + "description": "The " + "name " + "of " + "the " + "column " + "in " + "the " + "reference " + "table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The " + "name " + "of " + "the " + "query " + "to " + "apply " + "the " + "reference " + "table " + "to.", + "type": "string", + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "schedulingOptions": { + "description": "Options " + "for " + "scheduled " + "rules. " + "When " + "this " + "field " + "is " + "present, " + "the " + "rule " + "runs " + "based " + "on " + "the " + "schedule. " + "When " + "absent, " + "it " + "runs " + "real-time " + "on " + "ingested " + "logs.", + "nullable": True, + "properties": { + "rrule": { + "description": "Schedule " + "for " + "the " + "rule " + "queries, " + "written " + "in " + "RRULE " + "syntax. " + "See " + "[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) " + "for " + "syntax " + "reference.", + "example": "FREQ=HOURLY;INTERVAL=1;", + "type": "string", + }, + "start": { + "description": "Start " + "date " + "for " + "the " + "schedule, " + "in " + "ISO " + "8601 " + "format " + "without " + "timezone.", + "example": "2025-07-14T12:00:00", + "type": "string", + }, + "timezone": { + "description": "Time " + "zone " + "of " + "the " + "start " + "date, " + "in " + "the " + "[tz " + "database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) " + "format.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases " + "for " + "generating " + "signals " + "from " + "third-party " + "rules. " + "Only " + "available " + "for " + "third-party " + "rules.", + "example": [], + "items": { + "description": "Case " + "when " + "a " + "signal " + "is " + "generated " + "by " + "a " + "third " + "party " + "rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string", + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "A " + "query " + "to " + "map " + "a " + "third " + "party " + "event " + "to " + "this " + "case.", + "type": "string", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["log_detection"], + "type": "string", + "x-enum-varnames": ["LOG_DETECTION"], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + } + ], + }, + "ruleQueryPayloads": { + "description": "Data payloads used to test rules query with the expected result.", + "items": { + "description": "Payload to test a rule query with the expected result.", + "properties": { + "expectedResult": { + "description": "Expected result of the test.", + "example": True, + "type": "boolean", + }, + "index": { + "description": "Index of the query under test.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "payload": { + "additionalProperties": {}, + "description": "Payload used to test the rule query.", + "properties": { + "ddsource": { + "description": "Source of the payload.", + "example": "nginx", + "type": "string", + }, + "ddtags": { + "description": "Tags associated with your data.", + "example": "env:staging,version:5.1", + "type": "string", + }, + "hostname": { + "description": "The name of the originating host of the log.", + "example": "i-012345678", + "type": "string", + }, + "message": { + "description": "The message of the payload.", + "example": "2019-11-19T14:37:58,995 " + "INFO " + "[process.name][20081] " + "Hello " + "World", + "type": "string", + }, + "service": { + "description": "The " + "name " + "of " + "the " + "application " + "or " + "service " + "generating " + "the " + "data.", + "example": "payment", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "VALIDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA": { + "description": "Validate a rule.", + "oneOf": [ + { + "description": "The payload of a rule.", + "properties": { + "calculatedFields": { + "description": "Calculated fields. " + "Only allowed for " + "scheduled rules - in " + "other words, when " + "schedulingOptions is " + "also defined.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "customMessage": { + "description": "Custom/Overridden message " + "for generated signals " + "(used in case of Default " + "rule update).", + "type": "string", + }, + "customName": { + "description": "Custom/Overridden name of " + "the rule (used in case of " + "Default rule update).", + "type": "string", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "groupSignalsBy": { + "description": "Additional grouping to " + "perform on top of the " + "existing groups in the " + "query section. Must be a " + "subset of the existing " + "groups.", + "example": ["service"], + "items": {"description": "Field to group by.", "type": "string"}, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting logs which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "customQueryExtension": { + "description": "Query extension to append to the logs query.", + "example": "a > 3", + "type": "string", + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "rule. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "index": { + "description": "**This " + "field " + "is " + "currently " + "unstable " + "and " + "might " + "be " + "removed " + "in " + "a " + "minor " + "version " + "upgrade.**\n" + "The " + "index " + "to " + "run " + "the " + "query " + "on, " + "if " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "type": "string", + }, + "indexes": { + "description": "List " + "of " + "indexes " + "to " + "query " + "when " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules, " + "such " + "as " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "items": {"description": "Index.", "type": "string"}, + "type": "array", + }, + "metric": { + "deprecated": True, + "description": "(Deprecated) " + "The " + "target " + "field " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum " + "or " + "max\n" + "aggregations. " + "`metrics` " + "field " + "should " + "be " + "used " + "instead.", + "type": "string", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables for the rule.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether " + "to " + "include " + "or " + "exclude " + "the " + "matched " + "values.", + "type": "boolean", + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The " + "name " + "of " + "the " + "query " + "to " + "apply " + "the " + "reference " + "table " + "to.", + "type": "string", + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "schedulingOptions": { + "description": "Options for scheduled " + "rules. When this " + "field is present, the " + "rule runs based on " + "the schedule. When " + "absent, it runs " + "real-time on ingested " + "logs.", + "nullable": True, + "properties": { + "rrule": { + "description": "Schedule " + "for " + "the " + "rule " + "queries, " + "written " + "in " + "RRULE " + "syntax. " + "See " + "[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) " + "for " + "syntax " + "reference.", + "example": "FREQ=HOURLY;INTERVAL=1;", + "type": "string", + }, + "start": { + "description": "Start " + "date " + "for " + "the " + "schedule, " + "in " + "ISO " + "8601 " + "format " + "without " + "timezone.", + "example": "2025-07-14T12:00:00", + "type": "string", + }, + "timezone": { + "description": "Time " + "zone " + "of " + "the " + "start " + "date, " + "in " + "the " + "[tz " + "database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) " + "format.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases for generating " + "signals from " + "third-party rules. Only " + "available for " + "third-party rules.", + "example": [], + "items": { + "description": "Case when a signal is generated by a third party rule.", + "properties": { + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets for each case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "query": { + "description": "A " + "query " + "to " + "map " + "a " + "third " + "party " + "event " + "to " + "this " + "case.", + "type": "string", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": [ + "api_security", + "application_security", + "log_detection", + "workload_security", + ], + "type": "string", + "x-enum-varnames": [ + "API_SECURITY", + "APPLICATION_SECURITY", + "LOG_DETECTION", + "WORKLOAD_SECURITY", + ], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + { + "description": "The payload of a signal correlation rule.", + "properties": { + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "customMessage": { + "description": "Custom/Overridden message " + "for generated signals " + "(used in case of Default " + "rule update).", + "type": "string", + }, + "customName": { + "description": "Custom/Overridden name of " + "the rule (used in case of " + "Default rule update).", + "type": "string", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed. This field is " + "deprecated for log detection, " + "signal correlation, and " + "workload security rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the " + "notifications include " + "the triggering " + "group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting signals which are part of the rule.", + "example": [], + "items": { + "description": "Query for matching rule on signals.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "correlatedByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "correlatedQueryIndex": { + "description": "Index " + "of " + "the " + "rule " + "query " + "used " + "to " + "retrieve " + "the " + "correlated " + "field.", + "format": "int32", + "maximum": 9, + "type": "integer", + }, + "metrics": { + "description": "Group of target fields to aggregate over.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "ruleId": { + "description": "Rule ID to match on signals.", + "example": "org-ru1-e1d", + "type": "string", + }, + }, + "required": ["ruleId"], + "type": "object", + }, + "type": "array", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["signal_correlation"], + "type": "string", + "x-enum-varnames": ["SIGNAL_CORRELATION"], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + }, + { + "description": "The payload of a cloud configuration rule.", + "properties": { + "cases": { + "description": "Description of generated findings " + "and signals (severity and " + "channels to be notified in case " + "of a signal). Must contain " + "exactly one item.", + "items": { + "description": "Description of signals.", + "properties": { + "notifications": { + "description": "Notification targets for each rule case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "complianceSignalOptions": { + "description": "How to generate " + "compliance " + "signals. Useful " + "for " + "cloud_configuration " + "rules only.", + "properties": { + "defaultActivationStatus": { + "description": "The default activation status.", + "nullable": True, + "type": "boolean", + }, + "defaultGroupByFields": { + "description": "The default group by fields.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + "userActivationStatus": { + "description": "Whether signals will be sent.", + "nullable": True, + "type": "boolean", + }, + "userGroupByFields": { + "description": "Fields " + "to " + "use " + "to " + "group " + "findings " + "by " + "when " + "sending " + "signals.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "customMessage": { + "description": "Custom/Overridden message " + "for generated signals " + "(used in case of Default " + "rule update).", + "type": "string", + }, + "customName": { + "description": "Custom/Overridden name of " + "the rule (used in case of " + "Default rule update).", + "type": "string", + }, + "filters": { + "description": "Additional queries to filter " + "matched events before they are " + "processed.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message in markdown format for " + "generated findings and signals.", + "example": "#Description\n" + "Explanation of the rule.\n" + "\n" + "#Remediation\n" + "How to fix the security issue.", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options on cloud configuration rules.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + } + }, + "required": ["complianceRuleOptions"], + "type": "object", + }, + "tags": { + "description": "Tags for generated findings and signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["cloud_configuration"], + "type": "string", + "x-enum-varnames": ["CLOUD_CONFIGURATION"], + }, + }, + "required": [ + "name", + "isEnabled", + "options", + "complianceSignalOptions", + "cases", + "message", + ], + "type": "object", + }, + ], + }, + "UPDATESECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA": { + "description": "Update an existing rule.", + "properties": { + "calculatedFields": { + "description": "Calculated fields. Only allowed " + "for scheduled rules - in other " + "words, when schedulingOptions is " + "also defined.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp - @request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases for generating signals.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options for the rule action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": ["SUSPICIOUS", "FLAGGED"], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "rule " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "customStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": ["INFO", "LOW", "MEDIUM", "HIGH", "CRITICAL"], + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets for each rule case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": ["INFO", "LOW", "MEDIUM", "HIGH", "CRITICAL"], + }, + }, + "type": "object", + }, + "type": "array", + }, + "complianceSignalOptions": { + "description": "How to generate compliance " + "signals. Useful for " + "cloud_configuration rules " + "only.", + "properties": { + "defaultActivationStatus": { + "description": "The default activation status.", + "nullable": True, + "type": "boolean", + }, + "defaultGroupByFields": { + "description": "The default group by fields.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + "userActivationStatus": { + "description": "Whether signals will be sent.", + "nullable": True, + "type": "boolean", + }, + "userGroupByFields": { + "description": "Fields to use to group findings by when sending signals.", + "items": {"type": "string"}, + "nullable": True, + "type": "array", + }, + }, + "type": "object", + }, + "customMessage": { + "description": "Custom/Overridden Message for " + "generated signals (used in case of " + "Default rule update).", + "type": "string", + }, + "customName": { + "description": "Custom/Overridden name (used in case of Default rule update).", + "type": "string", + }, + "filters": { + "description": "Additional queries to filter matched " + "events before they are processed. This " + "field is deprecated for log detection, " + "signal correlation, and workload security " + "rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "groupSignalsBy": { + "description": "Additional grouping to perform on " + "top of the existing groups in the " + "query section. Must be a subset of " + "the existing groups.", + "example": ["service"], + "items": {"description": "Field to group by.", "type": "string"}, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether the notifications include " + "the triggering group-by values in " + "their title.", + "example": True, + "type": "boolean", + }, + "isEnabled": {"description": "Whether the rule is enabled.", "type": "boolean"}, + "message": {"description": "Message for generated signals.", "type": "string"}, + "name": {"description": "Name of the rule.", "type": "string"}, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": ["gcp_iam_service_account", "gcp_iam_policy"], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one of " + "the " + "cases " + "matches " + "true. " + "This " + "is a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options on impossible travel detection method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once a signal " + "is generated, " + "the signal " + "will remain " + '"open" if a ' + "case is " + "matched at " + "least once " + "within\n" + "this keep " + "alive window. " + "For third " + "party " + "detection " + "method, this " + "field is not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_DAYS", "ONE_DAY", "SEVEN_DAYS"], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": ["ZERO_OCCURRENCES", "ONE_OCCURRENCE"], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name of the child step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name of the parent step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique name identifying the step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": ["INFO", "LOW", "MEDIUM", "HIGH", "CRITICAL"], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries for selecting logs which are part of the rule.", + "items": { + "description": "Query for matching rule.", + "oneOf": [ + { + "description": "Query for matching rule.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "customQueryExtension": { + "description": "Query extension to append to the logs query.", + "example": "a > 3", + "type": "string", + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "rule. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "index": { + "description": "**This " + "field " + "is " + "currently " + "unstable " + "and " + "might " + "be " + "removed " + "in " + "a " + "minor " + "version " + "upgrade.**\n" + "The " + "index " + "to " + "run " + "the " + "query " + "on, " + "if " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "type": "string", + }, + "indexes": { + "description": "List " + "of " + "indexes " + "to " + "query " + "when " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules, " + "such " + "as " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "items": {"description": "Index.", "type": "string"}, + "type": "array", + }, + "metric": { + "deprecated": True, + "description": "(Deprecated) " + "The " + "target " + "field " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum " + "or " + "max\n" + "aggregations. " + "`metrics` " + "field " + "should " + "be " + "used " + "instead.", + "type": "string", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + { + "description": "Query for matching rule on signals.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "correlatedByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "correlatedQueryIndex": { + "description": "Index " + "of " + "the " + "rule " + "query " + "used " + "to " + "retrieve " + "the " + "correlated " + "field.", + "format": "int32", + "maximum": 9, + "type": "integer", + }, + "metrics": { + "description": "Group of target fields to aggregate over.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": {"description": "Name of the query.", "type": "string"}, + "ruleId": { + "description": "Rule ID to match on signals.", + "example": "org-ru1-e1d", + "type": "string", + }, + }, + "required": ["ruleId"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables for the rule.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether to include or exclude the matched values.", + "type": "boolean", + }, + "columnName": { + "description": "The name of the column in the reference table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The name of the query to apply the reference table to.", + "type": "string", + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "schedulingOptions": { + "description": "Options for scheduled rules. " + "When this field is present, the " + "rule runs based on the schedule. " + "When absent, it runs real-time " + "on ingested logs.", + "nullable": True, + "properties": { + "rrule": { + "description": "Schedule " + "for the " + "rule " + "queries, " + "written " + "in " + "RRULE " + "syntax. " + "See " + "[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) " + "for " + "syntax " + "reference.", + "example": "FREQ=HOURLY;INTERVAL=1;", + "type": "string", + }, + "start": { + "description": "Start " + "date " + "for the " + "schedule, " + "in ISO " + "8601 " + "format " + "without " + "timezone.", + "example": "2025-07-14T12:00:00", + "type": "string", + }, + "timezone": { + "description": "Time " + "zone " + "of " + "the " + "start " + "date, " + "in " + "the " + "[tz " + "database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) " + "format.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags for generated signals.", + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases for generating signals from " + "third-party rules. Only available " + "for third-party rules.", + "example": [], + "items": { + "description": "Case when signal is generated by a third party rule.", + "properties": { + "customStatus": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": ["INFO", "LOW", "MEDIUM", "HIGH", "CRITICAL"], + }, + "name": {"description": "Name of the case.", "type": "string"}, + "notifications": { + "description": "Notification targets for each rule case.", + "items": {"description": "Notification.", "type": "string"}, + "type": "array", + }, + "query": { + "description": "A query to map a third party event to this case.", + "type": "string", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": ["INFO", "LOW", "MEDIUM", "HIGH", "CRITICAL"], + }, + }, + "type": "object", + }, + "type": "array", + }, + "version": { + "description": "The version of the rule being updated.", + "example": 1, + "format": "int32", + "maximum": 2147483647, + "type": "integer", + }, + }, + "type": "object", + }, + "TESTSECURITYMONITORINGRULE_REQUEST_BODY_SCHEMA": { + "description": "Test the rule queries of a rule (rule property is ignored when " + "applied to an existing rule)", + "properties": { + "rule": { + "description": "Test a rule.", + "oneOf": [ + { + "description": "The payload of a rule to test", + "properties": { + "calculatedFields": { + "description": "Calculated " + "fields. " + "Only " + "allowed " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "schedulingOptions " + "is " + "also " + "defined.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp " + "- " + "@request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases for generating signals.", + "example": [], + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action to perform for each rule case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options " + "for " + "the " + "rule " + "action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": ["SUSPICIOUS", "FLAGGED"], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": { + "description": "Name of the case.", + "type": "string", + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "filters": { + "description": "Additional " + "queries " + "to " + "filter " + "matched " + "events " + "before " + "they " + "are " + "processed. " + "This " + "field " + "is " + "deprecated " + "for log " + "detection, " + "signal " + "correlation, " + "and " + "workload " + "security " + "rules.", + "items": { + "description": "The rule's suppression filter.", + "properties": { + "action": { + "description": "The type of filtering action.", + "enum": ["require", "suppress"], + "type": "string", + "x-enum-varnames": ["REQUIRE", "SUPPRESS"], + }, + "query": { + "description": "Query " + "for " + "selecting " + "logs " + "to " + "apply " + "the " + "filtering " + "action.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "groupSignalsBy": { + "description": "Additional " + "grouping " + "to " + "perform " + "on " + "top " + "of " + "the " + "existing " + "groups " + "in " + "the " + "query " + "section. " + "Must " + "be " + "a " + "subset " + "of " + "the " + "existing " + "groups.", + "example": ["service"], + "items": {"description": "Field to group by.", "type": "string"}, + "type": "array", + }, + "hasExtendedTitle": { + "description": "Whether " + "the " + "notifications " + "include " + "the " + "triggering " + "group-by " + "values " + "in " + "their " + "title.", + "example": True, + "type": "boolean", + }, + "isEnabled": { + "description": "Whether the rule is enabled.", + "example": True, + "type": "boolean", + }, + "message": { + "description": "Message for generated signals.", + "example": "", + "type": "string", + }, + "name": { + "description": "The name of the rule.", + "example": "My security monitoring rule.", + "type": "string", + }, + "options": { + "description": "Options.", + "properties": { + "complianceRuleOptions": { + "additionalProperties": {}, + "description": "Options " + "for " + "cloud_configuration " + "rules.\n" + "Fields " + "`resourceType` " + "and " + "`regoRule` " + "are " + "mandatory " + "when " + "managing " + "custom " + "`cloud_configuration` " + "rules.", + "properties": { + "complexRule": { + "description": "Whether " + "the " + "rule " + "is " + "a " + "complex " + "one.\n" + "Must " + "be " + "set " + "to " + "true " + "if " + "`regoRule.resourceTypes` " + "contains " + "more " + "than " + "one " + "item. " + "Defaults " + "to " + "false.", + "type": "boolean", + }, + "regoRule": { + "description": "Rule details.", + "properties": { + "policy": { + "description": "The " + "policy " + "written " + "in " + "`rego`, " + "see: " + "https://www.openpolicyagent.org/docs/latest/policy-language/", + "example": "package " + "datadog\n" + "\n" + "import " + "data.datadog.output " + "as " + "dd_output\n" + "import " + "future.keywords.contains\n" + "import " + "future.keywords.if\n" + "import " + "future.keywords.in\n" + "\n" + "eval(resource) " + "= " + '"skip" ' + "if " + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "should " + "be " + "skipped\n" + " " + "true\n" + "} " + "else " + "= " + '"pass" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "compliant\n" + " " + "true\n" + "} " + "else " + "= " + '"fail" ' + "{\n" + " " + "# " + "Logic " + "that " + "evaluates " + "to " + "true " + "if " + "the " + "resource " + "is " + "not " + "compliant\n" + " " + "true\n" + "}\n" + "\n" + "# " + "This " + "part " + "remains " + "unchanged " + "for " + "all " + "rules\n" + "results " + "contains " + "result " + "if " + "{\n" + " " + "some " + "resource " + "in " + "input.resources[input.main_resource_type]\n" + " " + "result " + ":= " + "dd_output.format(resource, " + "eval(resource))\n" + "}", + "type": "string", + }, + "resourceTypes": { + "description": "List " + "of " + "resource " + "types " + "that " + "will " + "be " + "evaluated " + "upon. " + "Must " + "have " + "at " + "least " + "one " + "element.", + "example": [ + "gcp_iam_service_account", + "gcp_iam_policy", + ], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": ["policy", "resourceTypes"], + "type": "object", + }, + "resourceType": { + "description": "Main " + "resource " + "type " + "to " + "be " + "checked " + "by " + "the " + "rule. " + "It " + "should " + "be " + "specified " + "again " + "in " + "`regoRule.resourceTypes`.", + "example": "aws_acm", + "type": "string", + }, + }, + "type": "object", + }, + "decreaseCriticalityBasedOnEnv": { + "description": "If " + "true, " + "signals " + "in " + "non-production " + "environments " + "have " + "a " + "lower " + "severity " + "than " + "what " + "is " + "defined " + "by " + "the " + "rule " + "case, " + "which " + "can " + "reduce " + "signal " + "noise.\n" + "The " + "severity " + "is " + "decreased " + "by " + "one " + "level: " + "`CRITICAL` " + "in " + "production " + "becomes " + "`HIGH` " + "in " + "non-production, " + "`HIGH` " + "becomes " + "`MEDIUM` " + "and " + "so " + "on. " + "`INFO` " + "remains " + "`INFO`.\n" + "The " + "decrement " + "is " + "applied " + "when " + "the " + "environment " + "tag " + "of " + "the " + "signal " + "starts " + "with " + "`staging`, " + "`test` " + "or " + "`dev`.", + "example": False, + "type": "boolean", + }, + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "hardcodedEvaluatorType": { + "description": "Hardcoded evaluator type.", + "enum": ["log4shell"], + "type": "string", + "x-enum-varnames": ["LOG4SHELL"], + }, + "impossibleTravelOptions": { + "description": "Options " + "on " + "impossible " + "travel " + "detection " + "method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options on new value detection method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS", + ], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": ["DURATION", "THRESHOLD"], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE", + ], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options on sequence detection method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name " + "of " + "the " + "child " + "step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name " + "of " + "the " + "parent " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options on third party detection method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "defaultStatus": { + "description": "Severity of the Security Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical", + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query to run on logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries " + "for " + "selecting " + "logs " + "which " + "are " + "part of " + "the " + "rule.", + "example": [], + "items": { + "description": "Query for matching rule.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "customQueryExtension": { + "description": "Query " + "extension " + "to " + "append " + "to " + "the " + "logs " + "query.", + "example": "a > 3", + "type": "string", + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "rule. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "index": { + "description": "**This " + "field " + "is " + "currently " + "unstable " + "and " + "might " + "be " + "removed " + "in " + "a " + "minor " + "version " + "upgrade.**\n" + "The " + "index " + "to " + "run " + "the " + "query " + "on, " + "if " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules " + "- " + "in " + "other " + "words, " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "type": "string", + }, + "indexes": { + "description": "List " + "of " + "indexes " + "to " + "query " + "when " + "the " + "`dataSource` " + "is " + "`logs`. " + "Only " + "used " + "for " + "scheduled " + "rules, " + "such " + "as " + "when " + "the " + "`schedulingOptions` " + "field " + "is " + "present " + "in " + "the " + "rule " + "payload.", + "items": {"description": "Index.", "type": "string"}, + "type": "array", + }, + "metric": { + "deprecated": True, + "description": "(Deprecated) " + "The " + "target " + "field " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum " + "or " + "max\n" + "aggregations. " + "`metrics` " + "field " + "should " + "be " + "used " + "instead.", + "type": "string", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": {"description": "Field.", "type": "string"}, + "type": "array", + }, + "name": { + "description": "Name of the query.", + "type": "string", + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables for the rule.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether " + "to " + "include " + "or " + "exclude " + "the " + "matched " + "values.", + "type": "boolean", + }, + "columnName": { + "description": "The " + "name " + "of " + "the " + "column " + "in " + "the " + "reference " + "table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The " + "name " + "of " + "the " + "query " + "to " + "apply " + "the " + "reference " + "table " + "to.", + "type": "string", + }, + "tableName": { + "description": "The name of the reference table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "schedulingOptions": { + "description": "Options " + "for " + "scheduled " + "rules. " + "When " + "this " + "field " + "is " + "present, " + "the " + "rule " + "runs " + "based " + "on " + "the " + "schedule. " + "When " + "absent, " + "it " + "runs " + "real-time " + "on " + "ingested " + "logs.", + "nullable": True, + "properties": { + "rrule": { + "description": "Schedule " + "for " + "the " + "rule " + "queries, " + "written " + "in " + "RRULE " + "syntax. " + "See " + "[RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) " + "for " + "syntax " + "reference.", + "example": "FREQ=HOURLY;INTERVAL=1;", + "type": "string", + }, + "start": { + "description": "Start " + "date " + "for " + "the " + "schedule, " + "in " + "ISO " + "8601 " + "format " + "without " + "timezone.", + "example": "2025-07-14T12:00:00", + "type": "string", + }, + "timezone": { + "description": "Time " + "zone " + "of " + "the " + "start " + "date, " + "in " + "the " + "[tz " + "database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) " + "format.", + "example": "America/New_York", + "type": "string", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags for generated signals.", + "example": ["env:prod", "team:security"], + "items": {"description": "Tag.", "type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases " + "for " + "generating " + "signals " + "from " + "third-party " + "rules. " + "Only " + "available " + "for " + "third-party " + "rules.", + "example": [], + "items": { + "description": "Case " + "when " + "a " + "signal " + "is " + "generated " + "by " + "a " + "third " + "party " + "rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string", + }, + "notifications": { + "description": "Notification targets for each case.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "A " + "query " + "to " + "map " + "a " + "third " + "party " + "event " + "to " + "this " + "case.", + "type": "string", + }, + "status": { + "description": "Severity of the Security Signal.", + "enum": ["info", "low", "medium", "high", "critical"], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "type": { + "description": "The rule type.", + "enum": ["log_detection"], + "type": "string", + "x-enum-varnames": ["LOG_DETECTION"], + }, + }, + "required": ["name", "isEnabled", "queries", "options", "cases", "message"], + "type": "object", + } + ], + }, + "ruleQueryPayloads": { + "description": "Data payloads used to test rules query with the expected result.", + "items": { + "description": "Payload to test a rule query with the expected result.", + "properties": { + "expectedResult": { + "description": "Expected result of the test.", + "example": True, + "type": "boolean", + }, + "index": { + "description": "Index of the query under test.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "payload": { + "additionalProperties": {}, + "description": "Payload used to test the rule query.", + "properties": { + "ddsource": { + "description": "Source of the payload.", + "example": "nginx", + "type": "string", + }, + "ddtags": { + "description": "Tags associated with your data.", + "example": "env:staging,version:5.1", + "type": "string", + }, + "hostname": { + "description": "The name of the originating host of the log.", + "example": "i-012345678", + "type": "string", + }, + "message": { + "description": "The message of the payload.", + "example": "2019-11-19T14:37:58,995 " + "INFO " + "[process.name][20081] " + "Hello " + "World", + "type": "string", + }, + "service": { + "description": "The " + "name " + "of " + "the " + "application " + "or " + "service " + "generating " + "the " + "data.", + "example": "payment", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "REORDERSCANNINGGROUPS_REQUEST_BODY_SCHEMA": { + "description": "Group reorder request.", + "properties": { + "data": { + "description": "Data related to the reordering of scanning groups.", + "properties": { + "id": {"description": "ID of the configuration.", "type": "string"}, + "relationships": { + "description": "Relationships of the configuration.", + "properties": { + "groups": { + "description": "List of groups, ordered.", + "properties": { + "data": { + "description": "List of groups. The order is important.", + "items": { + "description": "Data " + "related " + "to " + "a " + "Sensitive " + "Data " + "Scanner " + "Group.", + "properties": { + "id": { + "description": "ID of the group.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_group", + "description": "Sensitive " + "Data " + "Scanner " + "group " + "type.", + "enum": ["sensitive_data_scanner_group"], + "example": "sensitive_data_scanner_group", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER_GROUP" + ], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "sensitive_data_scanner_configuration", + "description": "Sensitive Data Scanner configuration type.", + "enum": ["sensitive_data_scanner_configuration"], + "example": "sensitive_data_scanner_configuration", + "type": "string", + "x-enum-varnames": ["SENSITIVE_DATA_SCANNER_CONFIGURATIONS"], + }, + }, + "type": "object", + }, + "meta": { + "description": "Meta payload containing information about the API.", + "properties": { + "version": { + "description": "Version of the API (optional).", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + } + }, + "type": "object", + }, + }, + "required": ["data", "meta"], + "type": "object", + }, + "CREATESCANNINGGROUP_REQUEST_BODY_SCHEMA": { + "description": "Create group request.", + "properties": { + "data": { + "description": "Data related to the creation of a group.", + "properties": { + "attributes": { + "description": "Attributes of the Sensitive Data Scanner group.", + "properties": { + "description": { + "description": "Description of the group.", + "type": "string", + }, + "filter": { + "description": "Filter for the Scanning Group.", + "properties": { + "query": { + "description": "Query to filter the events.", + "type": "string", + } + }, + "type": "object", + }, + "is_enabled": { + "description": "Whether or not the group is enabled.", + "type": "boolean", + }, + "name": {"description": "Name of the group.", "type": "string"}, + "product_list": { + "description": "List of products the scanning group applies.", + "items": { + "default": "logs", + "description": "Datadog " + "product " + "onto " + "which " + "Sensitive " + "Data " + "Scanner " + "can " + "be " + "activated.", + "enum": ["logs", "rum", "events", "apm"], + "type": "string", + "x-enum-varnames": ["LOGS", "RUM", "EVENTS", "APM"], + }, + "type": "array", + }, + "samplings": { + "description": "List of sampling rates per product type.", + "items": { + "description": "Sampling " + "configurations " + "for " + "the " + "Scanning " + "Group.", + "properties": { + "product": { + "default": "logs", + "description": "Datadog " + "product " + "onto " + "which " + "Sensitive " + "Data " + "Scanner " + "can " + "be " + "activated.", + "enum": ["logs", "rum", "events", "apm"], + "type": "string", + "x-enum-varnames": ["LOGS", "RUM", "EVENTS", "APM"], + }, + "rate": { + "description": "Rate " + "at " + "which " + "data " + "in " + "product " + "type " + "will " + "be " + "scanned, " + "as " + "a " + "percentage.", + "example": 100.0, + "format": "double", + "maximum": 100.0, + "minimum": 0.0, + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "relationships": { + "description": "Relationships of the group.", + "properties": { + "configuration": { + "description": "A Sensitive Data Scanner configuration data.", + "properties": { + "data": { + "description": "A Sensitive Data Scanner configuration.", + "properties": { + "id": { + "description": "ID of the configuration.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_configuration", + "description": "Sensitive " + "Data " + "Scanner " + "configuration " + "type.", + "enum": ["sensitive_data_scanner_configuration"], + "example": "sensitive_data_scanner_configuration", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER_CONFIGURATIONS" + ], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "rules": { + "description": "Rules included in the group.", + "properties": { + "data": { + "description": "Rules " + "included " + "in " + "the " + "group. " + "The " + "order " + "is " + "important.", + "items": { + "description": "Rule item included in the group.", + "properties": { + "id": { + "description": "ID of the rule.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_rule", + "description": "Sensitive " + "Data " + "Scanner " + "rule " + "type.", + "enum": ["sensitive_data_scanner_rule"], + "example": "sensitive_data_scanner_rule", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER_RULE" + ], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "default": "sensitive_data_scanner_group", + "description": "Sensitive Data Scanner group type.", + "enum": ["sensitive_data_scanner_group"], + "example": "sensitive_data_scanner_group", + "type": "string", + "x-enum-varnames": ["SENSITIVE_DATA_SCANNER_GROUP"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + }, + "meta": { + "description": "Meta payload containing information about the API.", + "properties": { + "version": { + "description": "Version of the API (optional).", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "UPDATESCANNINGGROUP_REQUEST_BODY_SCHEMA": { + "description": "Update group request.", + "properties": { + "data": { + "description": "Data related to the update of a group.", + "properties": { + "attributes": { + "description": "Attributes of the Sensitive Data Scanner group.", + "properties": { + "description": { + "description": "Description of the group.", + "type": "string", + }, + "filter": { + "description": "Filter for the Scanning Group.", + "properties": { + "query": { + "description": "Query to filter the events.", + "type": "string", + } + }, + "type": "object", + }, + "is_enabled": { + "description": "Whether or not the group is enabled.", + "type": "boolean", + }, + "name": {"description": "Name of the group.", "type": "string"}, + "product_list": { + "description": "List of products the scanning group applies.", + "items": { + "default": "logs", + "description": "Datadog " + "product " + "onto " + "which " + "Sensitive " + "Data " + "Scanner " + "can " + "be " + "activated.", + "enum": ["logs", "rum", "events", "apm"], + "type": "string", + "x-enum-varnames": ["LOGS", "RUM", "EVENTS", "APM"], + }, + "type": "array", + }, + "samplings": { + "description": "List of sampling rates per product type.", + "items": { + "description": "Sampling " + "configurations " + "for " + "the " + "Scanning " + "Group.", + "properties": { + "product": { + "default": "logs", + "description": "Datadog " + "product " + "onto " + "which " + "Sensitive " + "Data " + "Scanner " + "can " + "be " + "activated.", + "enum": ["logs", "rum", "events", "apm"], + "type": "string", + "x-enum-varnames": ["LOGS", "RUM", "EVENTS", "APM"], + }, + "rate": { + "description": "Rate " + "at " + "which " + "data " + "in " + "product " + "type " + "will " + "be " + "scanned, " + "as " + "a " + "percentage.", + "example": 100.0, + "format": "double", + "maximum": 100.0, + "minimum": 0.0, + "type": "number", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "id": {"description": "ID of the group.", "type": "string"}, + "relationships": { + "description": "Relationships of the group.", + "properties": { + "configuration": { + "description": "A Sensitive Data Scanner configuration data.", + "properties": { + "data": { + "description": "A Sensitive Data Scanner configuration.", + "properties": { + "id": { + "description": "ID of the configuration.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_configuration", + "description": "Sensitive " + "Data " + "Scanner " + "configuration " + "type.", + "enum": ["sensitive_data_scanner_configuration"], + "example": "sensitive_data_scanner_configuration", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER_CONFIGURATIONS" + ], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "rules": { + "description": "Rules included in the group.", + "properties": { + "data": { + "description": "Rules " + "included " + "in " + "the " + "group. " + "The " + "order " + "is " + "important.", + "items": { + "description": "Rule item included in the group.", + "properties": { + "id": { + "description": "ID of the rule.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_rule", + "description": "Sensitive " + "Data " + "Scanner " + "rule " + "type.", + "enum": ["sensitive_data_scanner_rule"], + "example": "sensitive_data_scanner_rule", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER_RULE" + ], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "default": "sensitive_data_scanner_group", + "description": "Sensitive Data Scanner group type.", + "enum": ["sensitive_data_scanner_group"], + "example": "sensitive_data_scanner_group", + "type": "string", + "x-enum-varnames": ["SENSITIVE_DATA_SCANNER_GROUP"], + }, + }, + "type": "object", + }, + "meta": { + "description": "Meta payload containing information about the API.", + "properties": { + "version": { + "description": "Version of the API (optional).", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + } + }, + "type": "object", + }, + }, + "required": ["data", "meta"], + "type": "object", + }, + "CREATESCANNINGRULE_REQUEST_BODY_SCHEMA": { + "description": "Create rule request.", + "properties": { + "data": { + "description": "Data related to the creation of a rule.", + "properties": { + "attributes": { + "description": "Attributes of the Sensitive Data Scanner rule.", + "properties": { + "description": { + "description": "Description of the rule.", + "type": "string", + }, + "excluded_namespaces": { + "description": "Attributes " + "excluded " + "from " + "the " + "scan. " + "If " + "namespaces " + "is " + "provided, " + "it " + "has " + "to " + "be " + "a " + "sub-path " + "of " + "the " + "namespaces " + "array.", + "example": ["admin.name"], + "items": {"type": "string"}, + "type": "array", + }, + "included_keyword_configuration": { + "description": "Object " + "defining " + "a " + "set " + "of " + "keywords " + "and " + "a " + "number " + "of " + "characters " + "that " + "help " + "reduce " + "noise.\n" + "You " + "can " + "provide " + "a " + "list " + "of " + "keywords " + "you " + "would " + "like " + "to " + "check " + "within " + "a " + "defined " + "proximity " + "of " + "the " + "matching " + "pattern.\n" + "If " + "any " + "of " + "the " + "keywords " + "are " + "found " + "within " + "the " + "proximity " + "check, " + "the " + "match " + "is " + "kept.\n" + "If " + "none " + "are " + "found, " + "the " + "match " + "is " + "discarded.", + "properties": { + "character_count": { + "description": "The " + "number " + "of " + "characters " + "behind " + "a " + "match " + "detected " + "by " + "Sensitive " + "Data " + "Scanner " + "to " + "look " + "for " + "the " + "keywords " + "defined.\n" + "`character_count` " + "should " + "be " + "greater " + "than " + "the " + "maximum " + "length " + "of " + "a " + "keyword " + "defined " + "for " + "a " + "rule.", + "example": 30, + "format": "int64", + "maximum": 50, + "minimum": 1, + "type": "integer", + }, + "keywords": { + "description": "Keyword " + "list " + "that " + "will " + "be " + "checked " + "during " + "scanning " + "in " + "order " + "to " + "validate " + "a " + "match.\n" + "The " + "number " + "of " + "keywords " + "in " + "the " + "list " + "must " + "be " + "less " + "than " + "or " + "equal " + "to " + "30.", + "example": ["credit card", "cc"], + "items": {"type": "string"}, + "type": "array", + }, + "use_recommended_keywords": { + "description": "Should " + "the " + "rule " + "use " + "the " + "underlying " + "standard " + "pattern " + "keyword " + "configuration. " + "If " + "set " + "to " + "`true`, " + "the " + "rule " + "must " + "be " + "tied\n" + "to " + "a " + "standard " + "pattern. " + "If " + "set " + "to " + "`false`, " + "the " + "specified " + "keywords " + "and " + "`character_count` " + "are " + "applied.", + "type": "boolean", + }, + }, + "required": ["keywords", "character_count"], + "type": "object", + }, + "is_enabled": { + "description": "Whether or not the rule is enabled.", + "type": "boolean", + }, + "name": {"description": "Name of the rule.", "type": "string"}, + "namespaces": { + "description": "Attributes " + "included " + "in " + "the " + "scan. " + "If " + "namespaces " + "is " + "empty " + "or " + "missing, " + "all " + "attributes " + "except " + "excluded_namespaces " + "are " + "scanned.\n" + "If " + "both " + "are " + "missing " + "the " + "whole " + "event " + "is " + "scanned.", + "example": ["admin"], + "items": {"type": "string"}, + "type": "array", + }, + "pattern": { + "description": "Not " + "included " + "if " + "there " + "is " + "a " + "relationship " + "to " + "a " + "standard " + "pattern.", + "type": "string", + }, + "priority": { + "description": "Integer " + "from " + "1 " + "(high) " + "to " + "5 " + "(low) " + "indicating " + "rule " + "issue " + "severity.", + "format": "int64", + "maximum": 5, + "minimum": 1, + "type": "integer", + }, + "tags": { + "description": "List of tags.", + "items": {"type": "string"}, + "type": "array", + }, + "text_replacement": { + "description": "Object " + "describing " + "how " + "the " + "scanned " + "event " + "will " + "be " + "replaced.", + "properties": { + "number_of_chars": { + "description": "Required " + "if " + "type " + "== " + "'partial_replacement_from_beginning'\n" + "or " + "'partial_replacement_from_end'. " + "It " + "must " + "be " + "> " + "0.", + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "replacement_string": { + "description": "Required if type == 'replacement_string'.", + "type": "string", + }, + "should_save_match": { + "description": "Only " + "valid " + "when " + "type " + "== " + "`replacement_string`. " + "When " + "enabled, " + "matches " + "can " + "be " + "unmasked " + "in " + "logs " + "by " + "users " + "with " + "‘Data " + "Scanner " + "Unmask’ " + "permission. " + "As " + "a " + "security " + "best " + "practice, " + "avoid " + "masking " + "for " + "highly-sensitive, " + "long-lived " + "data.", + "type": "boolean", + }, + "type": { + "default": "none", + "description": "Type " + "of " + "the " + "replacement " + "text. " + "None " + "means " + "no " + "replacement.\n" + "hash " + "means " + "the " + "data " + "will " + "be " + "stubbed. " + "replacement_string " + "means " + "that\n" + "one " + "can " + "chose " + "a " + "text " + "to " + "replace " + "the " + "data. " + "partial_replacement_from_beginning\n" + "allows " + "a " + "user " + "to " + "partially " + "replace " + "the " + "data " + "from " + "the " + "beginning, " + "and\n" + "partial_replacement_from_end " + "on " + "the " + "other " + "hand, " + "allows " + "to " + "replace " + "data " + "from\n" + "the " + "end.", + "enum": [ + "none", + "hash", + "replacement_string", + "partial_replacement_from_beginning", + "partial_replacement_from_end", + ], + "type": "string", + "x-enum-varnames": [ + "NONE", + "HASH", + "REPLACEMENT_STRING", + "PARTIAL_REPLACEMENT_FROM_BEGINNING", + "PARTIAL_REPLACEMENT_FROM_END", + ], + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "relationships": { + "description": "Relationships of a scanning rule.", + "properties": { + "group": { + "description": "A scanning group data.", + "properties": { + "data": { + "description": "A scanning group.", + "properties": { + "id": { + "description": "ID of the group.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_group", + "description": "Sensitive Data Scanner group type.", + "enum": ["sensitive_data_scanner_group"], + "example": "sensitive_data_scanner_group", + "type": "string", + "x-enum-varnames": ["SENSITIVE_DATA_SCANNER_GROUP"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "standard_pattern": { + "description": "A standard pattern.", + "properties": { + "data": { + "description": "Data containing the standard pattern id.", + "properties": { + "id": { + "description": "ID of the standard pattern.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_standard_pattern", + "description": "Sensitive " + "Data " + "Scanner " + "standard " + "pattern " + "type.", + "enum": ["sensitive_data_scanner_standard_pattern"], + "example": "sensitive_data_scanner_standard_pattern", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER_STANDARD_PATTERN" + ], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "default": "sensitive_data_scanner_rule", + "description": "Sensitive Data Scanner rule type.", + "enum": ["sensitive_data_scanner_rule"], + "example": "sensitive_data_scanner_rule", + "type": "string", + "x-enum-varnames": ["SENSITIVE_DATA_SCANNER_RULE"], + }, + }, + "required": ["type", "attributes", "relationships"], + "type": "object", + }, + "meta": { + "description": "Meta payload containing information about the API.", + "properties": { + "version": { + "description": "Version of the API (optional).", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + } + }, + "type": "object", + }, + }, + "required": ["data", "meta"], + "type": "object", + }, + "UPDATESCANNINGRULE_REQUEST_BODY_SCHEMA": { + "description": "Update rule request.", + "properties": { + "data": { + "description": "Data related to the update of a rule.", + "properties": { + "attributes": { + "description": "Attributes of the Sensitive Data Scanner rule.", + "properties": { + "description": { + "description": "Description of the rule.", + "type": "string", + }, + "excluded_namespaces": { + "description": "Attributes " + "excluded " + "from " + "the " + "scan. " + "If " + "namespaces " + "is " + "provided, " + "it " + "has " + "to " + "be " + "a " + "sub-path " + "of " + "the " + "namespaces " + "array.", + "example": ["admin.name"], + "items": {"type": "string"}, + "type": "array", + }, + "included_keyword_configuration": { + "description": "Object " + "defining " + "a " + "set " + "of " + "keywords " + "and " + "a " + "number " + "of " + "characters " + "that " + "help " + "reduce " + "noise.\n" + "You " + "can " + "provide " + "a " + "list " + "of " + "keywords " + "you " + "would " + "like " + "to " + "check " + "within " + "a " + "defined " + "proximity " + "of " + "the " + "matching " + "pattern.\n" + "If " + "any " + "of " + "the " + "keywords " + "are " + "found " + "within " + "the " + "proximity " + "check, " + "the " + "match " + "is " + "kept.\n" + "If " + "none " + "are " + "found, " + "the " + "match " + "is " + "discarded.", + "properties": { + "character_count": { + "description": "The " + "number " + "of " + "characters " + "behind " + "a " + "match " + "detected " + "by " + "Sensitive " + "Data " + "Scanner " + "to " + "look " + "for " + "the " + "keywords " + "defined.\n" + "`character_count` " + "should " + "be " + "greater " + "than " + "the " + "maximum " + "length " + "of " + "a " + "keyword " + "defined " + "for " + "a " + "rule.", + "example": 30, + "format": "int64", + "maximum": 50, + "minimum": 1, + "type": "integer", + }, + "keywords": { + "description": "Keyword " + "list " + "that " + "will " + "be " + "checked " + "during " + "scanning " + "in " + "order " + "to " + "validate " + "a " + "match.\n" + "The " + "number " + "of " + "keywords " + "in " + "the " + "list " + "must " + "be " + "less " + "than " + "or " + "equal " + "to " + "30.", + "example": ["credit card", "cc"], + "items": {"type": "string"}, + "type": "array", + }, + "use_recommended_keywords": { + "description": "Should " + "the " + "rule " + "use " + "the " + "underlying " + "standard " + "pattern " + "keyword " + "configuration. " + "If " + "set " + "to " + "`true`, " + "the " + "rule " + "must " + "be " + "tied\n" + "to " + "a " + "standard " + "pattern. " + "If " + "set " + "to " + "`false`, " + "the " + "specified " + "keywords " + "and " + "`character_count` " + "are " + "applied.", + "type": "boolean", + }, + }, + "required": ["keywords", "character_count"], + "type": "object", + }, + "is_enabled": { + "description": "Whether or not the rule is enabled.", + "type": "boolean", + }, + "name": {"description": "Name of the rule.", "type": "string"}, + "namespaces": { + "description": "Attributes " + "included " + "in " + "the " + "scan. " + "If " + "namespaces " + "is " + "empty " + "or " + "missing, " + "all " + "attributes " + "except " + "excluded_namespaces " + "are " + "scanned.\n" + "If " + "both " + "are " + "missing " + "the " + "whole " + "event " + "is " + "scanned.", + "example": ["admin"], + "items": {"type": "string"}, + "type": "array", + }, + "pattern": { + "description": "Not " + "included " + "if " + "there " + "is " + "a " + "relationship " + "to " + "a " + "standard " + "pattern.", + "type": "string", + }, + "priority": { + "description": "Integer " + "from " + "1 " + "(high) " + "to " + "5 " + "(low) " + "indicating " + "rule " + "issue " + "severity.", + "format": "int64", + "maximum": 5, + "minimum": 1, + "type": "integer", + }, + "tags": { + "description": "List of tags.", + "items": {"type": "string"}, + "type": "array", + }, + "text_replacement": { + "description": "Object " + "describing " + "how " + "the " + "scanned " + "event " + "will " + "be " + "replaced.", + "properties": { + "number_of_chars": { + "description": "Required " + "if " + "type " + "== " + "'partial_replacement_from_beginning'\n" + "or " + "'partial_replacement_from_end'. " + "It " + "must " + "be " + "> " + "0.", + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "replacement_string": { + "description": "Required if type == 'replacement_string'.", + "type": "string", + }, + "should_save_match": { + "description": "Only " + "valid " + "when " + "type " + "== " + "`replacement_string`. " + "When " + "enabled, " + "matches " + "can " + "be " + "unmasked " + "in " + "logs " + "by " + "users " + "with " + "‘Data " + "Scanner " + "Unmask’ " + "permission. " + "As " + "a " + "security " + "best " + "practice, " + "avoid " + "masking " + "for " + "highly-sensitive, " + "long-lived " + "data.", + "type": "boolean", + }, + "type": { + "default": "none", + "description": "Type " + "of " + "the " + "replacement " + "text. " + "None " + "means " + "no " + "replacement.\n" + "hash " + "means " + "the " + "data " + "will " + "be " + "stubbed. " + "replacement_string " + "means " + "that\n" + "one " + "can " + "chose " + "a " + "text " + "to " + "replace " + "the " + "data. " + "partial_replacement_from_beginning\n" + "allows " + "a " + "user " + "to " + "partially " + "replace " + "the " + "data " + "from " + "the " + "beginning, " + "and\n" + "partial_replacement_from_end " + "on " + "the " + "other " + "hand, " + "allows " + "to " + "replace " + "data " + "from\n" + "the " + "end.", + "enum": [ + "none", + "hash", + "replacement_string", + "partial_replacement_from_beginning", + "partial_replacement_from_end", + ], + "type": "string", + "x-enum-varnames": [ + "NONE", + "HASH", + "REPLACEMENT_STRING", + "PARTIAL_REPLACEMENT_FROM_BEGINNING", + "PARTIAL_REPLACEMENT_FROM_END", + ], + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "id": {"description": "ID of the rule.", "type": "string"}, + "relationships": { + "description": "Relationships of a scanning rule.", + "properties": { + "group": { + "description": "A scanning group data.", + "properties": { + "data": { + "description": "A scanning group.", + "properties": { + "id": { + "description": "ID of the group.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_group", + "description": "Sensitive Data Scanner group type.", + "enum": ["sensitive_data_scanner_group"], + "example": "sensitive_data_scanner_group", + "type": "string", + "x-enum-varnames": ["SENSITIVE_DATA_SCANNER_GROUP"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "standard_pattern": { + "description": "A standard pattern.", + "properties": { + "data": { + "description": "Data containing the standard pattern id.", + "properties": { + "id": { + "description": "ID of the standard pattern.", + "type": "string", + }, + "type": { + "default": "sensitive_data_scanner_standard_pattern", + "description": "Sensitive " + "Data " + "Scanner " + "standard " + "pattern " + "type.", + "enum": ["sensitive_data_scanner_standard_pattern"], + "example": "sensitive_data_scanner_standard_pattern", + "type": "string", + "x-enum-varnames": [ + "SENSITIVE_DATA_SCANNER_STANDARD_PATTERN" + ], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "default": "sensitive_data_scanner_rule", + "description": "Sensitive Data Scanner rule type.", + "enum": ["sensitive_data_scanner_rule"], + "example": "sensitive_data_scanner_rule", + "type": "string", + "x-enum-varnames": ["SENSITIVE_DATA_SCANNER_RULE"], + }, + }, + "type": "object", + }, + "meta": { + "description": "Meta payload containing information about the API.", + "properties": { + "version": { + "description": "Version of the API (optional).", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + } + }, + "type": "object", + }, + }, + "required": ["data", "meta"], + "type": "object", + }, + "CREATESERVICEACCOUNT_REQUEST_BODY_SCHEMA": { + "description": "Create a service account.", + "properties": { + "data": { + "description": "Object to create a service account User.", + "properties": { + "attributes": { + "description": "Attributes of the created user.", + "properties": { + "email": { + "description": "The email of the user.", + "example": "jane.doe@example.com", + "type": "string", + }, + "name": {"description": "The name of the user.", "type": "string"}, + "service_account": { + "description": "Whether " + "the " + "user " + "is " + "a " + "service " + "account. " + "Must " + "be " + "true.", + "example": True, + "type": "boolean", + }, + "title": {"description": "The title of the user.", "type": "string"}, + }, + "required": ["email", "service_account"], + "type": "object", + }, + "relationships": { + "description": "Relationships of the user object.", + "properties": { + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An " + "array " + "containing " + "type " + "and " + "the " + "unique " + "identifier " + "of " + "a " + "role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string", + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": ["roles"], + "example": "roles", + "type": "string", + "x-enum-varnames": ["ROLES"], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEORUPDATESERVICEDEFINITIONS_REQUEST_BODY_SCHEMA": { + "description": "Create service definitions request.", + "oneOf": [ + { + "description": "Service definition v2.2 for providing service metadata and " + "integrations.", + "properties": { + "application": { + "description": "Identifier for a group of " + "related services serving a " + "product feature, which the " + "service is a part of.", + "example": "my-app", + "type": "string", + }, + "ci-pipeline-fingerprints": { + "description": "A set of CI fingerprints.", + "example": ["j88xdEy0J5lc", "eZ7LMljCk8vo"], + "items": {"type": "string"}, + "type": "array", + }, + "contacts": { + "description": "A list of contacts related to the services.", + "items": { + "description": "Service owner's contacts information.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://teams.microsoft.com/myteam", + "type": "string", + }, + "name": { + "description": "Contact Name.", + "example": "My team channel", + "type": "string", + }, + "type": { + "description": "Contact " + "type. " + "Datadog " + "recognizes " + "the " + "following " + "types: " + "`email`, " + "`slack`, " + "and " + "`microsoft-teams`.", + "example": "slack", + "type": "string", + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + "type": "array", + }, + "dd-service": { + "description": "Unique identifier of the " + "service. Must be unique " + "across all services and is " + "used to match with a service " + "in Datadog.", + "example": "my-service", + "type": "string", + }, + "description": { + "description": "A short description of the service.", + "example": "My service description", + "type": "string", + }, + "extensions": { + "additionalProperties": {}, + "description": "Extensions to v2.2 schema.", + "example": {"myorg/extension": "extensionValue"}, + "type": "object", + }, + "integrations": { + "description": "Third party integrations that Datadog supports.", + "properties": { + "opsgenie": { + "description": "Opsgenie integration for the service.", + "properties": { + "region": { + "description": "Opsgenie instance region.", + "enum": ["US", "EU"], + "example": "US", + "type": "string", + "x-enum-varnames": ["US", "EU"], + }, + "service-url": { + "description": "Opsgenie service url.", + "example": "https://my-org.opsgenie.com/service/123e4567-e89b-12d3-a456-426614174000", + "type": "string", + }, + }, + "required": ["service-url"], + "type": "object", + }, + "pagerduty": { + "description": "PagerDuty integration for the service.", + "properties": { + "service-url": { + "description": "PagerDuty service url.", + "example": "https://my-org.pagerduty.com/service-directory/PMyService", + "type": "string", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "languages": { + "description": "The service's programming " + "language. Datadog recognizes " + "the following languages: " + "`dotnet`, `go`, `java`, `js`, " + "`php`, `python`, `ruby`, and " + "`c++`.", + "example": ["dotnet", "go", "java", "js", "php", "python", "ruby", "c++"], + "items": {"type": "string"}, + "type": "array", + }, + "lifecycle": { + "description": "The current life cycle phase of the service.", + "example": "sandbox", + "type": "string", + }, + "links": { + "description": "A list of links related to the services.", + "items": { + "description": "Service's external links.", + "properties": { + "name": { + "description": "Link name.", + "example": "Runbook", + "type": "string", + }, + "provider": { + "description": "Link provider.", + "example": "Github", + "type": "string", + }, + "type": { + "description": "Link " + "type. " + "Datadog " + "recognizes " + "the " + "following " + "types: " + "`runbook`, " + "`doc`, " + "`repo`, " + "`dashboard`, " + "and " + "`other`.", + "example": "runbook", + "type": "string", + }, + "url": { + "description": "Link URL.", + "example": "https://my-runbook", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "schema-version": { + "default": "v2.2", + "description": "Schema version being used.", + "enum": ["v2.2"], + "example": "v2.2", + "type": "string", + "x-enum-varnames": ["V2_2"], + }, + "tags": { + "description": "A set of custom tags.", + "example": ["my:tag", "service:tag"], + "items": {"type": "string"}, + "type": "array", + }, + "team": { + "description": "Team that owns the service. It is " + "used to locate a team defined in " + "Datadog Teams if it exists.", + "example": "my-team", + "type": "string", + }, + "tier": { + "description": "Importance of the service.", + "example": "High", + "type": "string", + }, + "type": { + "description": "The type of service.", + "example": "web", + "type": "string", + }, + }, + "required": ["schema-version", "dd-service"], + "type": "object", + }, + { + "description": "Service definition v2.1 for providing service metadata and " + "integrations.", + "properties": { + "application": { + "description": "Identifier for a group of " + "related services serving a " + "product feature, which the " + "service is a part of.", + "example": "my-app", + "type": "string", + }, + "contacts": { + "description": "A list of contacts related to the services.", + "items": { + "description": "Service owner's contacts information.", + "oneOf": [ + { + "description": "Service owner's email.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "contact@datadoghq.com", + "type": "string", + }, + "name": { + "description": "Contact email.", + "example": "Team Email", + "type": "string", + }, + "type": { + "description": "Contact type.", + "enum": ["email"], + "example": "email", + "type": "string", + "x-enum-varnames": ["EMAIL"], + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + { + "description": "Service owner's Slack channel.", + "properties": { + "contact": { + "description": "Slack Channel.", + "example": "https://yourcompany.slack.com/archives/channel123", + "type": "string", + }, + "name": { + "description": "Contact Slack.", + "example": "Team Slack", + "type": "string", + }, + "type": { + "description": "Contact type.", + "enum": ["slack"], + "example": "slack", + "type": "string", + "x-enum-varnames": ["SLACK"], + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + { + "description": "Service owner's Microsoft Teams.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://teams.microsoft.com/myteam", + "type": "string", + }, + "name": { + "description": "Contact Microsoft Teams.", + "example": "My team channel", + "type": "string", + }, + "type": { + "description": "Contact type.", + "enum": ["microsoft-teams"], + "example": "microsoft-teams", + "type": "string", + "x-enum-varnames": ["MICROSOFT_TEAMS"], + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "dd-service": { + "description": "Unique identifier of the " + "service. Must be unique " + "across all services and is " + "used to match with a service " + "in Datadog.", + "example": "my-service", + "type": "string", + }, + "description": { + "description": "A short description of the service.", + "example": "My service description", + "type": "string", + }, + "extensions": { + "additionalProperties": {}, + "description": "Extensions to v2.1 schema.", + "example": {"myorg/extension": "extensionValue"}, + "type": "object", + }, + "integrations": { + "description": "Third party integrations that Datadog supports.", + "properties": { + "opsgenie": { + "description": "Opsgenie integration for the service.", + "properties": { + "region": { + "description": "Opsgenie instance region.", + "enum": ["US", "EU"], + "example": "US", + "type": "string", + "x-enum-varnames": ["US", "EU"], + }, + "service-url": { + "description": "Opsgenie service url.", + "example": "https://my-org.opsgenie.com/service/123e4567-e89b-12d3-a456-426614174000", + "type": "string", + }, + }, + "required": ["service-url"], + "type": "object", + }, + "pagerduty": { + "description": "PagerDuty integration for the service.", + "properties": { + "service-url": { + "description": "PagerDuty service url.", + "example": "https://my-org.pagerduty.com/service-directory/PMyService", + "type": "string", + } + }, + "type": "object", + }, + }, + "type": "object", + }, + "lifecycle": { + "description": "The current life cycle phase of the service.", + "example": "sandbox", + "type": "string", + }, + "links": { + "description": "A list of links related to the services.", + "items": { + "description": "Service's external links.", + "properties": { + "name": { + "description": "Link name.", + "example": "Runbook", + "type": "string", + }, + "provider": { + "description": "Link provider.", + "example": "Github", + "type": "string", + }, + "type": { + "description": "Link type.", + "enum": ["doc", "repo", "runbook", "dashboard", "other"], + "example": "runbook", + "type": "string", + "x-enum-varnames": [ + "DOC", + "REPO", + "RUNBOOK", + "DASHBOARD", + "OTHER", + ], + }, + "url": { + "description": "Link URL.", + "example": "https://my-runbook", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "schema-version": { + "default": "v2.1", + "description": "Schema version being used.", + "enum": ["v2.1"], + "example": "v2.1", + "type": "string", + "x-enum-varnames": ["V2_1"], + }, + "tags": { + "description": "A set of custom tags.", + "example": ["my:tag", "service:tag"], + "items": {"type": "string"}, + "type": "array", + }, + "team": { + "description": "Team that owns the service. It is " + "used to locate a team defined in " + "Datadog Teams if it exists.", + "example": "my-team", + "type": "string", + }, + "tier": { + "description": "Importance of the service.", + "example": "High", + "type": "string", + }, + }, + "required": ["schema-version", "dd-service"], + "type": "object", + }, + { + "description": "Service definition V2 for providing service metadata and " + "integrations.", + "properties": { + "contacts": { + "description": "A list of contacts related to the services.", + "items": { + "description": "Service owner's contacts information.", + "oneOf": [ + { + "description": "Service owner's email.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "contact@datadoghq.com", + "type": "string", + }, + "name": { + "description": "Contact email.", + "example": "Team Email", + "type": "string", + }, + "type": { + "description": "Contact type.", + "enum": ["email"], + "example": "email", + "type": "string", + "x-enum-varnames": ["EMAIL"], + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + { + "description": "Service owner's Slack channel.", + "properties": { + "contact": { + "description": "Slack Channel.", + "example": "https://yourcompany.slack.com/archives/channel123", + "type": "string", + }, + "name": { + "description": "Contact Slack.", + "example": "Team Slack", + "type": "string", + }, + "type": { + "description": "Contact type.", + "enum": ["slack"], + "example": "slack", + "type": "string", + "x-enum-varnames": ["SLACK"], + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + { + "description": "Service owner's Microsoft Teams.", + "properties": { + "contact": { + "description": "Contact value.", + "example": "https://teams.microsoft.com/myteam", + "type": "string", + }, + "name": { + "description": "Contact Microsoft Teams.", + "example": "My team channel", + "type": "string", + }, + "type": { + "description": "Contact type.", + "enum": ["microsoft-teams"], + "example": "microsoft-teams", + "type": "string", + "x-enum-varnames": ["MICROSOFT_TEAMS"], + }, + }, + "required": ["type", "contact"], + "type": "object", + }, + ], + }, + "type": "array", + }, + "dd-service": { + "description": "Unique identifier of the " + "service. Must be unique " + "across all services and is " + "used to match with a service " + "in Datadog.", + "example": "my-service", + "type": "string", + }, + "dd-team": { + "description": "Experimental feature. A Team " + "handle that matches a Team in " + "the Datadog Teams product.", + "example": "my-team", + "type": "string", + }, + "docs": { + "description": "A list of documentation related to the services.", + "items": { + "description": "Service documents.", + "properties": { + "name": { + "description": "Document name.", + "example": "Architecture", + "type": "string", + }, + "provider": { + "description": "Document provider.", + "example": "google drive", + "type": "string", + }, + "url": { + "description": "Document URL.", + "example": "https://gdrive/mydoc", + "type": "string", + }, + }, + "required": ["name", "url"], + "type": "object", + }, + "type": "array", + }, + "extensions": { + "additionalProperties": {}, + "description": "Extensions to V2 schema.", + "example": {"myorg/extension": "extensionValue"}, + "type": "object", + }, + "integrations": { + "description": "Third party integrations that Datadog supports.", + "properties": { + "opsgenie": { + "description": "Opsgenie integration for the service.", + "properties": { + "region": { + "description": "Opsgenie instance region.", + "enum": ["US", "EU"], + "example": "US", + "type": "string", + "x-enum-varnames": ["US", "EU"], + }, + "service-url": { + "description": "Opsgenie service url.", + "example": "https://my-org.opsgenie.com/service/123e4567-e89b-12d3-a456-426614174000", + "type": "string", + }, + }, + "required": ["service-url"], + "type": "object", + }, + "pagerduty": { + "description": "PagerDuty service URL for the service.", + "example": "https://my-org.pagerduty.com/service-directory/PMyService", + "type": "string", + }, + }, + "type": "object", + }, + "links": { + "description": "A list of links related to the services.", + "items": { + "description": "Service's external links.", + "properties": { + "name": { + "description": "Link name.", + "example": "Runbook", + "type": "string", + }, + "type": { + "description": "Link type.", + "enum": [ + "doc", + "wiki", + "runbook", + "url", + "repo", + "dashboard", + "oncall", + "code", + "link", + ], + "example": "runbook", + "type": "string", + "x-enum-varnames": [ + "DOC", + "WIKI", + "RUNBOOK", + "URL", + "REPO", + "DASHBOARD", + "ONCALL", + "CODE", + "LINK", + ], + }, + "url": { + "description": "Link URL.", + "example": "https://my-runbook", + "type": "string", + }, + }, + "required": ["name", "type", "url"], + "type": "object", + }, + "type": "array", + }, + "repos": { + "description": "A list of code repositories related to the services.", + "items": { + "description": "Service code repositories.", + "properties": { + "name": { + "description": "Repository name.", + "example": "Source Code", + "type": "string", + }, + "provider": { + "description": "Repository provider.", + "example": "GitHub", + "type": "string", + }, + "url": { + "description": "Repository URL.", + "example": "https://github.com/DataDog/schema", + "type": "string", + }, + }, + "required": ["name", "url"], + "type": "object", + }, + "type": "array", + }, + "schema-version": { + "default": "v2", + "description": "Schema version being used.", + "enum": ["v2"], + "example": "v2", + "type": "string", + "x-enum-varnames": ["V2"], + }, + "tags": { + "description": "A set of custom tags.", + "example": ["my:tag", "service:tag"], + "items": {"type": "string"}, + "type": "array", + }, + "team": { + "description": "Team that owns the service.", + "example": "my-team", + "type": "string", + }, + }, + "required": ["schema-version", "dd-service"], + "type": "object", + }, + { + "description": "Service Definition in raw JSON/YAML representation.", + "example": "---\nschema-version: v2\ndd-service: my-service", + "type": "string", + }, + ], + }, + "RUNHISTORICALDETECTIONJOB_REQUEST_BODY_SCHEMA": { + "description": "Run a historical job request.", + "properties": { + "data": { + "description": "Data for running a historical job request.", + "properties": { + "attributes": { + "description": "Run a historical job request.", + "properties": { + "fromRule": { + "description": "Definition " + "of " + "a " + "historical " + "job " + "based " + "on " + "a " + "security " + "monitoring " + "rule.", + "properties": { + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer", + }, + "id": { + "description": "ID " + "of " + "the " + "detection " + "rule " + "used " + "to " + "create " + "the " + "job.", + "example": "abc-def-ghi", + "type": "string", + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string", + }, + "notifications": { + "description": "Notifications " + "sent " + "when " + "the " + "job " + "is " + "completed.", + "example": ["@sns-cloudtrail-results"], + "items": {"type": "string"}, + "type": "array", + }, + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer", + }, + }, + "required": ["id", "from", "to", "index"], + "type": "object", + }, + "id": {"description": "Request ID.", "type": "string"}, + "jobDefinition": { + "description": "Definition of a historical job.", + "properties": { + "calculatedFields": { + "description": "Calculated fields.", + "items": { + "description": "Calculated field.", + "properties": { + "expression": { + "description": "Expression.", + "example": "@request_end_timestamp " + "- " + "@request_start_timestamp", + "type": "string", + }, + "name": { + "description": "Field name.", + "example": "response_time", + "type": "string", + }, + }, + "required": ["name", "expression"], + "type": "object", + }, + "type": "array", + }, + "cases": { + "description": "Cases used for generating job results.", + "items": { + "description": "Case when signal is generated.", + "properties": { + "actions": { + "description": "Action " + "to " + "perform " + "for " + "each " + "rule " + "case.", + "items": { + "description": "Action " + "to " + "perform " + "when " + "a " + "signal " + "is " + "triggered. " + "Only " + "available " + "for " + "Application " + "Security " + "rule " + "type.", + "properties": { + "options": { + "additionalProperties": {}, + "description": "Options " + "for " + "the " + "rule " + "action", + "properties": { + "duration": { + "description": "Duration " + "of " + "the " + "action " + "in " + "seconds. " + "0 " + "indicates " + "no " + "expiration.", + "example": 0, + "format": "int64", + "minimum": 0, + "type": "integer", + }, + "flaggedIPType": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'flag_ip'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "flag " + "to " + "the " + "IP " + "addresses.", + "enum": [ + "SUSPICIOUS", + "FLAGGED", + ], + "example": "FLAGGED", + "type": "string", + "x-enum-varnames": [ + "SUSPICIOUS", + "FLAGGED", + ], + }, + "userBehaviorName": { + "description": "Used " + "with " + "the " + "case " + "action " + "of " + "type " + "'user_behavior'. " + "The " + "value " + "specified " + "in " + "this " + "field " + "is " + "applied " + "as " + "a " + "risk " + "tag " + "to " + "all " + "users " + "affected " + "by " + "the " + "rule.", + "type": "string", + }, + }, + "type": "object", + }, + "type": { + "description": "The action type.", + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip", + ], + "type": "string", + "x-enum-varnames": [ + "BLOCK_IP", + "BLOCK_USER", + "USER_BEHAVIOR", + "FLAG_IP", + ], + }, + }, + "type": "object", + }, + "type": "array", + }, + "condition": { + "description": "A " + "case " + "contains " + "logical " + "operations " + "(`>`,`>=`, " + "`&&`, " + "`||`) " + "to " + "determine " + "if " + "a " + "signal " + "should " + "be " + "generated\n" + "based " + "on " + "the " + "event " + "counts " + "in " + "the " + "previously " + "defined " + "queries.", + "type": "string", + }, + "name": { + "description": "Name of the case.", + "type": "string", + }, + "notifications": { + "description": "Notification targets.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "status": { + "description": "Severity " + "of " + "the " + "Security " + "Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical", + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "from": { + "description": "Starting time of data analyzed by the job.", + "example": 1729843470000, + "format": "int64", + "type": "integer", + }, + "groupSignalsBy": { + "description": "Additional " + "grouping " + "to " + "perform " + "on " + "top " + "of " + "the " + "existing " + "groups " + "in " + "the " + "query " + "section. " + "Must " + "be " + "a " + "subset " + "of " + "the " + "existing " + "groups.", + "example": ["service"], + "items": { + "description": "Field to group by.", + "type": "string", + }, + "type": "array", + }, + "index": { + "description": "Index used to load the data.", + "example": "cloud_siem", + "type": "string", + }, + "message": { + "description": "Message for generated results.", + "example": "A large number of failed login attempts.", + "type": "string", + }, + "name": { + "description": "Job name.", + "example": "Excessive number of failed attempts.", + "type": "string", + }, + "options": { + "description": "Job options.", + "properties": { + "detectionMethod": { + "description": "The detection method.", + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection", + ], + "type": "string", + "x-enum-varnames": [ + "THRESHOLD", + "NEW_VALUE", + "ANOMALY_DETECTION", + "IMPOSSIBLE_TRAVEL", + "HARDCODED", + "THIRD_PARTY", + "ANOMALY_THRESHOLD", + "SEQUENCE_DETECTION", + ], + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "impossibleTravelOptions": { + "description": "Options " + "on " + "impossible " + "travel " + "detection " + "method.", + "properties": { + "baselineUserLocations": { + "description": "If " + "true, " + "signals " + "are " + "suppressed " + "for " + "the " + "first " + "24 " + "hours. " + "In " + "that " + "time, " + "Datadog " + "learns " + "the " + "user's " + "regular\n" + "access " + "locations. " + "This " + "can " + "be " + "helpful " + "to " + "reduce " + "noise " + "and " + "infer " + "VPN " + "usage " + "or " + "credentialed " + "API " + "access.", + "example": True, + "type": "boolean", + } + }, + "type": "object", + }, + "keepAlive": { + "description": "Once " + "a " + "signal " + "is " + "generated, " + "the " + "signal " + "will " + "remain " + '"open" ' + "if " + "a " + "case " + "is " + "matched " + "at " + "least " + "once " + "within\n" + "this " + "keep " + "alive " + "window. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "maxSignalDuration": { + "description": "A " + "signal " + "will " + '"close" ' + "regardless " + "of " + "the " + "query " + "being " + "matched " + "once " + "the " + "time " + "exceeds " + "the " + "maximum " + "duration.\n" + "This " + "time " + "is " + "calculated " + "from " + "the " + "first " + "seen " + "timestamp.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "newValueOptions": { + "description": "Options " + "on " + "new " + "value " + "detection " + "method.", + "properties": { + "forgetAfter": { + "description": "The " + "duration " + "in " + "days " + "after " + "which " + "a " + "learned " + "value " + "is " + "forgotten.", + "enum": [1, 2, 7, 14, 21, 28], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ONE_DAY", + "TWO_DAYS", + "ONE_WEEK", + "TWO_WEEKS", + "THREE_WEEKS", + "FOUR_WEEKS", + ], + }, + "learningDuration": { + "default": 0, + "description": "The " + "duration " + "in " + "days " + "during " + "which " + "values " + "are " + "learned, " + "and " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that\n" + "weren't " + "learned. " + "If " + "set " + "to " + "0, " + "a " + "signal " + "will " + "be " + "generated " + "for " + "all " + "new " + "values " + "after " + "the " + "first " + "value " + "is " + "learned.", + "enum": [0, 1, 7], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_DAYS", + "ONE_DAY", + "SEVEN_DAYS", + ], + }, + "learningMethod": { + "default": "duration", + "description": "The " + "learning " + "method " + "used " + "to " + "determine " + "when " + "signals " + "should " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": ["duration", "threshold"], + "type": "string", + "x-enum-varnames": [ + "DURATION", + "THRESHOLD", + ], + }, + "learningThreshold": { + "default": 0, + "description": "A " + "number " + "of " + "occurrences " + "after " + "which " + "signals " + "will " + "be " + "generated " + "for " + "values " + "that " + "weren't " + "learned.", + "enum": [0, 1], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_OCCURRENCES", + "ONE_OCCURRENCE", + ], + }, + }, + "type": "object", + }, + "sequenceDetectionOptions": { + "description": "Options " + "on " + "sequence " + "detection " + "method.", + "properties": { + "stepTransitions": { + "description": "Transitions " + "defining " + "the " + "allowed " + "order " + "of " + "steps " + "and " + "their " + "evaluation " + "windows.", + "items": { + "description": "Transition " + "from " + "a " + "parent " + "step " + "to " + "a " + "child " + "step " + "within " + "a " + "sequence " + "detection " + "rule.", + "properties": { + "child": { + "description": "Name " + "of " + "the " + "child " + "step.", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "parent": { + "description": "Name " + "of " + "the " + "parent " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "steps": { + "description": "Steps " + "that " + "define " + "the " + "conditions " + "to " + "be " + "matched " + "in " + "sequence.", + "items": { + "description": "Step " + "definition " + "for " + "sequence " + "detection " + "containing " + "the " + "step " + "name, " + "condition, " + "and " + "evaluation " + "window.", + "properties": { + "condition": { + "description": "Condition " + "referencing " + "rule " + "queries " + "(e.g., " + "`a " + "> " + "0`).", + "type": "string", + }, + "evaluationWindow": { + "description": "A " + "time " + "window " + "is " + "specified " + "to " + "match " + "when " + "at " + "least " + "one " + "of " + "the " + "cases " + "matches " + "true. " + "This " + "is " + "a " + "sliding " + "window\n" + "and " + "evaluates " + "in " + "real " + "time. " + "For " + "third " + "party " + "detection " + "method, " + "this " + "field " + "is " + "not " + "used.", + "enum": [ + 0, + 60, + 300, + 600, + 900, + 1800, + 3600, + 7200, + 10800, + 21600, + 43200, + 86400, + ], + "format": "int32", + "type": "integer", + "x-enum-varnames": [ + "ZERO_MINUTES", + "ONE_MINUTE", + "FIVE_MINUTES", + "TEN_MINUTES", + "FIFTEEN_MINUTES", + "THIRTY_MINUTES", + "ONE_HOUR", + "TWO_HOURS", + "THREE_HOURS", + "SIX_HOURS", + "TWELVE_HOURS", + "ONE_DAY", + ], + }, + "name": { + "description": "Unique " + "name " + "identifying " + "the " + "step.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + }, + "type": "object", + }, + "thirdPartyRuleOptions": { + "description": "Options " + "on " + "third " + "party " + "detection " + "method.", + "properties": { + "defaultNotifications": { + "description": "Notification " + "targets " + "for " + "the " + "logs " + "that " + "do " + "not " + "correspond " + "to " + "any " + "of " + "the " + "cases.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "defaultStatus": { + "description": "Severity " + "of " + "the " + "Security " + "Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical", + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + "rootQueries": { + "description": "Queries " + "to " + "be " + "combined " + "with " + "third " + "party " + "case " + "queries. " + "Each " + "of " + "them " + "can " + "have " + "different " + "group " + "by " + "fields, " + "to " + "aggregate " + "differently " + "based " + "on " + "the " + "type " + "of " + "alert.", + "items": { + "description": "A " + "query " + "to " + "be " + "combined " + "with " + "the " + "third " + "party " + "case " + "query.", + "properties": { + "groupByFields": { + "description": "Fields " + "to " + "group " + "by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "Query " + "to " + "run " + "on " + "logs.", + "example": "source:cloudtrail", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "signalTitleTemplate": { + "description": "A " + "template " + "for " + "the " + "signal " + "title; " + "if " + "omitted, " + "the " + "title " + "is " + "generated " + "based " + "on " + "the " + "case " + "name.", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "queries": { + "description": "Queries " + "for " + "selecting " + "logs " + "analyzed " + "by " + "the " + "job.", + "items": { + "description": "Query " + "for " + "selecting " + "logs " + "analyzed " + "by " + "the " + "historical " + "job.", + "properties": { + "aggregation": { + "description": "The aggregation type.", + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none", + ], + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "SUM", + "MAX", + "NEW_VALUE", + "GEO_DATA", + "EVENT_COUNT", + "NONE", + ], + }, + "dataSource": { + "default": "logs", + "description": "Source " + "of " + "events, " + "either " + "logs, " + "audit " + "trail, " + "or " + "Datadog " + "events.", + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events", + ], + "example": "logs", + "type": "string", + "x-enum-varnames": [ + "LOGS", + "AUDIT", + "APP_SEC_SPANS", + "SPANS", + "SECURITY_RUNTIME", + "NETWORK", + "EVENTS", + ], + }, + "distinctFields": { + "description": "Field " + "for " + "which " + "the " + "cardinality " + "is " + "measured. " + "Sent " + "as " + "an " + "array.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "groupByFields": { + "description": "Fields to group by.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "hasOptionalGroupByFields": { + "default": False, + "description": "When " + "false, " + "events " + "without " + "a " + "group-by " + "value " + "are " + "ignored " + "by " + "the " + "query. " + "When " + "true, " + "events " + "with " + "missing " + "group-by " + "fields " + "are " + "processed " + "with " + "`N/A`, " + "replacing " + "the " + "missing " + "values.", + "example": False, + "type": "boolean", + }, + "metrics": { + "description": "Group " + "of " + "target " + "fields " + "to " + "aggregate " + "over " + "when " + "using " + "the " + "sum, " + "max, " + "geo " + "data, " + "or " + "new " + "value " + "aggregations. " + "The " + "sum, " + "max, " + "and " + "geo " + "data " + "aggregations " + "only " + "accept " + "one " + "value " + "in " + "this " + "list, " + "whereas " + "the " + "new " + "value " + "aggregation " + "accepts " + "up " + "to " + "five " + "values.", + "items": { + "description": "Field.", + "type": "string", + }, + "type": "array", + }, + "name": { + "description": "Name of the query.", + "type": "string", + }, + "query": { + "description": "Query to run on logs.", + "example": "a > 3", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "referenceTables": { + "description": "Reference tables used in the queries.", + "items": { + "description": "Reference tables used in the queries.", + "properties": { + "checkPresence": { + "description": "Whether " + "to " + "include " + "or " + "exclude " + "the " + "matched " + "values.", + "type": "boolean", + }, + "columnName": { + "description": "The " + "name " + "of " + "the " + "column " + "in " + "the " + "reference " + "table.", + "type": "string", + }, + "logFieldPath": { + "description": "The " + "field " + "in " + "the " + "log " + "to " + "match " + "against " + "the " + "reference " + "table.", + "type": "string", + }, + "ruleQueryName": { + "description": "The " + "name " + "of " + "the " + "query " + "to " + "apply " + "the " + "reference " + "table " + "to.", + "type": "string", + }, + "tableName": { + "description": "The " + "name " + "of " + "the " + "reference " + "table.", + "type": "string", + }, + }, + "type": "object", + }, + "type": "array", + }, + "tags": { + "description": "Tags for generated signals.", + "items": {"type": "string"}, + "type": "array", + }, + "thirdPartyCases": { + "description": "Cases " + "for " + "generating " + "results " + "from " + "third-party " + "detection " + "method. " + "Only " + "available " + "for " + "third-party " + "detection " + "method.", + "example": [], + "items": { + "description": "Case " + "when " + "a " + "signal " + "is " + "generated " + "by " + "a " + "third " + "party " + "rule.", + "properties": { + "name": { + "description": "Name of the case.", + "type": "string", + }, + "notifications": { + "description": "Notification " + "targets " + "for " + "each " + "case.", + "items": { + "description": "Notification.", + "type": "string", + }, + "type": "array", + }, + "query": { + "description": "A " + "query " + "to " + "map " + "a " + "third " + "party " + "event " + "to " + "this " + "case.", + "type": "string", + }, + "status": { + "description": "Severity " + "of " + "the " + "Security " + "Signal.", + "enum": [ + "info", + "low", + "medium", + "high", + "critical", + ], + "example": "critical", + "type": "string", + "x-enum-varnames": [ + "INFO", + "LOW", + "MEDIUM", + "HIGH", + "CRITICAL", + ], + }, + }, + "required": ["status"], + "type": "object", + }, + "type": "array", + }, + "to": { + "description": "Ending time of data analyzed by the job.", + "example": 1729847070000, + "format": "int64", + "type": "integer", + }, + "type": {"description": "Job type.", "type": "string"}, + }, + "required": [ + "from", + "to", + "index", + "name", + "cases", + "queries", + "message", + ], + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "description": "Type of data.", + "enum": ["historicalDetectionsJobCreate"], + "type": "string", + "x-enum-varnames": ["HISTORICALDETECTIONSJOBCREATE"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "AGGREGATESPANSMETRICS_REQUEST_BODY_SCHEMA": { + "description": "The object sent with the request to retrieve a list of aggregated " + "spans from your organization.", + "properties": { + "data": { + "description": "The object containing the query content.", + "properties": { + "attributes": { + "description": "The object containing all the query parameters.", + "properties": { + "compute": { + "description": "The " + "list " + "of " + "metrics " + "or " + "timeseries " + "to " + "compute " + "for " + "the " + "retrieved " + "buckets.", + "items": { + "description": "A " + "compute " + "rule " + "to " + "compute " + "metrics " + "or " + "timeseries.", + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + ], + }, + "interval": { + "description": "The " + "time " + "buckets' " + "size " + "(only " + "used " + "for " + "type=timeseries)\n" + "Defaults " + "to " + "a " + "resolution " + "of " + "150 " + "points.", + "example": "5m", + "type": "string", + }, + "metric": { + "description": "The metric to use.", + "example": "@duration", + "type": "string", + }, + "type": { + "default": "total", + "description": "The type of compute.", + "enum": ["timeseries", "total"], + "type": "string", + "x-enum-varnames": ["TIMESERIES", "TOTAL"], + }, + }, + "required": ["aggregation"], + "type": "object", + }, + "type": "array", + }, + "filter": { + "description": "The search and filter query settings.", + "properties": { + "from": { + "default": "now-15m", + "description": "The " + "minimum " + "time " + "for " + "the " + "requested " + "spans, " + "supports " + "date-time " + "ISO8601, " + "date " + "math, " + "and " + "regular " + "timestamps " + "(milliseconds).", + "example": "now-15m", + "type": "string", + }, + "query": { + "default": "*", + "description": "The " + "search " + "query " + "- " + "following " + "the " + "span " + "search " + "syntax.", + "example": "service:web* " + "AND " + "@http.status_code:[200 " + "TO " + "299]", + "type": "string", + }, + "to": { + "default": "now", + "description": "The " + "maximum " + "time " + "for " + "the " + "requested " + "spans, " + "supports " + "date-time " + "ISO8601, " + "date " + "math, " + "and " + "regular " + "timestamps " + "(milliseconds).", + "example": "now", + "type": "string", + }, + }, + "type": "object", + }, + "group_by": { + "description": "The rules for the group by.", + "items": { + "description": "A group by rule.", + "properties": { + "facet": { + "description": "The " + "name " + "of " + "the " + "facet " + "to " + "use " + "(required).", + "example": "host", + "type": "string", + }, + "histogram": { + "description": "Used " + "to " + "perform " + "a " + "histogram " + "computation " + "(only " + "for " + "measure " + "facets).\n" + "Note: " + "At " + "most " + "100 " + "buckets " + "are " + "allowed, " + "the " + "number " + "of " + "buckets " + "is " + "(max " + "- " + "min)/interval.", + "properties": { + "interval": { + "description": "The " + "bin " + "size " + "of " + "the " + "histogram " + "buckets.", + "example": 10, + "format": "double", + "type": "number", + }, + "max": { + "description": "The " + "maximum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "greater " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 100, + "format": "double", + "type": "number", + }, + "min": { + "description": "The " + "minimum " + "value " + "for " + "the " + "measure " + "used " + "in " + "the " + "histogram\n" + "(values " + "smaller " + "than " + "this " + "one " + "are " + "filtered " + "out).", + "example": 50, + "format": "double", + "type": "number", + }, + }, + "required": ["interval", "min", "max"], + "type": "object", + }, + "limit": { + "default": 10, + "description": "The " + "maximum " + "buckets " + "to " + "return " + "for " + "this " + "group " + "by.", + "format": "int64", + "type": "integer", + }, + "missing": { + "description": "The " + "value " + "to " + "use " + "for " + "spans " + "that " + "don't " + "have " + "the " + "facet " + "used " + "to " + "group " + "by.", + "oneOf": [ + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "string " + "valued " + "facet.", + "type": "string", + }, + { + "description": "The " + "missing " + "value " + "to " + "use " + "if " + "there " + "is " + "a " + "number " + "valued " + "facet.", + "format": "double", + "type": "number", + }, + ], + }, + "sort": { + "description": "A sort rule.", + "example": {"aggregation": "count", "order": "asc"}, + "properties": { + "aggregation": { + "description": "An aggregation function.", + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + ], + "example": "pc90", + "type": "string", + "x-enum-varnames": [ + "COUNT", + "CARDINALITY", + "PERCENTILE_75", + "PERCENTILE_90", + "PERCENTILE_95", + "PERCENTILE_98", + "PERCENTILE_99", + "SUM", + "MIN", + "MAX", + "AVG", + "MEDIAN", + ], + }, + "metric": { + "description": "The " + "metric " + "to " + "sort " + "by " + "(only " + "used " + "for " + "`type=measure`).", + "example": "@duration", + "type": "string", + }, + "order": { + "description": "The " + "order " + "to " + "use, " + "ascending " + "or " + "descending.", + "enum": ["asc", "desc"], + "example": "asc", + "type": "string", + "x-enum-varnames": ["ASCENDING", "DESCENDING"], + }, + "type": { + "default": "alphabetical", + "description": "The type of sorting algorithm.", + "enum": ["alphabetical", "measure"], + "type": "string", + "x-enum-varnames": ["ALPHABETICAL", "MEASURE"], + }, + }, + "type": "object", + }, + "total": { + "default": False, + "description": "A " + "resulting " + "object " + "to " + "put " + "the " + "given " + "computes " + "in " + "over " + "all " + "the " + "matching " + "records.", + "oneOf": [ + { + "description": "If " + "set " + "to " + "true, " + "creates " + "an " + "additional " + "bucket " + "labeled " + '"$facet_total".', + "type": "boolean", + }, + { + "description": "A " + "string " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "type": "string", + }, + { + "description": "A " + "number " + "to " + "use " + "as " + "the " + "key " + "value " + "for " + "the " + "total " + "bucket.", + "format": "double", + "type": "number", + }, + ], + }, + }, + "required": ["facet"], + "type": "object", + }, + "type": "array", + }, + "options": { + "description": "Global " + "query " + "options " + "that " + "are " + "used " + "during " + "the " + "query.\n" + "Note: " + "You " + "should " + "only " + "supply " + "timezone " + "or " + "time " + "offset " + "but " + "not " + "both " + "otherwise " + "the " + "query " + "will " + "fail.", + "properties": { + "timeOffset": { + "description": "The " + "time " + "offset " + "(in " + "seconds) " + "to " + "apply " + "to " + "the " + "query.", + "format": "int64", + "type": "integer", + }, + "timezone": { + "default": "UTC", + "description": "The " + "timezone " + "can " + "be " + "specified " + "as " + "GMT, " + "UTC, " + "an " + "offset " + "from " + "UTC " + "(like " + "UTC+1), " + "or " + "as " + "a " + "Timezone " + "Database " + "identifier " + "(like " + "America/New_York).", + "example": "GMT", + "type": "string", + }, + }, + "type": "object", + }, + }, + "type": "object", + }, + "type": { + "default": "aggregate_request", + "description": "The type of resource. " + "The value should " + "always be " + "aggregate_request.", + "enum": ["aggregate_request"], + "example": "aggregate_request", + "type": "string", + "x-enum-varnames": ["AGGREGATE_REQUEST"], + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "CREATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA": { + "description": "The definition of `CreateRulesetRequest` object.", + "example": { + "data": { + "attributes": { + "enabled": True, + "rules": [ + { + "enabled": True, + "mapping": None, + "metadata": None, + "name": "Add Cost Center Tag", + "query": { + "addition": {"key": "cost_center", "value": "engineering"}, + "case_insensitivity": False, + "if_not_exists": True, + "query": 'account_id:"123456789" AND service:"web-api"', + }, + "reference_table": None, + } + ], + }, + "id": "New Ruleset", + "type": "create_ruleset", + } + }, + "properties": { + "data": { + "description": "The definition of `CreateRulesetRequestData` object.", + "properties": { + "attributes": { + "description": "The definition " + "of " + "`CreateRulesetRequestDataAttributes` " + "object.", + "properties": { + "enabled": { + "description": "The `attributes` `enabled`.", + "type": "boolean", + }, + "rules": { + "description": "The `attributes` `rules`.", + "items": { + "description": "The " + "definition " + "of " + "`CreateRulesetRequestDataAttributesRulesItems` " + "object.", + "properties": { + "enabled": { + "description": "The `items` `enabled`.", + "example": False, + "type": "boolean", + }, + "mapping": { + "description": "The " + "definition " + "of " + "`CreateRulesetRequestDataAttributesRulesItemsMapping` " + "object.", + "nullable": True, + "properties": { + "destination_key": { + "description": "The " + "`mapping` " + "`destination_key`.", + "example": "", + "type": "string", + }, + "if_not_exists": { + "description": "The `mapping` `if_not_exists`.", + "example": False, + "type": "boolean", + }, + "source_keys": { + "description": "The `mapping` `source_keys`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": [ + "destination_key", + "if_not_exists", + "source_keys", + ], + "type": "object", + }, + "metadata": { + "additionalProperties": {"type": "string"}, + "description": "The `items` `metadata`.", + "nullable": True, + "type": "object", + }, + "name": { + "description": "The `items` `name`.", + "example": "", + "type": "string", + }, + "query": { + "description": "The " + "definition " + "of " + "`CreateRulesetRequestDataAttributesRulesItemsQuery` " + "object.", + "nullable": True, + "properties": { + "addition": { + "description": "The " + "definition " + "of " + "`CreateRulesetRequestDataAttributesRulesItemsQueryAddition` " + "object.", + "nullable": True, + "properties": { + "key": { + "description": "The `addition` `key`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The " + "`addition` " + "`value`.", + "example": "", + "type": "string", + }, + }, + "required": ["key", "value"], + "type": "object", + }, + "case_insensitivity": { + "description": "The " + "`query` " + "`case_insensitivity`.", + "type": "boolean", + }, + "if_not_exists": { + "description": "The `query` `if_not_exists`.", + "example": False, + "type": "boolean", + }, + "query": { + "description": "The `query` `query`.", + "example": "", + "type": "string", + }, + }, + "required": ["addition", "if_not_exists", "query"], + "type": "object", + }, + "reference_table": { + "description": "The " + "definition " + "of " + "`CreateRulesetRequestDataAttributesRulesItemsReferenceTable` " + "object.", + "nullable": True, + "properties": { + "case_insensitivity": { + "description": "The " + "`reference_table` " + "`case_insensitivity`.", + "type": "boolean", + }, + "field_pairs": { + "description": "The " + "`reference_table` " + "`field_pairs`.", + "items": { + "description": "The " + "definition " + "of " + "`CreateRulesetRequestDataAttributesRulesItemsReferenceTableFieldPairsItems` " + "object.", + "properties": { + "input_column": { + "description": "The " + "`items` " + "`input_column`.", + "example": "", + "type": "string", + }, + "output_key": { + "description": "The " + "`items` " + "`output_key`.", + "example": "", + "type": "string", + }, + }, + "required": ["input_column", "output_key"], + "type": "object", + }, + "type": "array", + }, + "if_not_exists": { + "description": "The " + "`reference_table` " + "`if_not_exists`.", + "type": "boolean", + }, + "source_keys": { + "description": "The " + "`reference_table` " + "`source_keys`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + "table_name": { + "description": "The " + "`reference_table` " + "`table_name`.", + "example": "", + "type": "string", + }, + }, + "required": [ + "field_pairs", + "source_keys", + "table_name", + ], + "type": "object", + }, + }, + "required": ["enabled", "name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["rules"], + "type": "object", + }, + "id": {"description": "The `CreateRulesetRequestData` `id`.", "type": "string"}, + "type": { + "default": "create_ruleset", + "description": "Create ruleset resource type.", + "enum": ["create_ruleset"], + "example": "create_ruleset", + "type": "string", + "x-enum-varnames": ["CREATE_RULESET"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "REORDERTAGPIPELINERULESETS_REQUEST_BODY_SCHEMA": { + "description": "The definition of `ReorderRulesetResourceArray` object.", + "example": { + "data": [ + {"id": "55ef2385-9ae1-4410-90c4-5ac1b60fec10", "type": "ruleset"}, + {"id": "a7b8c9d0-1234-5678-9abc-def012345678", "type": "ruleset"}, + {"id": "f1e2d3c4-b5a6-9780-1234-567890abcdef", "type": "ruleset"}, + ] + }, + "properties": { + "data": { + "description": "The `ReorderRulesetResourceArray` `data`.", + "items": { + "description": "The definition of `ReorderRulesetResourceData` object.", + "properties": { + "id": { + "description": "The `ReorderRulesetResourceData` `id`.", + "type": "string", + }, + "type": { + "default": "ruleset", + "description": "Ruleset resource type.", + "enum": ["ruleset"], + "example": "ruleset", + "type": "string", + "x-enum-varnames": ["RULESET"], + }, + }, + "required": ["type"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATETAGPIPELINERULESET_REQUEST_BODY_SCHEMA": { + "description": "The definition of `UpdateRulesetRequest` object.", + "example": { + "data": { + "attributes": { + "enabled": True, + "last_version": 1, + "name": "Updated Ruleset", + "rules": [ + { + "enabled": True, + "mapping": None, + "metadata": None, + "name": "Add Cost Center Tag", + "query": { + "addition": {"key": "cost_center", "value": "engineering"}, + "case_insensitivity": False, + "if_not_exists": True, + "query": 'account_id:"123456789" AND service:"web-api"', + }, + "reference_table": None, + }, + { + "enabled": True, + "mapping": { + "destination_key": "team_owner", + "if_not_exists": True, + "source_keys": ["account_name", "account_id"], + }, + "metadata": None, + "name": "Account Name Mapping", + "query": None, + "reference_table": None, + }, + { + "enabled": True, + "mapping": None, + "metadata": None, + "name": "New table rule with new UI", + "query": None, + "reference_table": { + "case_insensitivity": True, + "field_pairs": [ + {"input_column": "status_type", "output_key": "status"}, + {"input_column": "status_description", "output_key": "dess"}, + ], + "if_not_exists": False, + "source_keys": ["http_status", "status_description"], + "table_name": "http_status_codes", + }, + }, + ], + }, + "type": "update_ruleset", + } + }, + "properties": { + "data": { + "description": "The definition of `UpdateRulesetRequestData` object.", + "properties": { + "attributes": { + "description": "The definition " + "of " + "`UpdateRulesetRequestDataAttributes` " + "object.", + "properties": { + "enabled": { + "description": "The `attributes` `enabled`.", + "example": False, + "type": "boolean", + }, + "last_version": { + "description": "The `attributes` `last_version`.", + "format": "int64", + "type": "integer", + }, + "rules": { + "description": "The `attributes` `rules`.", + "items": { + "description": "The " + "definition " + "of " + "`UpdateRulesetRequestDataAttributesRulesItems` " + "object.", + "properties": { + "enabled": { + "description": "The `items` `enabled`.", + "example": False, + "type": "boolean", + }, + "mapping": { + "description": "The " + "definition " + "of " + "`UpdateRulesetRequestDataAttributesRulesItemsMapping` " + "object.", + "nullable": True, + "properties": { + "destination_key": { + "description": "The " + "`mapping` " + "`destination_key`.", + "example": "", + "type": "string", + }, + "if_not_exists": { + "description": "The `mapping` `if_not_exists`.", + "example": False, + "type": "boolean", + }, + "source_keys": { + "description": "The `mapping` `source_keys`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": [ + "destination_key", + "if_not_exists", + "source_keys", + ], + "type": "object", + }, + "metadata": { + "additionalProperties": {"type": "string"}, + "description": "The `items` `metadata`.", + "nullable": True, + "type": "object", + }, + "name": { + "description": "The `items` `name`.", + "example": "", + "type": "string", + }, + "query": { + "description": "The " + "definition " + "of " + "`UpdateRulesetRequestDataAttributesRulesItemsQuery` " + "object.", + "nullable": True, + "properties": { + "addition": { + "description": "The " + "definition " + "of " + "`UpdateRulesetRequestDataAttributesRulesItemsQueryAddition` " + "object.", + "nullable": True, + "properties": { + "key": { + "description": "The `addition` `key`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The " + "`addition` " + "`value`.", + "example": "", + "type": "string", + }, + }, + "required": ["key", "value"], + "type": "object", + }, + "case_insensitivity": { + "description": "The " + "`query` " + "`case_insensitivity`.", + "type": "boolean", + }, + "if_not_exists": { + "description": "The `query` `if_not_exists`.", + "example": False, + "type": "boolean", + }, + "query": { + "description": "The `query` `query`.", + "example": "", + "type": "string", + }, + }, + "required": ["addition", "if_not_exists", "query"], + "type": "object", + }, + "reference_table": { + "description": "The " + "definition " + "of " + "`UpdateRulesetRequestDataAttributesRulesItemsReferenceTable` " + "object.", + "nullable": True, + "properties": { + "case_insensitivity": { + "description": "The " + "`reference_table` " + "`case_insensitivity`.", + "type": "boolean", + }, + "field_pairs": { + "description": "The " + "`reference_table` " + "`field_pairs`.", + "items": { + "description": "The " + "definition " + "of " + "`UpdateRulesetRequestDataAttributesRulesItemsReferenceTableFieldPairsItems` " + "object.", + "properties": { + "input_column": { + "description": "The " + "`items` " + "`input_column`.", + "example": "", + "type": "string", + }, + "output_key": { + "description": "The " + "`items` " + "`output_key`.", + "example": "", + "type": "string", + }, + }, + "required": ["input_column", "output_key"], + "type": "object", + }, + "type": "array", + }, + "if_not_exists": { + "description": "The " + "`reference_table` " + "`if_not_exists`.", + "type": "boolean", + }, + "source_keys": { + "description": "The " + "`reference_table` " + "`source_keys`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + "table_name": { + "description": "The " + "`reference_table` " + "`table_name`.", + "example": "", + "type": "string", + }, + }, + "required": [ + "field_pairs", + "source_keys", + "table_name", + ], + "type": "object", + }, + }, + "required": ["enabled", "name"], + "type": "object", + }, + "type": "array", + }, + }, + "required": ["enabled", "rules"], + "type": "object", + }, + "id": {"description": "The `UpdateRulesetRequestData` `id`.", "type": "string"}, + "type": { + "default": "update_ruleset", + "description": "Update ruleset resource type.", + "enum": ["update_ruleset"], + "example": "update_ruleset", + "type": "string", + "x-enum-varnames": ["UPDATE_RULESET"], + }, + }, + "required": ["type"], + "type": "object", + } + }, + "type": "object", + }, + "CREATENEWTEAM_REQUEST_BODY_SCHEMA": { + "description": "Request to create a team", + "properties": { + "data": { + "description": "Team create", + "properties": { + "attributes": { + "description": "Team creation attributes", + "properties": { + "avatar": { + "description": "Unicode " + "representation " + "of " + "the " + "avatar " + "for " + "the " + "team, " + "limited " + "to " + "a " + "single " + "grapheme", + "example": "🥑", + "nullable": True, + "type": "string", + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": True, + "type": "integer", + }, + "description": { + "description": "Free-form " + "markdown " + "description/content " + "for " + "the " + "team's " + "homepage", + "type": "string", + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string", + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string", + }, + "type": "array", + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string", + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["handle", "name"], + "type": "object", + }, + "relationships": { + "description": "Relationships formed with the team on creation", + "properties": { + "users": { + "description": "Relationship to users.", + "properties": { + "data": { + "description": "Relationships to user objects.", + "example": [], + "items": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["data"], + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "team", + "description": "Team type", + "enum": ["team"], + "example": "team", + "type": "string", + "x-enum-varnames": ["TEAM"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATETEAMINFO_REQUEST_BODY_SCHEMA": { + "description": "Team update request", + "properties": { + "data": { + "description": "Team update request", + "properties": { + "attributes": { + "description": "Team update attributes", + "properties": { + "avatar": { + "description": "Unicode " + "representation " + "of " + "the " + "avatar " + "for " + "the " + "team, " + "limited " + "to " + "a " + "single " + "grapheme", + "example": "🥑", + "nullable": True, + "type": "string", + }, + "banner": { + "description": "Banner selection for the team", + "format": "int64", + "nullable": True, + "type": "integer", + }, + "description": { + "description": "Free-form " + "markdown " + "description/content " + "for " + "the " + "team's " + "homepage", + "type": "string", + }, + "handle": { + "description": "The team's identifier", + "example": "example-team", + "maxLength": 195, + "type": "string", + }, + "hidden_modules": { + "description": "Collection of hidden modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string", + }, + "type": "array", + }, + "name": { + "description": "The name of the team", + "example": "Example Team", + "maxLength": 200, + "type": "string", + }, + "visible_modules": { + "description": "Collection of visible modules for the team", + "items": { + "description": "String identifier of the module", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["handle", "name"], + "type": "object", + }, + "relationships": { + "description": "Team update relationships", + "properties": { + "team_links": { + "description": "Relationship between a team and a team link", + "properties": { + "data": { + "description": "Related team links", + "items": { + "description": "Relationship between a link and a team", + "properties": { + "id": { + "description": "The team link's identifier", + "example": "f9bb8444-af7f-11ec-ac2c-da7ad0900001", + "type": "string", + }, + "type": { + "default": "team_links", + "description": "Team link type", + "enum": ["team_links"], + "example": "team_links", + "type": "string", + "x-enum-varnames": ["TEAM_LINKS"], + }, + }, + "required": ["id", "type"], + "type": "object", + }, + "type": "array", + }, + "links": { + "description": "Links attributes.", + "properties": { + "related": { + "description": "Related link.", + "example": "/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links", + "type": "string", + } + }, + "type": "object", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "team", + "description": "Team type", + "enum": ["team"], + "example": "team", + "type": "string", + "x-enum-varnames": ["TEAM"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "SENDINVITATIONS_REQUEST_BODY_SCHEMA": { + "description": "Object to invite users to join the organization.", + "properties": { + "data": { + "description": "List of user invitations.", + "example": [], + "items": { + "description": "Object to create a user invitation.", + "properties": { + "relationships": { + "description": "Relationships data for user invitation.", + "properties": { + "user": { + "description": "Relationship to user.", + "properties": { + "data": { + "description": "Relationship to user object.", + "properties": { + "id": { + "description": "A " + "unique " + "identifier " + "that " + "represents " + "the " + "user.", + "example": "00000000-0000-0000-2345-000000000000", + "type": "string", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["id", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + } + }, + "required": ["user"], + "type": "object", + }, + "type": { + "default": "user_invitations", + "description": "User invitations type.", + "enum": ["user_invitations"], + "example": "user_invitations", + "type": "string", + "x-enum-varnames": ["USER_INVITATIONS"], + }, + }, + "required": ["type", "relationships"], + "type": "object", + }, + "type": "array", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEORGANIZATIONUSER_REQUEST_BODY_SCHEMA": { + "description": "Create a user.", + "properties": { + "data": { + "description": "Object to create a user.", + "properties": { + "attributes": { + "description": "Attributes of the created user.", + "properties": { + "email": { + "description": "The email of the user.", + "example": "jane.doe@example.com", + "type": "string", + }, + "name": {"description": "The name of the user.", "type": "string"}, + "title": {"description": "The title of the user.", "type": "string"}, + }, + "required": ["email"], + "type": "object", + }, + "relationships": { + "description": "Relationships of the user object.", + "properties": { + "roles": { + "description": "Relationship to roles.", + "properties": { + "data": { + "description": "An " + "array " + "containing " + "type " + "and " + "the " + "unique " + "identifier " + "of " + "a " + "role.", + "items": { + "description": "Relationship to role object.", + "properties": { + "id": { + "description": "The " + "unique " + "identifier " + "of " + "the " + "role.", + "example": "3653d3c6-0c75-11ea-ad28-fb5701eabc7d", + "type": "string", + }, + "type": { + "default": "roles", + "description": "Roles type.", + "enum": ["roles"], + "example": "roles", + "type": "string", + "x-enum-varnames": ["ROLES"], + }, + }, + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + } + }, + "type": "object", + }, + "type": { + "default": "users", + "description": "Users resource type.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["attributes", "type"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "CREATEDATADOGWORKFLOW_REQUEST_BODY_SCHEMA": { + "description": "A request object for creating a new workflow.", + "example": { + "data": { + "attributes": { + "description": "A sample workflow.", + "name": "Example Workflow", + "published": True, + "spec": { + "annotations": [ + { + "display": { + "bounds": {"height": 150, "width": 300, "x": -375, "y": -0.5} + }, + "id": "99999999-9999-9999-9999-999999999999", + "markdownTextAnnotation": {"text": "Example annotation."}, + } + ], + "connectionEnvs": [ + { + "connections": [ + { + "connectionId": "11111111-1111-1111-1111-111111111111", + "label": "INTEGRATION_DATADOG", + } + ], + "env": "default", + } + ], + "handle": "my-handle", + "inputSchema": { + "parameters": [ + {"defaultValue": "default", "name": "input", "type": "STRING"} + ] + }, + "outputSchema": { + "parameters": [ + { + "name": "output", + "type": "ARRAY_OBJECT", + "value": "{{ Steps.Step1 }}", + } + ] + }, + "steps": [ + { + "actionId": "com.datadoghq.dd.monitor.listMonitors", + "connectionLabel": "INTEGRATION_DATADOG", + "name": "Step1", + "outboundEdges": [{"branchName": "main", "nextStepName": "Step2"}], + "parameters": [{"name": "tags", "value": "service:monitoring"}], + }, + {"actionId": "com.datadoghq.core.noop", "name": "Step2"}, + ], + "triggers": [ + { + "monitorTrigger": {"rateLimit": {"count": 1, "interval": "3600s"}}, + "startStepNames": ["Step1"], + }, + {"githubWebhookTrigger": {}, "startStepNames": ["Step1"]}, + ], + }, + "tags": ["team:infra", "service:monitoring", "foo:bar"], + }, + "type": "workflows", + } + }, + "properties": { + "data": { + "description": "Data related to the workflow.", + "properties": { + "attributes": { + "description": "The definition of `WorkflowDataAttributes` object.", + "properties": { + "createdAt": { + "description": "When the workflow was created.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "description": { + "description": "Description of the workflow.", + "type": "string", + }, + "name": { + "description": "Name of the workflow.", + "example": "", + "type": "string", + }, + "published": { + "description": "Set " + "the " + "workflow " + "to " + "published " + "or " + "unpublished. " + "Workflows " + "in " + "an " + "unpublished " + "state " + "will " + "only " + "be " + "executable " + "via " + "manual " + "runs. " + "Automatic " + "triggers " + "such " + "as " + "Schedule " + "will " + "not " + "execute " + "the " + "workflow " + "until " + "it " + "is " + "published.", + "type": "boolean", + }, + "spec": { + "description": "The spec defines what the workflow does.", + "properties": { + "annotations": { + "description": "A " + "list " + "of " + "annotations " + "used " + "in " + "the " + "workflow. " + "These " + "are " + "like " + "sticky " + "notes " + "for " + "your " + "workflow!", + "items": { + "description": "A " + "list " + "of " + "annotations " + "used " + "in " + "the " + "workflow. " + "These " + "are " + "like " + "sticky " + "notes " + "for " + "your " + "workflow!", + "properties": { + "display": { + "description": "The " + "definition " + "of " + "`AnnotationDisplay` " + "object.", + "properties": { + "bounds": { + "description": "The " + "definition " + "of " + "`AnnotationDisplayBounds` " + "object.", + "properties": { + "height": { + "description": "The " + "`bounds` " + "`height`.", + "format": "double", + "type": "number", + }, + "width": { + "description": "The " + "`bounds` " + "`width`.", + "format": "double", + "type": "number", + }, + "x": { + "description": "The " + "`bounds` " + "`x`.", + "format": "double", + "type": "number", + }, + "y": { + "description": "The " + "`bounds` " + "`y`.", + "format": "double", + "type": "number", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "id": { + "description": "The `Annotation` `id`.", + "example": "", + "type": "string", + }, + "markdownTextAnnotation": { + "description": "The " + "definition " + "of " + "`AnnotationMarkdownTextAnnotation` " + "object.", + "properties": { + "text": { + "description": "The " + "`markdownTextAnnotation` " + "`text`.", + "type": "string", + } + }, + "type": "object", + }, + }, + "required": ["id", "display", "markdownTextAnnotation"], + "type": "object", + }, + "type": "array", + }, + "connectionEnvs": { + "description": "A " + "list " + "of " + "connections " + "or " + "connection " + "groups " + "used " + "in " + "the " + "workflow.", + "items": { + "description": "A " + "list " + "of " + "connections " + "or " + "connection " + "groups " + "used " + "in " + "the " + "workflow.", + "properties": { + "connectionGroups": { + "description": "The " + "`ConnectionEnv` " + "`connectionGroups`.", + "items": { + "description": "The " + "definition " + "of " + "`ConnectionGroup` " + "object.", + "properties": { + "connectionGroupId": { + "description": "The " + "`ConnectionGroup` " + "`connectionGroupId`.", + "example": "", + "type": "string", + }, + "label": { + "description": "The " + "`ConnectionGroup` " + "`label`.", + "example": "", + "type": "string", + }, + "tags": { + "description": "The " + "`ConnectionGroup` " + "`tags`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": [ + "connectionGroupId", + "label", + "tags", + ], + "type": "object", + }, + "type": "array", + }, + "connections": { + "description": "The " + "`ConnectionEnv` " + "`connections`.", + "items": { + "description": "The " + "definition " + "of " + "`Connection` " + "object.", + "properties": { + "connectionId": { + "description": "The " + "`Connection` " + "`connectionId`.", + "example": "", + "type": "string", + }, + "label": { + "description": "The " + "`Connection` " + "`label`.", + "example": "", + "type": "string", + }, + }, + "required": ["connectionId", "label"], + "type": "object", + }, + "type": "array", + }, + "env": { + "description": "The " + "definition " + "of " + "`ConnectionEnvEnv` " + "object.", + "enum": ["default"], + "example": "default", + "type": "string", + "x-enum-varnames": ["DEFAULT"], + }, + }, + "required": ["env"], + "type": "object", + }, + "type": "array", + }, + "handle": { + "description": "Unique " + "identifier " + "used " + "to " + "trigger " + "workflows " + "automatically " + "in " + "Datadog.", + "type": "string", + }, + "inputSchema": { + "description": "A " + "list " + "of " + "input " + "parameters " + "for " + "the " + "workflow. " + "These " + "can " + "be " + "used " + "as " + "dynamic " + "runtime " + "values " + "in " + "your " + "workflow.", + "properties": { + "parameters": { + "description": "The `InputSchema` `parameters`.", + "items": { + "description": "The " + "definition " + "of " + "`InputSchemaParameters` " + "object.", + "properties": { + "defaultValue": { + "description": "The " + "`InputSchemaParameters` " + "`defaultValue`." + }, + "description": { + "description": "The " + "`InputSchemaParameters` " + "`description`.", + "type": "string", + }, + "label": { + "description": "The " + "`InputSchemaParameters` " + "`label`.", + "type": "string", + }, + "name": { + "description": "The " + "`InputSchemaParameters` " + "`name`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`InputSchemaParametersType` " + "object.", + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + "example": "STRING", + "type": "string", + "x-enum-varnames": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + }, + }, + "required": ["name", "type"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "outputSchema": { + "description": "A " + "list " + "of " + "output " + "parameters " + "for " + "the " + "workflow.", + "properties": { + "parameters": { + "description": "The `OutputSchema` `parameters`.", + "items": { + "description": "The " + "definition " + "of " + "`OutputSchemaParameters` " + "object.", + "properties": { + "defaultValue": { + "description": "The " + "`OutputSchemaParameters` " + "`defaultValue`." + }, + "description": { + "description": "The " + "`OutputSchemaParameters` " + "`description`.", + "type": "string", + }, + "label": { + "description": "The " + "`OutputSchemaParameters` " + "`label`.", + "type": "string", + }, + "name": { + "description": "The " + "`OutputSchemaParameters` " + "`name`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`OutputSchemaParametersType` " + "object.", + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + "example": "STRING", + "type": "string", + "x-enum-varnames": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + }, + "value": { + "description": "The " + "`OutputSchemaParameters` " + "`value`." + }, + }, + "required": ["name", "type"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "steps": { + "description": "A " + "`Step` " + "is " + "a " + "sub-component " + "of " + "a " + "workflow. " + "Each " + "`Step` " + "performs " + "an " + "action.", + "items": { + "description": "A " + "Step " + "is " + "a " + "sub-component " + "of " + "a " + "workflow. " + "Each " + "Step " + "performs " + "an " + "action.", + "properties": { + "actionId": { + "description": "The " + "unique " + "identifier " + "of " + "an " + "action.", + "example": "", + "type": "string", + }, + "completionGate": { + "description": "Used " + "to " + "create " + "conditions " + "before " + "running " + "subsequent " + "actions.", + "properties": { + "completionCondition": { + "description": "The " + "definition " + "of " + "`CompletionCondition` " + "object.", + "properties": { + "operand1": { + "description": "The " + "`CompletionCondition` " + "`operand1`." + }, + "operand2": { + "description": "The " + "`CompletionCondition` " + "`operand2`." + }, + "operator": { + "description": "The " + "definition " + "of " + "`CompletionConditionOperator` " + "object.", + "enum": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY", + ], + "example": "OPERATOR_EQUAL", + "type": "string", + "x-enum-varnames": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY", + ], + }, + }, + "required": ["operand1", "operator"], + "type": "object", + }, + "retryStrategy": { + "description": "The " + "definition " + "of " + "`RetryStrategy` " + "object.", + "properties": { + "kind": { + "description": "The " + "definition " + "of " + "`RetryStrategyKind` " + "object.", + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "example": "RETRY_STRATEGY_LINEAR", + "type": "string", + "x-enum-varnames": [ + "RETRY_STRATEGY_LINEAR" + ], + }, + "linear": { + "description": "The " + "definition " + "of " + "`RetryStrategyLinear` " + "object.", + "properties": { + "interval": { + "description": "The " + "`RetryStrategyLinear` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "example": "", + "type": "string", + }, + "maxRetries": { + "description": "The " + "`RetryStrategyLinear` " + "`maxRetries`.", + "example": 0.0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "interval", + "maxRetries", + ], + "type": "object", + }, + }, + "required": ["kind"], + "type": "object", + }, + }, + "required": [ + "completionCondition", + "retryStrategy", + ], + "type": "object", + }, + "connectionLabel": { + "description": "The " + "unique " + "identifier " + "of " + "a " + "connection " + "defined " + "in " + "the " + "spec.", + "type": "string", + }, + "display": { + "description": "The " + "definition " + "of " + "`StepDisplay` " + "object.", + "properties": { + "bounds": { + "description": "The " + "definition " + "of " + "`StepDisplayBounds` " + "object.", + "properties": { + "x": { + "description": "The " + "`bounds` " + "`x`.", + "format": "double", + "type": "number", + }, + "y": { + "description": "The " + "`bounds` " + "`y`.", + "format": "double", + "type": "number", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "errorHandlers": { + "description": "The `Step` `errorHandlers`.", + "items": { + "description": "Used " + "to " + "handle " + "errors " + "in " + "an " + "action.", + "properties": { + "fallbackStepName": { + "description": "The " + "`ErrorHandler` " + "`fallbackStepName`.", + "example": "", + "type": "string", + }, + "retryStrategy": { + "description": "The " + "definition " + "of " + "`RetryStrategy` " + "object.", + "properties": { + "kind": { + "description": "The " + "definition " + "of " + "`RetryStrategyKind` " + "object.", + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "example": "RETRY_STRATEGY_LINEAR", + "type": "string", + "x-enum-varnames": [ + "RETRY_STRATEGY_LINEAR" + ], + }, + "linear": { + "description": "The " + "definition " + "of " + "`RetryStrategyLinear` " + "object.", + "properties": { + "interval": { + "description": "The " + "`RetryStrategyLinear` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "example": "", + "type": "string", + }, + "maxRetries": { + "description": "The " + "`RetryStrategyLinear` " + "`maxRetries`.", + "example": 0.0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "interval", + "maxRetries", + ], + "type": "object", + }, + }, + "required": ["kind"], + "type": "object", + }, + }, + "required": [ + "retryStrategy", + "fallbackStepName", + ], + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "Name of the step.", + "example": "", + "type": "string", + }, + "outboundEdges": { + "description": "A " + "list " + "of " + "subsequent " + "actions " + "to " + "run.", + "items": { + "description": "The " + "definition " + "of " + "`OutboundEdge` " + "object.", + "properties": { + "branchName": { + "description": "The " + "`OutboundEdge` " + "`branchName`.", + "example": "", + "type": "string", + }, + "nextStepName": { + "description": "The " + "`OutboundEdge` " + "`nextStepName`.", + "example": "", + "type": "string", + }, + }, + "required": ["nextStepName", "branchName"], + "type": "object", + }, + "type": "array", + }, + "parameters": { + "description": "A " + "list " + "of " + "inputs " + "for " + "an " + "action.", + "items": { + "description": "The " + "definition " + "of " + "`Parameter` " + "object.", + "properties": { + "name": { + "description": "The " + "`Parameter` " + "`name`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The " + "`Parameter` " + "`value`." + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "readinessGate": { + "description": "Used " + "to " + "merge " + "multiple " + "branches " + "into " + "a " + "single " + "branch.", + "properties": { + "thresholdType": { + "description": "The " + "definition " + "of " + "`ReadinessGateThresholdType` " + "object.", + "enum": ["ANY", "ALL"], + "example": "ANY", + "type": "string", + "x-enum-varnames": ["ANY", "ALL"], + } + }, + "required": ["thresholdType"], + "type": "object", + }, + }, + "required": ["name", "actionId"], + "type": "object", + }, + "type": "array", + }, + "triggers": { + "description": "The " + "list " + "of " + "triggers " + "that " + "activate " + "this " + "workflow. " + "At " + "least " + "one " + "trigger " + "is " + "required, " + "and " + "each " + "trigger " + "type " + "may " + "appear " + "at " + "most " + "once.", + "items": { + "description": "One " + "of " + "the " + "triggers " + "that " + "can " + "start " + "the " + "execution " + "of " + "a " + "workflow.", + "oneOf": [ + { + "description": "Schema " + "for " + "an " + "API-based " + "trigger.", + "properties": { + "apiTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "an " + "API " + "request. " + "The " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["apiTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "an " + "App-based " + "trigger.", + "properties": { + "appTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "an " + "App.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["appTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Case-based " + "trigger.", + "properties": { + "caseTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Case. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["caseTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Change " + "Event-based " + "trigger.", + "properties": { + "changeEventTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Change " + "Event.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["changeEventTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Database " + "Monitoring-based " + "trigger.", + "properties": { + "databaseMonitoringTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Database " + "Monitoring.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["databaseMonitoringTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Datastore-based " + "trigger.", + "properties": { + "datastoreTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Datastore. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["datastoreTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Dashboard-based " + "trigger.", + "properties": { + "dashboardTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Dashboard.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["dashboardTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "GitHub " + "webhook-based " + "trigger.", + "properties": { + "githubWebhookTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "GitHub " + "webhook. " + "To " + "trigger " + "a " + "workflow " + "from " + "GitHub, " + "you " + "must " + "set " + "a " + "`webhookSecret`. " + "In " + "your " + "GitHub " + "Webhook " + "Settings, " + "set " + "the " + "Payload " + "URL " + "to " + '"base_url"/api/v2/workflows/"workflow_id"/webhook?orgId="org_id", ' + "select " + "application/json " + "for " + "the " + "content " + "type, " + "and " + "be " + "highly " + "recommend " + "enabling " + "SSL " + "verification " + "for " + "security. " + "The " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["githubWebhookTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "an " + "Incident-based " + "trigger.", + "properties": { + "incidentTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "an " + "Incident. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["incidentTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Monitor-based " + "trigger.", + "properties": { + "monitorTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Monitor. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["monitorTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Notebook-based " + "trigger.", + "properties": { + "notebookTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Notebook.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["notebookTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Schedule-based " + "trigger.", + "properties": { + "scheduleTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Schedule. " + "The " + "workflow " + "must " + "be " + "published.", + "properties": { + "rruleExpression": { + "description": "Recurrence " + "rule " + "expression " + "for " + "scheduling.", + "example": "", + "type": "string", + } + }, + "required": ["rruleExpression"], + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["scheduleTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Security-based " + "trigger.", + "properties": { + "securityTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Security " + "Signal " + "or " + "Finding. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["securityTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Self " + "Service-based " + "trigger.", + "properties": { + "selfServiceTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Self " + "Service.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["selfServiceTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Slack-based " + "trigger.", + "properties": { + "slackTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Slack. " + "The " + "workflow " + "must " + "be " + "published.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["slackTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Software " + "Catalog-based " + "trigger.", + "properties": { + "softwareCatalogTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Software " + "Catalog.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["softwareCatalogTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Workflow-based " + "trigger.", + "properties": { + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + "workflowTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "the " + "Datadog " + "UI. " + "Only " + "required " + "if " + "no " + "other " + "trigger " + "exists.", + "type": "object", + }, + }, + "required": ["workflowTrigger"], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags of the workflow.", + "items": {"type": "string"}, + "type": "array", + }, + "updatedAt": { + "description": "When the workflow was last updated.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "webhookSecret": { + "description": "If " + "a " + "Webhook " + "trigger " + "is " + "defined " + "on " + "this " + "workflow, " + "a " + "webhookSecret " + "is " + "required " + "and " + "should " + "be " + "provided " + "here.", + "type": "string", + "writeOnly": True, + }, + }, + "required": ["name", "spec"], + "type": "object", + }, + "id": { + "description": "The workflow identifier", + "readOnly": True, + "type": "string", + }, + "relationships": { + "description": "The definition of `WorkflowDataRelationships` object.", + "properties": { + "creator": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationship` " + "object.", + "properties": { + "data": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipData` " + "object.", + "properties": { + "id": { + "description": "The user identifier", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipType` " + "object.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["type", "id"], + "type": "object", + } + }, + "type": "object", + }, + "owner": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationship` " + "object.", + "properties": { + "data": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipData` " + "object.", + "properties": { + "id": { + "description": "The user identifier", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipType` " + "object.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["type", "id"], + "type": "object", + } + }, + "type": "object", + }, + }, + "readOnly": True, + "type": "object", + }, + "type": { + "description": "The definition of `WorkflowDataType` object.", + "enum": ["workflows"], + "example": "workflows", + "type": "string", + "x-enum-varnames": ["WORKFLOWS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "UPDATEWORKFLOWBYID_REQUEST_BODY_SCHEMA": { + "description": "A request object for updating an existing workflow.", + "example": { + "data": { + "attributes": { + "description": "A sample workflow.", + "name": "Example Workflow", + "published": True, + "spec": { + "annotations": [ + { + "display": { + "bounds": {"height": 150, "width": 300, "x": -375, "y": -0.5} + }, + "id": "99999999-9999-9999-9999-999999999999", + "markdownTextAnnotation": {"text": "Example annotation."}, + } + ], + "connectionEnvs": [ + { + "connections": [ + { + "connectionId": "11111111-1111-1111-1111-111111111111", + "label": "INTEGRATION_DATADOG", + } + ], + "env": "default", + } + ], + "handle": "my-handle", + "inputSchema": { + "parameters": [ + {"defaultValue": "default", "name": "input", "type": "STRING"} + ] + }, + "outputSchema": { + "parameters": [ + { + "name": "output", + "type": "ARRAY_OBJECT", + "value": "{{ Steps.Step1 }}", + } + ] + }, + "steps": [ + { + "actionId": "com.datadoghq.dd.monitor.listMonitors", + "connectionLabel": "INTEGRATION_DATADOG", + "name": "Step1", + "outboundEdges": [{"branchName": "main", "nextStepName": "Step2"}], + "parameters": [{"name": "tags", "value": "service:monitoring"}], + }, + {"actionId": "com.datadoghq.core.noop", "name": "Step2"}, + ], + "triggers": [ + { + "monitorTrigger": {"rateLimit": {"count": 1, "interval": "3600s"}}, + "startStepNames": ["Step1"], + }, + {"githubWebhookTrigger": {}, "startStepNames": ["Step1"]}, + ], + }, + "tags": ["team:infra", "service:monitoring", "foo:bar"], + }, + "id": "22222222-2222-2222-2222-222222222222", + "type": "workflows", + } + }, + "properties": { + "data": { + "description": "Data related to the workflow being updated.", + "properties": { + "attributes": { + "description": "The definition of `WorkflowDataUpdateAttributes` object.", + "properties": { + "createdAt": { + "description": "When the workflow was created.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "description": { + "description": "Description of the workflow.", + "type": "string", + }, + "name": {"description": "Name of the workflow.", "type": "string"}, + "published": { + "description": "Set " + "the " + "workflow " + "to " + "published " + "or " + "unpublished. " + "Workflows " + "in " + "an " + "unpublished " + "state " + "will " + "only " + "be " + "executable " + "via " + "manual " + "runs. " + "Automatic " + "triggers " + "such " + "as " + "Schedule " + "will " + "not " + "execute " + "the " + "workflow " + "until " + "it " + "is " + "published.", + "type": "boolean", + }, + "spec": { + "description": "The spec defines what the workflow does.", + "properties": { + "annotations": { + "description": "A " + "list " + "of " + "annotations " + "used " + "in " + "the " + "workflow. " + "These " + "are " + "like " + "sticky " + "notes " + "for " + "your " + "workflow!", + "items": { + "description": "A " + "list " + "of " + "annotations " + "used " + "in " + "the " + "workflow. " + "These " + "are " + "like " + "sticky " + "notes " + "for " + "your " + "workflow!", + "properties": { + "display": { + "description": "The " + "definition " + "of " + "`AnnotationDisplay` " + "object.", + "properties": { + "bounds": { + "description": "The " + "definition " + "of " + "`AnnotationDisplayBounds` " + "object.", + "properties": { + "height": { + "description": "The " + "`bounds` " + "`height`.", + "format": "double", + "type": "number", + }, + "width": { + "description": "The " + "`bounds` " + "`width`.", + "format": "double", + "type": "number", + }, + "x": { + "description": "The " + "`bounds` " + "`x`.", + "format": "double", + "type": "number", + }, + "y": { + "description": "The " + "`bounds` " + "`y`.", + "format": "double", + "type": "number", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "id": { + "description": "The `Annotation` `id`.", + "example": "", + "type": "string", + }, + "markdownTextAnnotation": { + "description": "The " + "definition " + "of " + "`AnnotationMarkdownTextAnnotation` " + "object.", + "properties": { + "text": { + "description": "The " + "`markdownTextAnnotation` " + "`text`.", + "type": "string", + } + }, + "type": "object", + }, + }, + "required": ["id", "display", "markdownTextAnnotation"], + "type": "object", + }, + "type": "array", + }, + "connectionEnvs": { + "description": "A " + "list " + "of " + "connections " + "or " + "connection " + "groups " + "used " + "in " + "the " + "workflow.", + "items": { + "description": "A " + "list " + "of " + "connections " + "or " + "connection " + "groups " + "used " + "in " + "the " + "workflow.", + "properties": { + "connectionGroups": { + "description": "The " + "`ConnectionEnv` " + "`connectionGroups`.", + "items": { + "description": "The " + "definition " + "of " + "`ConnectionGroup` " + "object.", + "properties": { + "connectionGroupId": { + "description": "The " + "`ConnectionGroup` " + "`connectionGroupId`.", + "example": "", + "type": "string", + }, + "label": { + "description": "The " + "`ConnectionGroup` " + "`label`.", + "example": "", + "type": "string", + }, + "tags": { + "description": "The " + "`ConnectionGroup` " + "`tags`.", + "example": [""], + "items": {"type": "string"}, + "type": "array", + }, + }, + "required": [ + "connectionGroupId", + "label", + "tags", + ], + "type": "object", + }, + "type": "array", + }, + "connections": { + "description": "The " + "`ConnectionEnv` " + "`connections`.", + "items": { + "description": "The " + "definition " + "of " + "`Connection` " + "object.", + "properties": { + "connectionId": { + "description": "The " + "`Connection` " + "`connectionId`.", + "example": "", + "type": "string", + }, + "label": { + "description": "The " + "`Connection` " + "`label`.", + "example": "", + "type": "string", + }, + }, + "required": ["connectionId", "label"], + "type": "object", + }, + "type": "array", + }, + "env": { + "description": "The " + "definition " + "of " + "`ConnectionEnvEnv` " + "object.", + "enum": ["default"], + "example": "default", + "type": "string", + "x-enum-varnames": ["DEFAULT"], + }, + }, + "required": ["env"], + "type": "object", + }, + "type": "array", + }, + "handle": { + "description": "Unique " + "identifier " + "used " + "to " + "trigger " + "workflows " + "automatically " + "in " + "Datadog.", + "type": "string", + }, + "inputSchema": { + "description": "A " + "list " + "of " + "input " + "parameters " + "for " + "the " + "workflow. " + "These " + "can " + "be " + "used " + "as " + "dynamic " + "runtime " + "values " + "in " + "your " + "workflow.", + "properties": { + "parameters": { + "description": "The `InputSchema` `parameters`.", + "items": { + "description": "The " + "definition " + "of " + "`InputSchemaParameters` " + "object.", + "properties": { + "defaultValue": { + "description": "The " + "`InputSchemaParameters` " + "`defaultValue`." + }, + "description": { + "description": "The " + "`InputSchemaParameters` " + "`description`.", + "type": "string", + }, + "label": { + "description": "The " + "`InputSchemaParameters` " + "`label`.", + "type": "string", + }, + "name": { + "description": "The " + "`InputSchemaParameters` " + "`name`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`InputSchemaParametersType` " + "object.", + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + "example": "STRING", + "type": "string", + "x-enum-varnames": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + }, + }, + "required": ["name", "type"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "outputSchema": { + "description": "A " + "list " + "of " + "output " + "parameters " + "for " + "the " + "workflow.", + "properties": { + "parameters": { + "description": "The `OutputSchema` `parameters`.", + "items": { + "description": "The " + "definition " + "of " + "`OutputSchemaParameters` " + "object.", + "properties": { + "defaultValue": { + "description": "The " + "`OutputSchemaParameters` " + "`defaultValue`." + }, + "description": { + "description": "The " + "`OutputSchemaParameters` " + "`description`.", + "type": "string", + }, + "label": { + "description": "The " + "`OutputSchemaParameters` " + "`label`.", + "type": "string", + }, + "name": { + "description": "The " + "`OutputSchemaParameters` " + "`name`.", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`OutputSchemaParametersType` " + "object.", + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + "example": "STRING", + "type": "string", + "x-enum-varnames": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT", + ], + }, + "value": { + "description": "The " + "`OutputSchemaParameters` " + "`value`." + }, + }, + "required": ["name", "type"], + "type": "object", + }, + "type": "array", + } + }, + "type": "object", + }, + "steps": { + "description": "A " + "`Step` " + "is " + "a " + "sub-component " + "of " + "a " + "workflow. " + "Each " + "`Step` " + "performs " + "an " + "action.", + "items": { + "description": "A " + "Step " + "is " + "a " + "sub-component " + "of " + "a " + "workflow. " + "Each " + "Step " + "performs " + "an " + "action.", + "properties": { + "actionId": { + "description": "The " + "unique " + "identifier " + "of " + "an " + "action.", + "example": "", + "type": "string", + }, + "completionGate": { + "description": "Used " + "to " + "create " + "conditions " + "before " + "running " + "subsequent " + "actions.", + "properties": { + "completionCondition": { + "description": "The " + "definition " + "of " + "`CompletionCondition` " + "object.", + "properties": { + "operand1": { + "description": "The " + "`CompletionCondition` " + "`operand1`." + }, + "operand2": { + "description": "The " + "`CompletionCondition` " + "`operand2`." + }, + "operator": { + "description": "The " + "definition " + "of " + "`CompletionConditionOperator` " + "object.", + "enum": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY", + ], + "example": "OPERATOR_EQUAL", + "type": "string", + "x-enum-varnames": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY", + ], + }, + }, + "required": ["operand1", "operator"], + "type": "object", + }, + "retryStrategy": { + "description": "The " + "definition " + "of " + "`RetryStrategy` " + "object.", + "properties": { + "kind": { + "description": "The " + "definition " + "of " + "`RetryStrategyKind` " + "object.", + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "example": "RETRY_STRATEGY_LINEAR", + "type": "string", + "x-enum-varnames": [ + "RETRY_STRATEGY_LINEAR" + ], + }, + "linear": { + "description": "The " + "definition " + "of " + "`RetryStrategyLinear` " + "object.", + "properties": { + "interval": { + "description": "The " + "`RetryStrategyLinear` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "example": "", + "type": "string", + }, + "maxRetries": { + "description": "The " + "`RetryStrategyLinear` " + "`maxRetries`.", + "example": 0.0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "interval", + "maxRetries", + ], + "type": "object", + }, + }, + "required": ["kind"], + "type": "object", + }, + }, + "required": [ + "completionCondition", + "retryStrategy", + ], + "type": "object", + }, + "connectionLabel": { + "description": "The " + "unique " + "identifier " + "of " + "a " + "connection " + "defined " + "in " + "the " + "spec.", + "type": "string", + }, + "display": { + "description": "The " + "definition " + "of " + "`StepDisplay` " + "object.", + "properties": { + "bounds": { + "description": "The " + "definition " + "of " + "`StepDisplayBounds` " + "object.", + "properties": { + "x": { + "description": "The " + "`bounds` " + "`x`.", + "format": "double", + "type": "number", + }, + "y": { + "description": "The " + "`bounds` " + "`y`.", + "format": "double", + "type": "number", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "errorHandlers": { + "description": "The `Step` `errorHandlers`.", + "items": { + "description": "Used " + "to " + "handle " + "errors " + "in " + "an " + "action.", + "properties": { + "fallbackStepName": { + "description": "The " + "`ErrorHandler` " + "`fallbackStepName`.", + "example": "", + "type": "string", + }, + "retryStrategy": { + "description": "The " + "definition " + "of " + "`RetryStrategy` " + "object.", + "properties": { + "kind": { + "description": "The " + "definition " + "of " + "`RetryStrategyKind` " + "object.", + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "example": "RETRY_STRATEGY_LINEAR", + "type": "string", + "x-enum-varnames": [ + "RETRY_STRATEGY_LINEAR" + ], + }, + "linear": { + "description": "The " + "definition " + "of " + "`RetryStrategyLinear` " + "object.", + "properties": { + "interval": { + "description": "The " + "`RetryStrategyLinear` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "example": "", + "type": "string", + }, + "maxRetries": { + "description": "The " + "`RetryStrategyLinear` " + "`maxRetries`.", + "example": 0.0, + "format": "double", + "type": "number", + }, + }, + "required": [ + "interval", + "maxRetries", + ], + "type": "object", + }, + }, + "required": ["kind"], + "type": "object", + }, + }, + "required": [ + "retryStrategy", + "fallbackStepName", + ], + "type": "object", + }, + "type": "array", + }, + "name": { + "description": "Name of the step.", + "example": "", + "type": "string", + }, + "outboundEdges": { + "description": "A " + "list " + "of " + "subsequent " + "actions " + "to " + "run.", + "items": { + "description": "The " + "definition " + "of " + "`OutboundEdge` " + "object.", + "properties": { + "branchName": { + "description": "The " + "`OutboundEdge` " + "`branchName`.", + "example": "", + "type": "string", + }, + "nextStepName": { + "description": "The " + "`OutboundEdge` " + "`nextStepName`.", + "example": "", + "type": "string", + }, + }, + "required": ["nextStepName", "branchName"], + "type": "object", + }, + "type": "array", + }, + "parameters": { + "description": "A " + "list " + "of " + "inputs " + "for " + "an " + "action.", + "items": { + "description": "The " + "definition " + "of " + "`Parameter` " + "object.", + "properties": { + "name": { + "description": "The " + "`Parameter` " + "`name`.", + "example": "", + "type": "string", + }, + "value": { + "description": "The " + "`Parameter` " + "`value`." + }, + }, + "required": ["name", "value"], + "type": "object", + }, + "type": "array", + }, + "readinessGate": { + "description": "Used " + "to " + "merge " + "multiple " + "branches " + "into " + "a " + "single " + "branch.", + "properties": { + "thresholdType": { + "description": "The " + "definition " + "of " + "`ReadinessGateThresholdType` " + "object.", + "enum": ["ANY", "ALL"], + "example": "ANY", + "type": "string", + "x-enum-varnames": ["ANY", "ALL"], + } + }, + "required": ["thresholdType"], + "type": "object", + }, + }, + "required": ["name", "actionId"], + "type": "object", + }, + "type": "array", + }, + "triggers": { + "description": "The " + "list " + "of " + "triggers " + "that " + "activate " + "this " + "workflow. " + "At " + "least " + "one " + "trigger " + "is " + "required, " + "and " + "each " + "trigger " + "type " + "may " + "appear " + "at " + "most " + "once.", + "items": { + "description": "One " + "of " + "the " + "triggers " + "that " + "can " + "start " + "the " + "execution " + "of " + "a " + "workflow.", + "oneOf": [ + { + "description": "Schema " + "for " + "an " + "API-based " + "trigger.", + "properties": { + "apiTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "an " + "API " + "request. " + "The " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["apiTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "an " + "App-based " + "trigger.", + "properties": { + "appTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "an " + "App.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["appTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Case-based " + "trigger.", + "properties": { + "caseTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Case. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["caseTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Change " + "Event-based " + "trigger.", + "properties": { + "changeEventTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Change " + "Event.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["changeEventTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Database " + "Monitoring-based " + "trigger.", + "properties": { + "databaseMonitoringTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Database " + "Monitoring.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["databaseMonitoringTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Datastore-based " + "trigger.", + "properties": { + "datastoreTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Datastore. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["datastoreTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Dashboard-based " + "trigger.", + "properties": { + "dashboardTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Dashboard.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["dashboardTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "GitHub " + "webhook-based " + "trigger.", + "properties": { + "githubWebhookTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "GitHub " + "webhook. " + "To " + "trigger " + "a " + "workflow " + "from " + "GitHub, " + "you " + "must " + "set " + "a " + "`webhookSecret`. " + "In " + "your " + "GitHub " + "Webhook " + "Settings, " + "set " + "the " + "Payload " + "URL " + "to " + '"base_url"/api/v2/workflows/"workflow_id"/webhook?orgId="org_id", ' + "select " + "application/json " + "for " + "the " + "content " + "type, " + "and " + "be " + "highly " + "recommend " + "enabling " + "SSL " + "verification " + "for " + "security. " + "The " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["githubWebhookTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "an " + "Incident-based " + "trigger.", + "properties": { + "incidentTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "an " + "Incident. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["incidentTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Monitor-based " + "trigger.", + "properties": { + "monitorTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Monitor. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["monitorTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Notebook-based " + "trigger.", + "properties": { + "notebookTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Notebook.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["notebookTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Schedule-based " + "trigger.", + "properties": { + "scheduleTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Schedule. " + "The " + "workflow " + "must " + "be " + "published.", + "properties": { + "rruleExpression": { + "description": "Recurrence " + "rule " + "expression " + "for " + "scheduling.", + "example": "", + "type": "string", + } + }, + "required": ["rruleExpression"], + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["scheduleTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Security-based " + "trigger.", + "properties": { + "securityTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "a " + "Security " + "Signal " + "or " + "Finding. " + "For " + "automatic " + "triggering " + "a " + "handle " + "must " + "be " + "configured " + "and " + "the " + "workflow " + "must " + "be " + "published.", + "properties": { + "rateLimit": { + "description": "Defines " + "a " + "rate " + "limit " + "for " + "a " + "trigger.", + "properties": { + "count": { + "description": "The " + "`TriggerRateLimit` " + "`count`.", + "format": "int64", + "type": "integer", + }, + "interval": { + "description": "The " + "`TriggerRateLimit` " + "`interval`. " + "The " + "expected " + "format " + "is " + "the " + "number " + "of " + "seconds " + "ending " + "with " + "an " + "s. " + "For " + "example, " + "1 " + "day " + "is " + "86400s", + "type": "string", + }, + }, + "type": "object", + } + }, + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["securityTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Self " + "Service-based " + "trigger.", + "properties": { + "selfServiceTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Self " + "Service.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["selfServiceTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Slack-based " + "trigger.", + "properties": { + "slackTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Slack. " + "The " + "workflow " + "must " + "be " + "published.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["slackTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Software " + "Catalog-based " + "trigger.", + "properties": { + "softwareCatalogTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "Software " + "Catalog.", + "type": "object", + }, + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + }, + "required": ["softwareCatalogTrigger"], + "type": "object", + }, + { + "description": "Schema " + "for " + "a " + "Workflow-based " + "trigger.", + "properties": { + "startStepNames": { + "description": "A " + "list " + "of " + "steps " + "that " + "run " + "first " + "after " + "a " + "trigger " + "fires.", + "example": [""], + "items": { + "description": "The " + "`StartStepNames` " + "`items`.", + "type": "string", + }, + "type": "array", + }, + "workflowTrigger": { + "description": "Trigger " + "a " + "workflow " + "from " + "the " + "Datadog " + "UI. " + "Only " + "required " + "if " + "no " + "other " + "trigger " + "exists.", + "type": "object", + }, + }, + "required": ["workflowTrigger"], + "type": "object", + }, + ], + }, + "type": "array", + }, + }, + "type": "object", + }, + "tags": { + "description": "Tags of the workflow.", + "items": {"type": "string"}, + "type": "array", + }, + "updatedAt": { + "description": "When the workflow was last updated.", + "format": "date-time", + "readOnly": True, + "type": "string", + }, + "webhookSecret": { + "description": "If " + "a " + "Webhook " + "trigger " + "is " + "defined " + "on " + "this " + "workflow, " + "a " + "webhookSecret " + "is " + "required " + "and " + "should " + "be " + "provided " + "here.", + "type": "string", + "writeOnly": True, + }, + }, + "type": "object", + }, + "id": {"description": "The workflow identifier", "type": "string"}, + "relationships": { + "description": "The definition of `WorkflowDataRelationships` object.", + "properties": { + "creator": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationship` " + "object.", + "properties": { + "data": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipData` " + "object.", + "properties": { + "id": { + "description": "The user identifier", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipType` " + "object.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["type", "id"], + "type": "object", + } + }, + "type": "object", + }, + "owner": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationship` " + "object.", + "properties": { + "data": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipData` " + "object.", + "properties": { + "id": { + "description": "The user identifier", + "example": "", + "type": "string", + }, + "type": { + "description": "The " + "definition " + "of " + "`WorkflowUserRelationshipType` " + "object.", + "enum": ["users"], + "example": "users", + "type": "string", + "x-enum-varnames": ["USERS"], + }, + }, + "required": ["type", "id"], + "type": "object", + } + }, + "type": "object", + }, + }, + "readOnly": True, + "type": "object", + }, + "type": { + "description": "The definition of `WorkflowDataType` object.", + "enum": ["workflows"], + "example": "workflows", + "type": "string", + "x-enum-varnames": ["WORKFLOWS"], + }, + }, + "required": ["type", "attributes"], + "type": "object", + } + }, + "required": ["data"], + "type": "object", + }, + "EXECUTEWORKFLOW_REQUEST_BODY_SCHEMA": { + "description": "Request used to create a workflow instance.", + "properties": { + "meta": { + "description": "Additional information for creating a workflow instance.", + "properties": { + "payload": { + "additionalProperties": {}, + "description": "The input parameters to the workflow.", + "type": "object", + } + }, + "type": "object", + } + }, + "type": "object", + }, +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AcknowledgeOnCallPage.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AcknowledgeOnCallPage.json new file mode 100644 index 00000000..d36dcf01 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AcknowledgeOnCallPage.json @@ -0,0 +1,126 @@ +{ + "name": "AcknowledgeOnCallPage", + "fully_qualified_name": "DatadogApi.AcknowledgeOnCallPage@0.1.0", + "description": "Acknowledge an On-Call Page alert in Datadog.\n\nUse this tool to acknowledge an On-Call Page alert for a specified page in Datadog. This can be used to indicate that an alert is being addressed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "on_call_page_id", + "required": true, + "description": "The unique identifier for the On-Call Page to acknowledge.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AcknowledgeOnCallPage'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/pages/{page_id}/acknowledge", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "page_id", + "tool_parameter_name": "on_call_page_id", + "description": "The page ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateAwsScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateAwsScanOptions.json new file mode 100644 index 00000000..b3019471 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateAwsScanOptions.json @@ -0,0 +1,295 @@ +{ + "name": "ActivateAwsScanOptions", + "fully_qualified_name": "DatadogApi.ActivateAwsScanOptions@0.1.0", + "description": "Activate Agentless scan options for an AWS account.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_id", + "required": true, + "description": "The ID of the AWS account for which to activate scan options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the AWS account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_type", + "required": true, + "description": "Specifies the resource type to activate. Must be 'aws_scan_options'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `aws_scan_options`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_lambda_function_scanning", + "required": true, + "description": "Enable scanning of Lambda functions. Set to true to enable, false to disable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning of Lambda functions is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.lambda" + }, + { + "name": "enable_sensitive_data_scanning", + "required": true, + "description": "Indicates if scanning for sensitive data is enabled for the AWS account.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for sensitive data is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.sensitive_data" + }, + { + "name": "enable_container_vulnerability_scanning", + "required": true, + "description": "Enable scanning for vulnerabilities in containers when set to true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_containers_os" + }, + { + "name": "enable_vulnerability_scan_host_os", + "required": true, + "description": "Indicates if scanning for vulnerabilities in host operating systems is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_host_os" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateAwsScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.lambda", + "tool_parameter_name": "enable_lambda_function_scanning", + "description": "Indicates if scanning of Lambda functions is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning of Lambda functions is enabled." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.sensitive_data", + "tool_parameter_name": "enable_sensitive_data_scanning", + "description": "Indicates if scanning for sensitive data is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for sensitive data is enabled." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_containers_os", + "tool_parameter_name": "enable_container_vulnerability_scanning", + "description": "Indicates if scanning for vulnerabilities in containers is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_host_os", + "tool_parameter_name": "enable_vulnerability_scan_host_os", + "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "aws_account_id", + "description": "The ID of the AWS account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the AWS account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource. The value should always be `aws_scan_options`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `aws_scan_options`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "aws_scan_options", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the scan options to create.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for the scan options of a single AWS account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for the AWS scan options to create.\",\n \"properties\": {\n \"lambda\": {\n \"description\": \"Indicates if scanning of Lambda functions is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"sensitive_data\": {\n \"description\": \"Indicates if scanning for sensitive data is enabled.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"vuln_containers_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in containers is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"vuln_host_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in hosts is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"lambda\",\n \"sensitive_data\",\n \"vuln_containers_os\",\n \"vuln_host_os\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the AWS account.\",\n \"example\": \"123456789012\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"aws_scan_options\",\n \"description\": \"The type of the resource. The value should always be `aws_scan_options`.\",\n \"enum\": [\n \"aws_scan_options\"\n ],\n \"example\": \"aws_scan_options\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS_SCAN_OPTIONS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new scan options.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateAzureScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateAzureScanOptions.json new file mode 100644 index 00000000..203f380a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateAzureScanOptions.json @@ -0,0 +1,229 @@ +{ + "name": "ActivateAzureScanOptions", + "fully_qualified_name": "DatadogApi.ActivateAzureScanOptions@0.1.0", + "description": "Activate Agentless scan options for Azure subscriptions.\n\nUse this tool to activate Agentless scan options for a specified Azure subscription. This is useful for enabling security scans without deploying agents.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "azure_subscription_id", + "required": false, + "description": "The Azure subscription ID for which to activate the scan options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_type", + "required": false, + "description": "Specifies the resource type. Always use 'azure_scan_options'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `azure_scan_options`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_container_vulnerability_scan", + "required": false, + "description": "Set to true to activate scanning for vulnerabilities in containers.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_containers_os" + }, + { + "name": "enable_vulnerability_scan_hosts", + "required": false, + "description": "Indicate if scanning for vulnerabilities in Azure hosts is enabled. Set to true to activate.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_host_os" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateAzureScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.vuln_containers_os", + "tool_parameter_name": "enable_container_vulnerability_scan", + "description": "Indicates if scanning for vulnerabilities in containers is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_host_os", + "tool_parameter_name": "enable_vulnerability_scan_hosts", + "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "azure_subscription_id", + "description": "The Azure subscription ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource. The value should always be `azure_scan_options`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `azure_scan_options`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "azure_scan_options", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Response object containing Azure scan options for a single subscription.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"vuln_containers_os\": true,\n \"vuln_host_os\": true\n },\n \"id\": \"12345678-90ab-cdef-1234-567890abcdef\",\n \"type\": \"azure_scan_options\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Single Azure scan options entry.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for Azure scan options configuration.\",\n \"properties\": {\n \"vuln_containers_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in containers is enabled.\",\n \"type\": \"boolean\"\n },\n \"vuln_host_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in hosts is enabled.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The Azure subscription ID.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"azure_scan_options\",\n \"description\": \"The type of the resource. The value should always be `azure_scan_options`.\",\n \"enum\": [\n \"azure_scan_options\"\n ],\n \"example\": \"azure_scan_options\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE_SCAN_OPTIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateGcpScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateGcpScanOptions.json new file mode 100644 index 00000000..fb09f049 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ActivateGcpScanOptions.json @@ -0,0 +1,229 @@ +{ + "name": "ActivateGcpScanOptions", + "fully_qualified_name": "DatadogApi.ActivateGcpScanOptions@0.1.0", + "description": "Activate Agentless scan options for a GCP project.\n\nUse this tool to enable Agentless scanning for a Google Cloud Platform project. This is useful for setting up security scans without deploying agents.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "gcp_project_id", + "required": false, + "description": "The Google Cloud Platform project ID for which to activate the scan options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "gcp_scan_resource_type", + "required": false, + "description": "The type of GCP scan options resource. This is typically 'gcp_scan_options'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "GCP scan options resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_container_vulnerability_scanning", + "required": false, + "description": "Set to true to enable scanning for vulnerabilities in containers.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_containers_os" + }, + { + "name": "enable_vulnerability_host_scanning", + "required": false, + "description": "Set to true to enable scanning for vulnerabilities in hosts in the GCP project.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_host_os" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateGcpScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.vuln_containers_os", + "tool_parameter_name": "enable_container_vulnerability_scanning", + "description": "Indicates if scanning for vulnerabilities in containers is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_host_os", + "tool_parameter_name": "enable_vulnerability_host_scanning", + "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "gcp_project_id", + "description": "The GCP project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "gcp_scan_resource_type", + "description": "GCP scan options resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "GCP scan options resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "gcp_scan_options", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Response object containing GCP scan options for a single project.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"vuln_containers_os\": true,\n \"vuln_host_os\": true\n },\n \"id\": \"company-project-id\",\n \"type\": \"gcp_scan_options\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Single GCP scan options entry.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for GCP scan options configuration.\",\n \"properties\": {\n \"vuln_containers_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in containers is enabled.\",\n \"type\": \"boolean\"\n },\n \"vuln_host_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in hosts is enabled.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The GCP project ID.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"gcp_scan_options\",\n \"description\": \"GCP scan options resource type.\",\n \"enum\": [\n \"gcp_scan_options\"\n ],\n \"example\": \"gcp_scan_options\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP_SCAN_OPTIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new scan options.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddCommentToCase.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddCommentToCase.json new file mode 100644 index 00000000..3e605540 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddCommentToCase.json @@ -0,0 +1,196 @@ +{ + "name": "AddCommentToCase", + "fully_qualified_name": "DatadogApi.AddCommentToCase@0.1.0", + "description": "Add a comment to a specific case in Datadog.\n\nUse this tool to post a comment to a particular case within the Datadog system by providing the case ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier (UUID or key) for the case to which the comment will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "comment_message", + "required": true, + "description": "The message content to be added as a comment on the case.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CaseCommentAttributes` `message`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.comment" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specify the type of resource, always set to 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CommentCase'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/comment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.comment", + "tool_parameter_name": "comment_message", + "description": "The `CaseCommentAttributes` `message`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CaseCommentAttributes` `message`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case comment request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case comment\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case comment attributes\",\n \"properties\": {\n \"comment\": {\n \"description\": \"The `CaseCommentAttributes` `message`.\",\n \"example\": \"This is my comment !\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"comment\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case comment payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddDashboardsToList.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddDashboardsToList.json new file mode 100644 index 00000000..31a3ecea --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddDashboardsToList.json @@ -0,0 +1,223 @@ +{ + "name": "AddDashboardsToList", + "fully_qualified_name": "DatadogApi.AddDashboardsToList@0.1.0", + "description": "Add dashboards to an existing list in Datadog.\n\nUse this tool to append dashboards to a specified existing dashboard list in Datadog. Ideal for organizing and managing dashboards effectively.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dashboard_list_identifier", + "required": true, + "description": "Specify the integer ID of the dashboard list where dashboards will be added.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to add items to." + }, + "inferrable": true, + "http_endpoint_parameter_name": "dashboard_list_id" + }, + { + "name": "dashboards_to_add", + "required": true, + "description": "A JSON array of dashboards. Each dashboard should include an 'id' and a 'type'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "dashboards": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the dashboard." + } + }, + "description": "List of dashboards to add the dashboard list." + } + }, + "inner_properties": null, + "description": "Dashboards to add to the dashboard list." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateDashboardListItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "dashboard_list_id", + "tool_parameter_name": "dashboard_list_identifier", + "description": "ID of the dashboard list to add items to.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to add items to." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "dashboards_to_add", + "description": "Dashboards to add to the dashboard list.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "dashboards": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the dashboard." + } + }, + "description": "List of dashboards to add the dashboard list." + } + }, + "inner_properties": null, + "description": "Dashboards to add to the dashboard list." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request containing a list of dashboards to add.\",\n \"properties\": {\n \"dashboards\": {\n \"description\": \"List of dashboards to add the dashboard list.\",\n \"items\": {\n \"description\": \"A dashboard within a list.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the dashboard.\",\n \"example\": \"q5j-nti-fv6\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the dashboard.\",\n \"enum\": [\n \"custom_timeboard\",\n \"custom_screenboard\",\n \"integration_screenboard\",\n \"integration_timeboard\",\n \"host_timeboard\"\n ],\n \"example\": \"host_timeboard\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_TIMEBOARD\",\n \"CUSTOM_SCREENBOARD\",\n \"INTEGRATION_SCREENBOARD\",\n \"INTEGRATION_TIMEBOARD\",\n \"HOST_TIMEBOARD\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Dashboards to add to the dashboard list.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddMemberTeamToSuperTeam.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddMemberTeamToSuperTeam.json new file mode 100644 index 00000000..7b20bdd7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddMemberTeamToSuperTeam.json @@ -0,0 +1,196 @@ +{ + "name": "AddMemberTeamToSuperTeam", + "fully_qualified_name": "DatadogApi.AddMemberTeamToSuperTeam@0.1.0", + "description": "Add a member team to a super team.\n\nUse this tool to add a specified team as a member of an existing super team by providing the super team's ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "super_team_identifier", + "required": true, + "description": "The ID of the super team to which the member team will be added. It is a string value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "super_team_id" + }, + { + "name": "member_team_identifier", + "required": true, + "description": "The unique identifier of the member team to be added to the super team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The member team's identifier" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "member_team_type", + "required": true, + "description": "Specifies the type of member team to be added. Must be 'member_teams'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "member_teams" + ], + "properties": null, + "inner_properties": null, + "description": "Member team type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AddMemberTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{super_team_id}/member_teams", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "super_team_id", + "tool_parameter_name": "super_team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "member_team_identifier", + "description": "The member team's identifier", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The member team's identifier" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "member_team_type", + "description": "Member team type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "member_teams" + ], + "properties": null, + "inner_properties": null, + "description": "Member team type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "member_teams", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to add a member team to super team's hierarchy\",\n \"properties\": {\n \"data\": {\n \"description\": \"A member team\",\n \"properties\": {\n \"id\": {\n \"description\": \"The member team's identifier\",\n \"example\": \"aeadc05e-98a8-11ec-ac2c-da7ad0900001\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"member_teams\",\n \"description\": \"Member team type\",\n \"enum\": [\n \"member_teams\"\n ],\n \"example\": \"member_teams\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MEMBER_TEAMS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddPermissionToRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddPermissionToRole.json new file mode 100644 index 00000000..5a61f0b0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddPermissionToRole.json @@ -0,0 +1,196 @@ +{ + "name": "AddPermissionToRole", + "fully_qualified_name": "DatadogApi.AddPermissionToRole@0.1.0", + "description": "Assigns a specific permission to a given role.\n\nUse this tool to add a permission to a specific role within Datadog. It should be called when you need to assign new permissions to a role to adjust user access and capabilities.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_identifier", + "required": true, + "description": "The unique identifier of the role to which the permission will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + }, + { + "name": "permission_id", + "required": false, + "description": "ID of the permission to be added to the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "permissions_resource_type", + "required": false, + "description": "The resource type for the permission, should be 'permissions'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AddPermissionToRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}/permissions", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "permission_id", + "description": "ID of the permission.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "permissions_resource_type", + "description": "Permissions resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "permissions", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to a permissions object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to permission object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the permission.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"permissions\",\n \"description\": \"Permissions resource type.\",\n \"enum\": [\n \"permissions\"\n ],\n \"example\": \"permissions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PERMISSIONS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddReadRoleToArchive.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddReadRoleToArchive.json new file mode 100644 index 00000000..7ef7d91c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddReadRoleToArchive.json @@ -0,0 +1,196 @@ +{ + "name": "AddReadRoleToArchive", + "fully_qualified_name": "DatadogApi.AddReadRoleToArchive@0.1.0", + "description": "Adds a read role to a specified archive.\n\nUse this tool to grant read access to a specific archive by adding a read role. Ideal for managing permissions and ensuring the right users or groups have access to log data archives.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_id", + "required": true, + "description": "The unique identifier for the archive to which a read role will be added. This is required to specify the target archive for access management.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "archive_id" + }, + { + "name": "role_unique_identifier", + "required": false, + "description": "The unique identifier for the role to be added to the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "role_type", + "required": false, + "description": "The type of role to be added. Must be 'roles'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AddReadRoleToArchive'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}/readers", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "archive_id", + "tool_parameter_name": "archive_id", + "description": "The ID of the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "role_unique_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "role_type", + "description": "Roles type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "roles", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddRoleToRestrictionQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddRoleToRestrictionQuery.json new file mode 100644 index 00000000..1c5a72df --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddRoleToRestrictionQuery.json @@ -0,0 +1,196 @@ +{ + "name": "AddRoleToRestrictionQuery", + "fully_qualified_name": "DatadogApi.AddRoleToRestrictionQuery@0.1.0", + "description": "Adds a role to a restriction query for logs configuration.\n\nThis tool is used to add a specific role to an existing restriction query in Datadog's logs configuration. Call this tool when you need to update restriction queries by including additional roles.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "restriction_query_id", + "required": true, + "description": "The ID of the restriction query to which a role will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "restriction_query_id" + }, + { + "name": "role_unique_identifier", + "required": false, + "description": "The unique identifier of the role to be added to the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "role_type", + "required": false, + "description": "The type of the role, expected to be 'roles'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AddRoleToRestrictionQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "restriction_query_id", + "tool_parameter_name": "restriction_query_id", + "description": "The ID of the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "role_unique_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "role_type", + "description": "Roles type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "roles", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddTeamLink.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddTeamLink.json new file mode 100644 index 00000000..be2bb289 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddTeamLink.json @@ -0,0 +1,295 @@ +{ + "name": "AddTeamLink", + "fully_qualified_name": "DatadogApi.AddTeamLink@0.1.0", + "description": "Add a new link to a Datadog team.\n\nUse this tool to add a new link to a specific team's page in Datadog. Suitable for enhancing team resources or documentation by linking additional references.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "target_team_id", + "required": true, + "description": "The unique identifier for the team to which the link will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "link_label", + "required": true, + "description": "The label for the link to be added to the team. This should be a descriptive text for the link.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's label" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.label" + }, + { + "name": "link_url", + "required": true, + "description": "The URL to be added as a link for the team. This should be a valid web address.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The URL for the link" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.url" + }, + { + "name": "team_link_type", + "required": true, + "description": "Specify the type of team link. Must be 'team_links'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_links" + ], + "properties": null, + "inner_properties": null, + "description": "Team link type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "link_position", + "required": false, + "description": "The position of the link in the team's list, used for sorting links.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's position, used to sort links for the team" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.position" + }, + { + "name": "team_id_for_link", + "required": false, + "description": "ID of the team the link is associated with. This should be a unique identifier for the specific team to which you want to add the link.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the team the link is associated with" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.team_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateTeamLink'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/links", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "target_team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.label", + "tool_parameter_name": "link_label", + "description": "The link's label", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's label" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.position", + "tool_parameter_name": "link_position", + "description": "The link's position, used to sort links for the team", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's position, used to sort links for the team" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.team_id", + "tool_parameter_name": "team_id_for_link", + "description": "ID of the team the link is associated with", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the team the link is associated with" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.url", + "tool_parameter_name": "link_url", + "description": "The URL for the link", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The URL for the link" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "team_link_type", + "description": "Team link type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_links" + ], + "properties": null, + "inner_properties": null, + "description": "Team link type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "team_links", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Team link create request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Team link create\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team link attributes\",\n \"properties\": {\n \"label\": {\n \"description\": \"The link's label\",\n \"example\": \"Link label\",\n \"maxLength\": 256,\n \"type\": \"string\"\n },\n \"position\": {\n \"description\": \"The link's position, used to sort links for the team\",\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n },\n \"team_id\": {\n \"description\": \"ID of the team the link is associated with\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"The URL for the link\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"team_links\",\n \"description\": \"Team link type\",\n \"enum\": [\n \"team_links\"\n ],\n \"example\": \"team_links\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_LINKS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddUserToRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddUserToRole.json new file mode 100644 index 00000000..8aaa0a34 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddUserToRole.json @@ -0,0 +1,196 @@ +{ + "name": "AddUserToRole", + "fully_qualified_name": "DatadogApi.AddUserToRole@0.1.0", + "description": "Adds a user to a specific role in Datadog.\n\nUse this tool to add a user to a specific role in Datadog's system. It is called when you need to assign user permissions via roles.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_unique_identifier", + "required": true, + "description": "The unique identifier for the role you want to assign the user to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + }, + { + "name": "user_unique_identifier", + "required": true, + "description": "A unique identifier representing the user to be added to the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "users_resource_type", + "required": true, + "description": "Specifies the type of resource as 'users'. Always use 'users'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AddUserToRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}/users", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_unique_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "user_unique_identifier", + "description": "A unique identifier that represents the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "users_resource_type", + "description": "Users resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "users", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to user.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-2345-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddUserToTeam.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddUserToTeam.json new file mode 100644 index 00000000..0300baf3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AddUserToTeam.json @@ -0,0 +1,406 @@ +{ + "name": "AddUserToTeam", + "fully_qualified_name": "DatadogApi.AddUserToTeam@0.1.0", + "description": "Add a user to a team in Datadog.\n\nUse this tool to add a specified user to an existing team within Datadog by providing the team ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The ID of the team to which the user will be added. This is required to specify the target team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "team_membership_type", + "required": true, + "description": "Specify the type of team membership. Use 'team_memberships'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_memberships" + ], + "properties": null, + "inner_properties": null, + "description": "Team membership type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "provisioning_mechanism", + "required": false, + "description": "Mechanism responsible for provisioning the team relationship. Possible values: null for user-added, \"service_account\" for service account, \"saml_mapping\" for SAML mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The mechanism responsible for provisioning the team relationship.\nPossible values: null for added by a user, \"service_account\" if added by a service account, and \"saml_mapping\" if provisioned via SAML mapping." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.provisioned_by" + }, + { + "name": "provisioned_user_or_service_account_id", + "required": false, + "description": "UUID of the User or Service Account who provisioned the team membership, or null if done via SAML mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.provisioned_by_id" + }, + { + "name": "user_role_in_team", + "required": false, + "description": "Specifies the user's role within the team. Currently, only 'admin' is supported as a role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "admin" + ], + "properties": null, + "inner_properties": null, + "description": "The user's role within the team" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.role" + }, + { + "name": "team_identifier", + "required": false, + "description": "The unique ID of the team to which the user will be added.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the team associated with the membership" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.team.data.id" + }, + { + "name": "user_team_type", + "required": false, + "description": "Specifies the type for the team relationship, fixed as 'team'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team" + ], + "properties": null, + "inner_properties": null, + "description": "User team team type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.team.data.type" + }, + { + "name": "user_id", + "required": false, + "description": "The ID of the user to be added to the team in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user associated with the team" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.user.data.id" + }, + { + "name": "user_team_user_type", + "required": false, + "description": "Set to 'users' as the type for the user in the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "User team user type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.user.data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateTeamMembership'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/memberships", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.provisioned_by", + "tool_parameter_name": "provisioning_mechanism", + "description": "The mechanism responsible for provisioning the team relationship.\nPossible values: null for added by a user, \"service_account\" if added by a service account, and \"saml_mapping\" if provisioned via SAML mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The mechanism responsible for provisioning the team relationship.\nPossible values: null for added by a user, \"service_account\" if added by a service account, and \"saml_mapping\" if provisioned via SAML mapping." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.provisioned_by_id", + "tool_parameter_name": "provisioned_user_or_service_account_id", + "description": "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.role", + "tool_parameter_name": "user_role_in_team", + "description": "The user's role within the team", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "admin" + ], + "properties": null, + "inner_properties": null, + "description": "The user's role within the team" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.team.data.id", + "tool_parameter_name": "team_identifier", + "description": "The ID of the team associated with the membership", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the team associated with the membership" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.team.data.type", + "tool_parameter_name": "user_team_type", + "description": "User team team type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team" + ], + "properties": null, + "inner_properties": null, + "description": "User team team type" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "team", + "documentation_urls": [] + }, + { + "name": "data.relationships.user.data.id", + "tool_parameter_name": "user_id", + "description": "The ID of the user associated with the team", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user associated with the team" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.user.data.type", + "tool_parameter_name": "user_team_user_type", + "description": "User team user type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "User team user type" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "users", + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "team_membership_type", + "description": "Team membership type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_memberships" + ], + "properties": null, + "inner_properties": null, + "description": "Team membership type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "team_memberships", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Team membership request\",\n \"properties\": {\n \"data\": {\n \"description\": \"A user's relationship with a team\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team membership attributes\",\n \"properties\": {\n \"provisioned_by\": {\n \"description\": \"The mechanism responsible for provisioning the team relationship.\\nPossible values: null for added by a user, \\\"service_account\\\" if added by a service account, and \\\"saml_mapping\\\" if provisioned via SAML mapping.\",\n \"nullable\": true,\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"provisioned_by_id\": {\n \"description\": \"UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping.\",\n \"nullable\": true,\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"The user's role within the team\",\n \"enum\": [\n \"admin\"\n ],\n \"nullable\": true,\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADMIN\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationship between membership and a user\",\n \"properties\": {\n \"team\": {\n \"description\": \"Relationship between team membership and team\",\n \"properties\": {\n \"data\": {\n \"description\": \"The team associated with the membership\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the team associated with the membership\",\n \"example\": \"d7e15d9d-d346-43da-81d8-3d9e71d9a5e9\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"team\",\n \"description\": \"User team team type\",\n \"enum\": [\n \"team\"\n ],\n \"example\": \"team\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n },\n \"user\": {\n \"description\": \"Relationship between team membership and user\",\n \"properties\": {\n \"data\": {\n \"description\": \"A user's relationship with a team\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the user associated with the team\",\n \"example\": \"b8626d7e-cedd-11eb-abf5-da7ad0900001\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"User team user type\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"team_memberships\",\n \"description\": \"Team membership type\",\n \"enum\": [\n \"team_memberships\"\n ],\n \"example\": \"team_memberships\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_MEMBERSHIPS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateLogs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateLogs.json new file mode 100644 index 00000000..874a9e85 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateLogs.json @@ -0,0 +1,700 @@ +{ + "name": "AggregateLogs", + "fully_qualified_name": "DatadogApi.AggregateLogs@0.1.0", + "description": "Aggregate logs to compute metrics and timeseries.\n\nThis tool aggregates log events into buckets to compute relevant metrics and timeseries. It's useful for analyzing large volumes of log data to extract meaningful insights.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "log_aggregation_request", + "required": true, + "description": "JSON object specifying compute metrics, filters, groupings, options, and paging settings for log aggregation.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function" + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points" + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute" + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested logs, supports date math and regular timestamps (milliseconds)." + }, + "indexes": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For customers with multiple indexes, the indexes to search. Defaults to ['*'] which means all indexes." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + }, + "storage_tier": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "indexes", + "online-archives", + "flex" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies storage type as indexes, online-archives or flex" + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested logs, supports date math and regular timestamps (milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings" + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)" + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets" + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)" + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)" + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nNote: at most 100 buckets are allowed, the number of buckets is (max - min)/interval." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group by. Note: at most 10000 buckets are allowed.\nIf grouping by multiple facets, the product of limits must not exceed 10000." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group by" + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function" + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)" + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm" + } + }, + "inner_properties": null, + "description": "A sort rule" + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group by" + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timeOffset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nNote: These fields are currently deprecated and do not affect the query results." + }, + "page": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cursor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The returned paging point to use to get the next results. Note: at most 1000 results can be paged." + } + }, + "inner_properties": null, + "description": "Paging settings" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AggregateLogs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/analytics/aggregate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "log_aggregation_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function" + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points" + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute" + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested logs, supports date math and regular timestamps (milliseconds)." + }, + "indexes": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For customers with multiple indexes, the indexes to search. Defaults to ['*'] which means all indexes." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + }, + "storage_tier": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "indexes", + "online-archives", + "flex" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies storage type as indexes, online-archives or flex" + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested logs, supports date math and regular timestamps (milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings" + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)" + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets" + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)" + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)" + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nNote: at most 100 buckets are allowed, the number of buckets is (max - min)/interval." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group by. Note: at most 10000 buckets are allowed.\nIf grouping by multiple facets, the product of limits must not exceed 10000." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group by" + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function" + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)" + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm" + } + }, + "inner_properties": null, + "description": "A sort rule" + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group by" + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timeOffset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nNote: These fields are currently deprecated and do not affect the query results." + }, + "page": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cursor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The returned paging point to use to get the next results. Note: at most 1000 results can be paged." + } + }, + "inner_properties": null, + "description": "Paging settings" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The object sent with the request to retrieve a list of logs from your organization.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The list of metrics or timeseries to compute for the retrieved buckets.\",\n \"items\": {\n \"description\": \"A compute rule to compute metrics or timeseries\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\"\n ]\n },\n \"interval\": {\n \"description\": \"The time buckets' size (only used for type=timeseries)\\nDefaults to a resolution of 150 points\",\n \"example\": \"5m\",\n \"type\": \"string\"\n },\n \"metric\": {\n \"description\": \"The metric to use\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"total\",\n \"description\": \"The type of compute\",\n \"enum\": [\n \"timeseries\",\n \"total\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESERIES\",\n \"TOTAL\"\n ]\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filter\": {\n \"description\": \"The search and filter query settings\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested logs, supports date math and regular timestamps (milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"default\": [\n \"*\"\n ],\n \"description\": \"For customers with multiple indexes, the indexes to search. Defaults to ['*'] which means all indexes.\",\n \"example\": [\n \"main\",\n \"web\"\n ],\n \"items\": {\n \"description\": \"The name of a log index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the log search syntax.\",\n \"example\": \"service:web* AND @http.status_code:[200 TO 299]\",\n \"type\": \"string\"\n },\n \"storage_tier\": {\n \"default\": \"indexes\",\n \"description\": \"Specifies storage type as indexes, online-archives or flex\",\n \"enum\": [\n \"indexes\",\n \"online-archives\",\n \"flex\"\n ],\n \"example\": \"indexes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INDEXES\",\n \"ONLINE_ARCHIVES\",\n \"FLEX\"\n ]\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested logs, supports date math and regular timestamps (milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by\",\n \"items\": {\n \"description\": \"A group by rule\",\n \"properties\": {\n \"facet\": {\n \"description\": \"The name of the facet to use (required)\",\n \"example\": \"host\",\n \"type\": \"string\"\n },\n \"histogram\": {\n \"description\": \"Used to perform a histogram computation (only for measure facets).\\nNote: at most 100 buckets are allowed, the number of buckets is (max - min)/interval.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The bin size of the histogram buckets\",\n \"example\": 10,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"max\": {\n \"description\": \"The maximum value for the measure used in the histogram\\n(values greater than this one are filtered out)\",\n \"example\": 100,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"min\": {\n \"description\": \"The minimum value for the measure used in the histogram\\n(values smaller than this one are filtered out)\",\n \"example\": 50,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"min\",\n \"max\"\n ],\n \"type\": \"object\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum buckets to return for this group by. Note: at most 10000 buckets are allowed.\\nIf grouping by multiple facets, the product of limits must not exceed 10000.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"missing\": {\n \"description\": \"The value to use for logs that don't have the facet used to group by\",\n \"oneOf\": [\n {\n \"description\": \"The missing value to use if there is string valued facet.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"The missing value to use if there is a number valued facet.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n },\n \"sort\": {\n \"description\": \"A sort rule\",\n \"example\": {\n \"aggregation\": \"count\",\n \"order\": \"asc\"\n },\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\"\n ]\n },\n \"metric\": {\n \"description\": \"The metric to sort by (only used for `type=measure`)\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"order\": {\n \"description\": \"The order to use, ascending or descending\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"example\": \"asc\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASCENDING\",\n \"DESCENDING\"\n ]\n },\n \"type\": {\n \"default\": \"alphabetical\",\n \"description\": \"The type of sorting algorithm\",\n \"enum\": [\n \"alphabetical\",\n \"measure\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALPHABETICAL\",\n \"MEASURE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"total\": {\n \"default\": false,\n \"description\": \"A resulting object to put the given computes in over all the matching records.\",\n \"oneOf\": [\n {\n \"description\": \"If set to true, creates an additional bucket labeled \\\"$facet_total\\\"\",\n \"type\": \"boolean\"\n },\n {\n \"description\": \"A string to use as the key value for the total bucket\",\n \"type\": \"string\"\n },\n {\n \"description\": \"A number to use as the key value for the total bucket\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"facet\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"deprecated\": true,\n \"description\": \"Global query options that are used during the query.\\nNote: These fields are currently deprecated and do not affect the query results.\",\n \"properties\": {\n \"timeOffset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging settings\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"The returned paging point to use to get the next results. Note: at most 1000 results can be paged.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregatePipelineEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregatePipelineEvents.json new file mode 100644 index 00000000..31f3aad4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregatePipelineEvents.json @@ -0,0 +1,642 @@ +{ + "name": "AggregatePipelineEvents", + "fully_qualified_name": "DatadogApi.AggregatePipelineEvents@0.1.0", + "description": "Aggregate CI pipeline event metrics and timeseries.\n\nThis tool aggregates CI Visibility pipeline events into buckets of computed metrics and timeseries. Use it when you need to analyze CI pipeline performances and trends.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "query_parameters", + "required": true, + "description": "JSON object specifying metrics to compute, filtering criteria, grouping rules, and query options for aggregating CI pipeline events.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nAt most, 100 buckets are allowed, the number of buckets is `(max - min)/interval`." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group-by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group-by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule. The `aggregation` field is required when `type` is `measure`." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group-by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "time_offset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nOnly supply timezone or time offset, not both. Otherwise, the query fails." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AggregateCIAppPipelineEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ci/pipelines/analytics/aggregate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "query_parameters", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nAt most, 100 buckets are allowed, the number of buckets is `(max - min)/interval`." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group-by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group-by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule. The `aggregation` field is required when `type` is `measure`." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group-by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "time_offset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nOnly supply timezone or time offset, not both. Otherwise, the query fails." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The object sent with the request to retrieve aggregation buckets of pipeline events from your organization.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The list of metrics or timeseries to compute for the retrieved buckets.\",\n \"items\": {\n \"description\": \"A compute rule to compute metrics or timeseries.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\",\n \"latest\",\n \"earliest\",\n \"most_frequent\",\n \"delta\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\",\n \"LATEST\",\n \"EARLIEST\",\n \"MOST_FREQUENT\",\n \"DELTA\"\n ]\n },\n \"interval\": {\n \"description\": \"The time buckets' size (only used for type=timeseries)\\nDefaults to a resolution of 150 points.\",\n \"example\": \"5m\",\n \"type\": \"string\"\n },\n \"metric\": {\n \"description\": \"The metric to use.\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"total\",\n \"description\": \"The type of compute.\",\n \"enum\": [\n \"timeseries\",\n \"total\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESERIES\",\n \"TOTAL\"\n ]\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query following the CI Visibility Explorer search syntax.\",\n \"example\": \"@ci.provider.name:github AND @ci.status:error\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group-by.\",\n \"items\": {\n \"description\": \"A group-by rule.\",\n \"properties\": {\n \"facet\": {\n \"description\": \"The name of the facet to use (required).\",\n \"example\": \"@ci.status\",\n \"type\": \"string\"\n },\n \"histogram\": {\n \"description\": \"Used to perform a histogram computation (only for measure facets).\\nAt most, 100 buckets are allowed, the number of buckets is `(max - min)/interval`.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The bin size of the histogram buckets.\",\n \"example\": 10,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"max\": {\n \"description\": \"The maximum value for the measure used in the histogram\\n(values greater than this one are filtered out).\",\n \"example\": 100,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"min\": {\n \"description\": \"The minimum value for the measure used in the histogram\\n(values smaller than this one are filtered out).\",\n \"example\": 50,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"min\",\n \"max\"\n ],\n \"type\": \"object\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum buckets to return for this group-by.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"missing\": {\n \"description\": \"The value to use for logs that don't have the facet used to group-by.\",\n \"oneOf\": [\n {\n \"description\": \"The missing value to use if there is a string valued facet.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"The missing value to use if there is a number valued facet.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n },\n \"sort\": {\n \"description\": \"A sort rule. The `aggregation` field is required when `type` is `measure`.\",\n \"example\": {\n \"aggregation\": \"count\",\n \"order\": \"asc\"\n },\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\",\n \"latest\",\n \"earliest\",\n \"most_frequent\",\n \"delta\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\",\n \"LATEST\",\n \"EARLIEST\",\n \"MOST_FREQUENT\",\n \"DELTA\"\n ]\n },\n \"metric\": {\n \"description\": \"The metric to sort by (only used for `type=measure`).\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"order\": {\n \"description\": \"The order to use, ascending or descending.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"example\": \"asc\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASCENDING\",\n \"DESCENDING\"\n ]\n },\n \"type\": {\n \"default\": \"alphabetical\",\n \"description\": \"The type of sorting algorithm.\",\n \"enum\": [\n \"alphabetical\",\n \"measure\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALPHABETICAL\",\n \"MEASURE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"total\": {\n \"default\": false,\n \"description\": \"A resulting object to put the given computes in over all the matching records.\",\n \"oneOf\": [\n {\n \"description\": \"If set to true, creates an additional bucket labeled \\\"$facet_total\\\".\",\n \"type\": \"boolean\"\n },\n {\n \"description\": \"A string to use as the key value for the total bucket.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"A number to use as the key value for the total bucket.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"facet\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nOnly supply timezone or time offset, not both. Otherwise, the query fails.\",\n \"properties\": {\n \"time_offset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateRumEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateRumEvents.json new file mode 100644 index 00000000..05130ff9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateRumEvents.json @@ -0,0 +1,676 @@ +{ + "name": "AggregateRumEvents", + "fully_qualified_name": "DatadogApi.AggregateRumEvents@0.1.0", + "description": "Aggregate RUM events into computed metrics and timeseries.\n\nThis tool aggregates Real User Monitoring (RUM) events into buckets of computed metrics and timeseries. It is used when there is a need to analyze and visualize RUM data effectively.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_event_aggregation_parameters", + "required": true, + "description": "JSON object detailing the parameters for aggregating RUM events, including compute metrics, filters, group-by rules, options, and paging.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the RUM search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group-by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "time_offset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails." + }, + "page": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cursor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + } + }, + "inner_properties": null, + "description": "Paging attributes for listing events." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AggregateRUMEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/analytics/aggregate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "rum_event_aggregation_parameters", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the RUM search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group-by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "time_offset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails." + }, + "page": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cursor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + } + }, + "inner_properties": null, + "description": "Paging attributes for listing events." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The object sent with the request to retrieve aggregation buckets of RUM events from your organization.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The list of metrics or timeseries to compute for the retrieved buckets.\",\n \"items\": {\n \"description\": \"A compute rule to compute metrics or timeseries.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\"\n ]\n },\n \"interval\": {\n \"description\": \"The time buckets' size (only used for type=timeseries)\\nDefaults to a resolution of 150 points.\",\n \"example\": \"5m\",\n \"type\": \"string\"\n },\n \"metric\": {\n \"description\": \"The metric to use.\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"total\",\n \"description\": \"The type of compute.\",\n \"enum\": [\n \"timeseries\",\n \"total\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESERIES\",\n \"TOTAL\"\n ]\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query following the RUM search syntax.\",\n \"example\": \"@type:session AND @session.type:user\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group-by rule.\",\n \"properties\": {\n \"facet\": {\n \"description\": \"The name of the facet to use (required).\",\n \"example\": \"@view.time_spent\",\n \"type\": \"string\"\n },\n \"histogram\": {\n \"description\": \"Used to perform a histogram computation (only for measure facets).\\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The bin size of the histogram buckets.\",\n \"example\": 10,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"max\": {\n \"description\": \"The maximum value for the measure used in the histogram\\n(values greater than this one are filtered out).\",\n \"example\": 100,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"min\": {\n \"description\": \"The minimum value for the measure used in the histogram\\n(values smaller than this one are filtered out).\",\n \"example\": 50,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"min\",\n \"max\"\n ],\n \"type\": \"object\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum buckets to return for this group-by.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"missing\": {\n \"description\": \"The value to use for logs that don't have the facet used to group by.\",\n \"oneOf\": [\n {\n \"description\": \"The missing value to use if there is string valued facet.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"The missing value to use if there is a number valued facet.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n },\n \"sort\": {\n \"description\": \"A sort rule.\",\n \"example\": {\n \"aggregation\": \"count\",\n \"order\": \"asc\"\n },\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\"\n ]\n },\n \"metric\": {\n \"description\": \"The metric to sort by (only used for `type=measure`).\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"order\": {\n \"description\": \"The order to use, ascending or descending.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"example\": \"asc\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASCENDING\",\n \"DESCENDING\"\n ]\n },\n \"type\": {\n \"default\": \"alphabetical\",\n \"description\": \"The type of sorting algorithm.\",\n \"enum\": [\n \"alphabetical\",\n \"measure\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALPHABETICAL\",\n \"MEASURE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"total\": {\n \"default\": false,\n \"description\": \"A resulting object to put the given computes in over all the matching records.\",\n \"oneOf\": [\n {\n \"description\": \"If set to true, creates an additional bucket labeled \\\"$facet_total\\\".\",\n \"type\": \"boolean\"\n },\n {\n \"description\": \"A string to use as the key value for the total bucket.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"A number to use as the key value for the total bucket.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"facet\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails.\",\n \"properties\": {\n \"time_offset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging attributes for listing events.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of events in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateSpansMetrics.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateSpansMetrics.json new file mode 100644 index 00000000..6ee5b55b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateSpansMetrics.json @@ -0,0 +1,682 @@ +{ + "name": "AggregateSpansMetrics", + "fully_qualified_name": "DatadogApi.AggregateSpansMetrics@0.1.0", + "description": "Aggregate spans to compute metrics and timeseries.\n\nUse this tool to aggregate spans into buckets and compute metrics and timeseries data. This is useful for analyzing performance and trends in systems. Note: Limited to 300 requests per hour.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "span_aggregation_parameters", + "required": true, + "description": "JSON object containing parameters for span aggregation, including metrics, filters, grouping, and options.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for spans that don't have the facet used to group by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timeOffset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nNote: You should only supply timezone or time offset but not both otherwise the query will fail." + } + }, + "inner_properties": null, + "description": "The object containing all the query parameters." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aggregate_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be aggregate_request." + } + }, + "inner_properties": null, + "description": "The object containing the query content." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AggregateSpans'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/spans/analytics/aggregate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "span_aggregation_parameters", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for spans that don't have the facet used to group by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "timeOffset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nNote: You should only supply timezone or time offset but not both otherwise the query will fail." + } + }, + "inner_properties": null, + "description": "The object containing all the query parameters." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aggregate_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be aggregate_request." + } + }, + "inner_properties": null, + "description": "The object containing the query content." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The object sent with the request to retrieve a list of aggregated spans from your organization.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The object containing the query content.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object containing all the query parameters.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The list of metrics or timeseries to compute for the retrieved buckets.\",\n \"items\": {\n \"description\": \"A compute rule to compute metrics or timeseries.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\"\n ]\n },\n \"interval\": {\n \"description\": \"The time buckets' size (only used for type=timeseries)\\nDefaults to a resolution of 150 points.\",\n \"example\": \"5m\",\n \"type\": \"string\"\n },\n \"metric\": {\n \"description\": \"The metric to use.\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"total\",\n \"description\": \"The type of compute.\",\n \"enum\": [\n \"timeseries\",\n \"total\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESERIES\",\n \"TOTAL\"\n ]\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the span search syntax.\",\n \"example\": \"service:web* AND @http.status_code:[200 TO 299]\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group by rule.\",\n \"properties\": {\n \"facet\": {\n \"description\": \"The name of the facet to use (required).\",\n \"example\": \"host\",\n \"type\": \"string\"\n },\n \"histogram\": {\n \"description\": \"Used to perform a histogram computation (only for measure facets).\\nNote: At most 100 buckets are allowed, the number of buckets is (max - min)/interval.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The bin size of the histogram buckets.\",\n \"example\": 10,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"max\": {\n \"description\": \"The maximum value for the measure used in the histogram\\n(values greater than this one are filtered out).\",\n \"example\": 100,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"min\": {\n \"description\": \"The minimum value for the measure used in the histogram\\n(values smaller than this one are filtered out).\",\n \"example\": 50,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"min\",\n \"max\"\n ],\n \"type\": \"object\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum buckets to return for this group by.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"missing\": {\n \"description\": \"The value to use for spans that don't have the facet used to group by.\",\n \"oneOf\": [\n {\n \"description\": \"The missing value to use if there is string valued facet.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"The missing value to use if there is a number valued facet.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n },\n \"sort\": {\n \"description\": \"A sort rule.\",\n \"example\": {\n \"aggregation\": \"count\",\n \"order\": \"asc\"\n },\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\"\n ]\n },\n \"metric\": {\n \"description\": \"The metric to sort by (only used for `type=measure`).\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"order\": {\n \"description\": \"The order to use, ascending or descending.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"example\": \"asc\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASCENDING\",\n \"DESCENDING\"\n ]\n },\n \"type\": {\n \"default\": \"alphabetical\",\n \"description\": \"The type of sorting algorithm.\",\n \"enum\": [\n \"alphabetical\",\n \"measure\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALPHABETICAL\",\n \"MEASURE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"total\": {\n \"default\": false,\n \"description\": \"A resulting object to put the given computes in over all the matching records.\",\n \"oneOf\": [\n {\n \"description\": \"If set to true, creates an additional bucket labeled \\\"$facet_total\\\".\",\n \"type\": \"boolean\"\n },\n {\n \"description\": \"A string to use as the key value for the total bucket.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"A number to use as the key value for the total bucket.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"facet\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nNote: You should only supply timezone or time offset but not both otherwise the query will fail.\",\n \"properties\": {\n \"timeOffset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"aggregate_request\",\n \"description\": \"The type of resource. The value should always be aggregate_request.\",\n \"enum\": [\n \"aggregate_request\"\n ],\n \"example\": \"aggregate_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AGGREGATE_REQUEST\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateTestMetrics.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateTestMetrics.json new file mode 100644 index 00000000..3d64273a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AggregateTestMetrics.json @@ -0,0 +1,642 @@ +{ + "name": "AggregateTestMetrics", + "fully_qualified_name": "DatadogApi.AggregateTestMetrics@0.1.0", + "description": "Aggregate CI Visibility test events into metrics and timeseries.\n\nUse this tool to aggregate CI test events into buckets for computed metrics and timeseries insights.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aggregate_test_events_payload", + "required": true, + "description": "JSON payload for aggregating CI test events, including compute metrics, filters, group-by rules, and options.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nAt most, 100 buckets are allowed, the number of buckets is `(max - min)/interval`." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group-by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group-by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule. The `aggregation` field is required when `type` is `measure`." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group-by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "time_offset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nOnly supply timezone or time offset, not both. Otherwise, the query fails." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AggregateCIAppTestEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ci/tests/analytics/aggregate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "aggregate_test_events_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time buckets' size (only used for type=timeseries)\nDefaults to a resolution of 150 points." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to use." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries", + "total" + ], + "properties": null, + "inner_properties": null, + "description": "The type of compute." + } + }, + "description": "The list of metrics or timeseries to compute for the retrieved buckets." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "to": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + } + }, + "inner_properties": null, + "description": "The search and filter query settings." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "facet": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the facet to use (required)." + }, + "histogram": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The bin size of the histogram buckets." + }, + "max": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum value for the measure used in the histogram\n(values greater than this one are filtered out)." + }, + "min": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum value for the measure used in the histogram\n(values smaller than this one are filtered out)." + } + }, + "inner_properties": null, + "description": "Used to perform a histogram computation (only for measure facets).\nAt most, 100 buckets are allowed, the number of buckets is `(max - min)/interval`." + }, + "limit": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum buckets to return for this group-by." + }, + "missing": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value to use for logs that don't have the facet used to group-by." + }, + "sort": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "pc75", + "pc90", + "pc95", + "pc98", + "pc99", + "sum", + "min", + "max", + "avg", + "median", + "latest", + "earliest", + "most_frequent", + "delta" + ], + "properties": null, + "inner_properties": null, + "description": "An aggregation function." + }, + "metric": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric to sort by (only used for `type=measure`)." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The order to use, ascending or descending." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "alphabetical", + "measure" + ], + "properties": null, + "inner_properties": null, + "description": "The type of sorting algorithm." + } + }, + "inner_properties": null, + "description": "A sort rule. The `aggregation` field is required when `type` is `measure`." + }, + "total": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A resulting object to put the given computes in over all the matching records." + } + }, + "description": "The rules for the group-by." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "time_offset": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + } + }, + "inner_properties": null, + "description": "Global query options that are used during the query.\nOnly supply timezone or time offset, not both. Otherwise, the query fails." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The object sent with the request to retrieve aggregation buckets of test events from your organization.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The list of metrics or timeseries to compute for the retrieved buckets.\",\n \"items\": {\n \"description\": \"A compute rule to compute metrics or timeseries.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\",\n \"latest\",\n \"earliest\",\n \"most_frequent\",\n \"delta\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\",\n \"LATEST\",\n \"EARLIEST\",\n \"MOST_FREQUENT\",\n \"DELTA\"\n ]\n },\n \"interval\": {\n \"description\": \"The time buckets' size (only used for type=timeseries)\\nDefaults to a resolution of 150 points.\",\n \"example\": \"5m\",\n \"type\": \"string\"\n },\n \"metric\": {\n \"description\": \"The metric to use.\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"total\",\n \"description\": \"The type of compute.\",\n \"enum\": [\n \"timeseries\",\n \"total\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESERIES\",\n \"TOTAL\"\n ]\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query following the CI Visibility Explorer search syntax.\",\n \"example\": \"@test.service:web-ui-tests AND @test.status:fail\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group-by.\",\n \"items\": {\n \"description\": \"A group-by rule.\",\n \"properties\": {\n \"facet\": {\n \"description\": \"The name of the facet to use (required).\",\n \"example\": \"@test.service\",\n \"type\": \"string\"\n },\n \"histogram\": {\n \"description\": \"Used to perform a histogram computation (only for measure facets).\\nAt most, 100 buckets are allowed, the number of buckets is `(max - min)/interval`.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The bin size of the histogram buckets.\",\n \"example\": 10,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"max\": {\n \"description\": \"The maximum value for the measure used in the histogram\\n(values greater than this one are filtered out).\",\n \"example\": 100,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"min\": {\n \"description\": \"The minimum value for the measure used in the histogram\\n(values smaller than this one are filtered out).\",\n \"example\": 50,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"min\",\n \"max\"\n ],\n \"type\": \"object\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum buckets to return for this group-by.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"missing\": {\n \"description\": \"The value to use for logs that don't have the facet used to group-by.\",\n \"oneOf\": [\n {\n \"description\": \"The missing value to use if there is a string valued facet.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"The missing value to use if there is a number valued facet.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n },\n \"sort\": {\n \"description\": \"A sort rule. The `aggregation` field is required when `type` is `measure`.\",\n \"example\": {\n \"aggregation\": \"count\",\n \"order\": \"asc\"\n },\n \"properties\": {\n \"aggregation\": {\n \"description\": \"An aggregation function.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\",\n \"median\",\n \"latest\",\n \"earliest\",\n \"most_frequent\",\n \"delta\"\n ],\n \"example\": \"pc90\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PERCENTILE_75\",\n \"PERCENTILE_90\",\n \"PERCENTILE_95\",\n \"PERCENTILE_98\",\n \"PERCENTILE_99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\",\n \"MEDIAN\",\n \"LATEST\",\n \"EARLIEST\",\n \"MOST_FREQUENT\",\n \"DELTA\"\n ]\n },\n \"metric\": {\n \"description\": \"The metric to sort by (only used for `type=measure`).\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"order\": {\n \"description\": \"The order to use, ascending or descending.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"example\": \"asc\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASCENDING\",\n \"DESCENDING\"\n ]\n },\n \"type\": {\n \"default\": \"alphabetical\",\n \"description\": \"The type of sorting algorithm.\",\n \"enum\": [\n \"alphabetical\",\n \"measure\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALPHABETICAL\",\n \"MEASURE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"total\": {\n \"default\": false,\n \"description\": \"A resulting object to put the given computes in over all the matching records.\",\n \"oneOf\": [\n {\n \"description\": \"If set to true, creates an additional bucket labeled \\\"$facet_total\\\".\",\n \"type\": \"boolean\"\n },\n {\n \"description\": \"A string to use as the key value for the total bucket.\",\n \"type\": \"string\"\n },\n {\n \"description\": \"A number to use as the key value for the total bucket.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n ]\n }\n },\n \"required\": [\n \"facet\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nOnly supply timezone or time offset, not both. Otherwise, the query fails.\",\n \"properties\": {\n \"time_offset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveAzureCostAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveAzureCostAccount.json new file mode 100644 index 00000000..25bd6df8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveAzureCostAccount.json @@ -0,0 +1,126 @@ +{ + "name": "ArchiveAzureCostAccount", + "fully_qualified_name": "DatadogApi.ArchiveAzureCostAccount@0.1.0", + "description": "Archive an Azure Cloud Cost Management account in Datadog.\n\nUse this tool to archive a Cloud Cost Management account associated with Azure in Datadog. This action is irreversible and should be performed when you need to remove cost management configurations for a specific Azure account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "azure_cloud_account_id", + "required": true, + "description": "The ID of the Azure Cloud Cost Management account to archive. This is necessary to identify which account's configurations will be removed.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCostAzureUCConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/azure_uc_config/{cloud_account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "azure_cloud_account_id", + "description": "Cloud Account id.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveCase.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveCase.json new file mode 100644 index 00000000..b3fe2cbb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveCase.json @@ -0,0 +1,163 @@ +{ + "name": "ArchiveCase", + "fully_qualified_name": "DatadogApi.ArchiveCase@0.1.0", + "description": "Archive a specific case in Datadog.\n\nThis tool is used to archive a case in Datadog by specifying the case ID. Call this tool when you need to move a case to the archive for record-keeping or compliance.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_unique_id", + "required": true, + "description": "The unique identifier or key of the case to be archived in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specify 'case' as the resource type to identify the case resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ArchiveCase'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/archive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_unique_id", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case empty request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case empty request data\",\n \"properties\": {\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Archive case payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveCloudCostAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveCloudCostAccount.json new file mode 100644 index 00000000..a434f212 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveCloudCostAccount.json @@ -0,0 +1,126 @@ +{ + "name": "ArchiveCloudCostAccount", + "fully_qualified_name": "DatadogApi.ArchiveCloudCostAccount@0.1.0", + "description": "Archive a Cloud Cost Management Account.\n\nUse this tool to archive a Cloud Cost Management Account in Datadog, specifically for AWS CUR configurations. Useful for managing or removing outdated or unnecessary cost configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_account_id", + "required": true, + "description": "The unique identifier for the Cloud Account to be archived in Datadog.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCostAWSCURConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/aws_cur_config/{cloud_account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "cloud_account_id", + "description": "Cloud Account id.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveGcpCostManagementAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveGcpCostManagementAccount.json new file mode 100644 index 00000000..c54f0871 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ArchiveGcpCostManagementAccount.json @@ -0,0 +1,126 @@ +{ + "name": "ArchiveGcpCostManagementAccount", + "fully_qualified_name": "DatadogApi.ArchiveGcpCostManagementAccount@0.1.0", + "description": "Archive a Cloud Cost Management account.\n\nUse this tool to archive a Google Cloud Platform (GCP) cost management account in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_account_identifier", + "required": true, + "description": "The unique identifier for the GCP cloud account to be archived.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCostGCPUsageCostConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/gcp_uc_config/{cloud_account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "cloud_account_identifier", + "description": "Cloud Account id.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AssignCaseToUser.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AssignCaseToUser.json new file mode 100644 index 00000000..62677911 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/AssignCaseToUser.json @@ -0,0 +1,196 @@ +{ + "name": "AssignCaseToUser", + "fully_qualified_name": "DatadogApi.AssignCaseToUser@0.1.0", + "description": "Assign a case to a specific user.\n\nUse this tool to assign a case to a specific user by providing the case ID. It should be called when you need to allocate a case to an appropriate team member or user.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_id", + "required": true, + "description": "The unique identifier (UUID or key) of the case to be assigned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "assignee_user_id", + "required": true, + "description": "The UUID of the user to whom the case will be assigned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Assignee's UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.assignee_id" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specify the resource type. Must be set to 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'AssignCase'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/assign", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_id", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.assignee_id", + "tool_parameter_name": "assignee_user_id", + "description": "Assignee's UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Assignee's UUID" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case assign request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case assign\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case assign attributes\",\n \"properties\": {\n \"assignee_id\": {\n \"description\": \"Assignee's UUID\",\n \"example\": \"f98a5a5b-e0ff-45d4-b2f5-afe6e74de504\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"assignee_id\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Assign case payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/BulkDeleteDatastoreItems.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/BulkDeleteDatastoreItems.json new file mode 100644 index 00000000..56caf560 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/BulkDeleteDatastoreItems.json @@ -0,0 +1,229 @@ +{ + "name": "BulkDeleteDatastoreItems", + "fully_qualified_name": "DatadogApi.BulkDeleteDatastoreItems@0.1.0", + "description": "Delete multiple items from a datastore at once.\n\nUse this tool to delete multiple items from a specified datastore by their keys in a single operation. It's ideal for efficiently removing batches of entries when managing datastore contents.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_identifier", + "required": true, + "description": "The unique ID of the datastore from which items will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the datastore." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + }, + { + "name": "item_keys_to_delete", + "required": false, + "description": "List of up to 100 primary keys identifying items to delete from the datastore.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of primary keys identifying items to delete from datastore. Up to 100 items can be deleted in a single request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.item_keys" + }, + { + "name": "datastore_items_id", + "required": false, + "description": "ID for the datastore of items you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID for the datastore of the items to delete." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "items_resource_type", + "required": false, + "description": "Specifies the resource type of the items. Must be 'items'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "Items resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'BulkDeleteDatastoreItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items/bulk", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "datastore_id", + "tool_parameter_name": "datastore_identifier", + "description": "The ID of the datastore.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the datastore." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.item_keys", + "tool_parameter_name": "item_keys_to_delete", + "description": "List of primary keys identifying items to delete from datastore. Up to 100 items can be deleted in a single request.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of primary keys identifying items to delete from datastore. Up to 100 items can be deleted in a single request." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "datastore_items_id", + "description": "ID for the datastore of the items to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID for the datastore of the items to delete." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "items_resource_type", + "description": "Items resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "Items resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "items", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to delete items from a datastore.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data wrapper containing the data needed to delete items from a datastore.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of request data to delete items from a datastore.\",\n \"properties\": {\n \"item_keys\": {\n \"description\": \"List of primary keys identifying items to delete from datastore. Up to 100 items can be deleted in a single request.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"maxItems\": 100,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID for the datastore of the items to delete.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"items\",\n \"description\": \"Items resource type.\",\n \"enum\": [\n \"items\"\n ],\n \"example\": \"items\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ITEMS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/BulkUpdateDatastoreItems.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/BulkUpdateDatastoreItems.json new file mode 100644 index 00000000..bf16862a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/BulkUpdateDatastoreItems.json @@ -0,0 +1,255 @@ +{ + "name": "BulkUpdateDatastoreItems", + "fully_qualified_name": "DatadogApi.BulkUpdateDatastoreItems@0.1.0", + "description": "Perform bulk creation or replacement of datastore items.\n\nUse this tool to create or replace multiple items in a Datadog datastore in a single operation by specifying their keys.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_identifier", + "required": true, + "description": "The unique identifier for the datastore where items will be updated or replaced.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + }, + { + "name": "bulk_datastore_items_request", + "required": true, + "description": "A JSON object containing the configuration and items for bulk insertion or replacement in the datastore. This includes the conflict mode and an array of items to process.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conflict_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fail_on_conflict", + "overwrite_on_conflict" + ], + "properties": null, + "inner_properties": null, + "description": "How to handle conflicts when inserting items that already exist in the datastore." + }, + "values": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "An array of items to add to the datastore, where each item is a set of key-value pairs representing the item's data. Up to 100 items can be updated in a single request." + } + }, + "inner_properties": null, + "description": "Configuration for bulk inserting multiple items into a datastore." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastore items." + } + }, + "inner_properties": null, + "description": "Data wrapper containing the items to insert and their configuration for the bulk insert operation." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'BulkWriteDatastoreItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items/bulk", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "datastore_id", + "tool_parameter_name": "datastore_identifier", + "description": "The unique identifier of the datastore to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "bulk_datastore_items_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conflict_mode": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fail_on_conflict", + "overwrite_on_conflict" + ], + "properties": null, + "inner_properties": null, + "description": "How to handle conflicts when inserting items that already exist in the datastore." + }, + "values": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "An array of items to add to the datastore, where each item is a set of key-value pairs representing the item's data. Up to 100 items can be updated in a single request." + } + }, + "inner_properties": null, + "description": "Configuration for bulk inserting multiple items into a datastore." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastore items." + } + }, + "inner_properties": null, + "description": "Data wrapper containing the items to insert and their configuration for the bulk insert operation." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to insert multiple items into a datastore in a single operation.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data wrapper containing the items to insert and their configuration for the bulk insert operation.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Configuration for bulk inserting multiple items into a datastore.\",\n \"properties\": {\n \"conflict_mode\": {\n \"description\": \"How to handle conflicts when inserting items that already exist in the datastore.\",\n \"enum\": [\n \"fail_on_conflict\",\n \"overwrite_on_conflict\"\n ],\n \"example\": \"overwrite_on_conflict\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FAIL_ON_CONFLICT\",\n \"OVERWRITE_ON_CONFLICT\"\n ]\n },\n \"values\": {\n \"description\": \"An array of items to add to the datastore, where each item is a set of key-value pairs representing the item's data. Up to 100 items can be updated in a single request.\",\n \"example\": [\n {\n \"data\": \"example data\",\n \"key\": \"value\"\n },\n {\n \"data\": \"example data2\",\n \"key\": \"value2\"\n }\n ],\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"A single item's data as key-value pairs. Key names cannot exceed 63 characters.\",\n \"type\": \"object\"\n },\n \"maxItems\": 100,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"values\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"items\",\n \"description\": \"The resource type for datastore items.\",\n \"enum\": [\n \"items\"\n ],\n \"example\": \"items\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ITEMS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelDowntime.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelDowntime.json new file mode 100644 index 00000000..684f1fdc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelDowntime.json @@ -0,0 +1,126 @@ +{ + "name": "CancelDowntime", + "fully_qualified_name": "DatadogApi.CancelDowntime@0.1.0", + "description": "Cancel an active downtime in Datadog.\n\nUse this tool to cancel an active downtime in Datadog. The downtime remains visible for about two days in search results until it is permanently removed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "downtime_id", + "required": true, + "description": "Provide the ID of the downtime you wish to cancel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the downtime to cancel." + }, + "inferrable": true, + "http_endpoint_parameter_name": "downtime_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CancelDowntime'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/downtime/{downtime_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "downtime_id", + "tool_parameter_name": "downtime_id", + "description": "ID of the downtime to cancel.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the downtime to cancel." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelHistoricalJob.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelHistoricalJob.json new file mode 100644 index 00000000..7522b88e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelHistoricalJob.json @@ -0,0 +1,126 @@ +{ + "name": "CancelHistoricalJob", + "fully_qualified_name": "DatadogApi.CancelHistoricalJob@0.1.0", + "description": "Cancel a historical job in Datadog.\n\nUse this tool to cancel an ongoing historical job in Datadog, identified by its job ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "job_id", + "required": true, + "description": "The unique identifier of the historical job to be canceled in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "inferrable": true, + "http_endpoint_parameter_name": "job_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CancelHistoricalJob'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}/cancel", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "job_id", + "tool_parameter_name": "job_id", + "description": "The ID of the job.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelWorkflowInstance.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelWorkflowInstance.json new file mode 100644 index 00000000..7d4538b8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CancelWorkflowInstance.json @@ -0,0 +1,159 @@ +{ + "name": "CancelWorkflowInstance", + "fully_qualified_name": "DatadogApi.CancelWorkflowInstance@0.1.0", + "description": "Cancel a specific execution of a workflow.\n\nUse this tool to cancel a specific execution of a given workflow in Datadog. Ensure you have the necessary application key or permissions configured to perform this action.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_id", + "required": true, + "description": "The unique ID of the workflow to cancel. It must be a valid string as per the API specifications.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "inferrable": true, + "http_endpoint_parameter_name": "workflow_id" + }, + { + "name": "workflow_instance_id", + "required": true, + "description": "The unique identifier of the workflow instance to be canceled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow instance." + }, + "inferrable": true, + "http_endpoint_parameter_name": "instance_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CancelWorkflowInstance'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances/{instance_id}/cancel", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "workflow_id", + "tool_parameter_name": "workflow_id", + "description": "The ID of the workflow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "instance_id", + "tool_parameter_name": "workflow_instance_id", + "description": "The ID of the workflow instance.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow instance." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ChangeSignalState.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ChangeSignalState.json new file mode 100644 index 00000000..acb0fc1e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ChangeSignalState.json @@ -0,0 +1,348 @@ +{ + "name": "ChangeSignalState", + "fully_qualified_name": "DatadogApi.ChangeSignalState@0.1.0", + "description": "Change the triage state of a security signal.\n\nThis tool is used to modify the triage state of a specific security signal in Datadog's security monitoring system. It is useful for managing signal priorities and responses.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "signal_id", + "required": true, + "description": "The unique identifier of the security signal to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "signal_id" + }, + { + "name": "new_triage_state", + "required": true, + "description": "The new triage state of the signal. Valid options are 'open', 'archived', or 'under_review'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "open", + "archived", + "under_review" + ], + "properties": null, + "inner_properties": null, + "description": "The new triage state of the signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.state" + }, + { + "name": "archive_comment", + "required": false, + "description": "Optional comment to display on archived signals. Useful for context or documentation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional comment to display on archived signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.archive_comment" + }, + { + "name": "archive_reason", + "required": false, + "description": "Reason for archiving the signal. Options include 'none', 'false_positive', 'testing_or_maintenance', 'investigated_case_opened', or 'other'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "false_positive", + "testing_or_maintenance", + "investigated_case_opened", + "other" + ], + "properties": null, + "inner_properties": null, + "description": "Reason a signal is archived." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.archive_reason" + }, + { + "name": "updated_signal_version", + "required": false, + "description": "The version number of the signal to update. The update is rejected if the server's version is higher.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the updated signal. If server side version is higher, update will be rejected." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.version" + }, + { + "name": "security_signal_unique_id", + "required": false, + "description": "The unique identifier for the security signal to be modified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID of the security signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "event_type", + "required": false, + "description": "The type of event, must be 'signal_metadata'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "signal_metadata" + ], + "properties": null, + "inner_properties": null, + "description": "The type of event." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'EditSecurityMonitoringSignalState'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}/state", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "signal_id", + "tool_parameter_name": "signal_id", + "description": "The ID of the signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.archive_comment", + "tool_parameter_name": "archive_comment", + "description": "Optional comment to display on archived signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional comment to display on archived signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.archive_reason", + "tool_parameter_name": "archive_reason", + "description": "Reason a signal is archived.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "false_positive", + "testing_or_maintenance", + "investigated_case_opened", + "other" + ], + "properties": null, + "inner_properties": null, + "description": "Reason a signal is archived." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.state", + "tool_parameter_name": "new_triage_state", + "description": "The new triage state of the signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "open", + "archived", + "under_review" + ], + "properties": null, + "inner_properties": null, + "description": "The new triage state of the signal." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.version", + "tool_parameter_name": "updated_signal_version", + "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the updated signal. If server side version is higher, update will be rejected." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "security_signal_unique_id", + "description": "The unique ID of the security signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID of the security signal." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "event_type", + "description": "The type of event.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "signal_metadata" + ], + "properties": null, + "inner_properties": null, + "description": "The type of event." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "signal_metadata", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request body for changing the state of a given security monitoring signal.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data containing the patch for changing the state of a signal.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes describing the change of state of a security signal.\",\n \"properties\": {\n \"archive_comment\": {\n \"description\": \"Optional comment to display on archived signals.\",\n \"type\": \"string\"\n },\n \"archive_reason\": {\n \"description\": \"Reason a signal is archived.\",\n \"enum\": [\n \"none\",\n \"false_positive\",\n \"testing_or_maintenance\",\n \"investigated_case_opened\",\n \"other\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NONE\",\n \"FALSE_POSITIVE\",\n \"TESTING_OR_MAINTENANCE\",\n \"INVESTIGATED_CASE_OPENED\",\n \"OTHER\"\n ]\n },\n \"state\": {\n \"description\": \"The new triage state of the signal.\",\n \"enum\": [\n \"open\",\n \"archived\",\n \"under_review\"\n ],\n \"example\": \"open\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPEN\",\n \"ARCHIVED\",\n \"UNDER_REVIEW\"\n ]\n },\n \"version\": {\n \"description\": \"Version of the updated signal. If server side version is higher, update will be rejected.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"state\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique ID of the security signal.\"\n },\n \"type\": {\n \"default\": \"signal_metadata\",\n \"description\": \"The type of event.\",\n \"enum\": [\n \"signal_metadata\"\n ],\n \"example\": \"signal_metadata\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SIGNAL_METADATA\"\n ]\n }\n },\n \"required\": [\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Attributes describing the signal update.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CloneExistingRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CloneExistingRole.json new file mode 100644 index 00000000..6a1827da --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CloneExistingRole.json @@ -0,0 +1,196 @@ +{ + "name": "CloneExistingRole", + "fully_qualified_name": "DatadogApi.CloneExistingRole@0.1.0", + "description": "Clone an existing role based on role ID.\n\nThis tool allows cloning of an existing role by using its unique role ID. It should be called when you need to create a duplicate of an existing role with identical permissions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_unique_identifier", + "required": true, + "description": "The unique identifier of the role to be cloned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + }, + { + "name": "new_role_name", + "required": true, + "description": "Name of the new role that is cloned from an existing role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the new role that is cloned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "role_type", + "required": true, + "description": "Specifies the type of role for the clone operation. Must be 'roles'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CloneRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}/clone", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_unique_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "new_role_name", + "description": "Name of the new role that is cloned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the new role that is cloned." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "role_type", + "description": "Roles type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "roles", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to create a role by cloning an existing role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data for the clone role request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes required to create a new role by cloning an existing one.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the new role that is cloned.\",\n \"example\": \"cloned-role\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConfigureBulkTagsForMetrics.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConfigureBulkTagsForMetrics.json new file mode 100644 index 00000000..5b991009 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConfigureBulkTagsForMetrics.json @@ -0,0 +1,328 @@ +{ + "name": "ConfigureBulkTagsForMetrics", + "fully_qualified_name": "DatadogApi.ConfigureBulkTagsForMetrics@0.1.0", + "description": "Configure bulk tags for specified metrics in Datadog.\n\nUse this tool to create and define queryable tag keys for existing count, gauge, rate, and distribution metrics in Datadog by specifying a metric name prefix. It manages tags configurations and sends results to account email addresses. Suitable for users with 'Manage Tags for Metrics' permission.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name_prefix", + "required": true, + "description": "A text prefix used to match against metric names for bulk tags configuration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A text prefix to match against metric names." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "metric_bulk_configure_tags_resource", + "required": true, + "description": "The resource identifier for configuring bulk tags for metrics. Must be set to 'metric_bulk_configure_tags'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "metric_bulk_configure_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric bulk configure tags resource." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "notification_emails", + "required": false, + "description": "A list of account emails to notify when the configuration is applied.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of account emails to notify when the configuration is applied." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.emails" + }, + { + "name": "actively_queried_tags_window_seconds", + "required": false, + "description": "Time window in seconds for configuring actively queried tags for matching metrics. Minimum is 1 second, maximum is 7,776,000 seconds (90 days).", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When provided, all tags that have been actively queried are\nconfigured (and, therefore, remain queryable) for each metric that\nmatches the given prefix. Minimum value is 1 second, and maximum\nvalue is 7,776,000 seconds (90 days)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.include_actively_queried_tags_window" + }, + { + "name": "tags_to_apply", + "required": false, + "description": "A list of tag names to apply to the metric configuration in Datadog.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tag names to apply to the configuration." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + }, + { + "name": "exclude_configured_tags", + "required": false, + "description": "Set to true to exclude configured tags and include all other tags. Defaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration will exclude the configured tags and include any other submitted tags.\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\nDefaults to false." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.exclude_tags_mode" + }, + { + "name": "override_existing_configurations", + "required": false, + "description": "Set to true to override any existing configurations for the metric with the new tags. Defaults to true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration overrides any existing\nconfigurations for the given metric with the new set of tags in this\nconfiguration request. If false, old configurations are kept and\nare merged with the set of tags in this configuration request.\nDefaults to true." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.override_existing_configurations" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateBulkTagsMetricsConfiguration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/config/bulk-tags", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.emails", + "tool_parameter_name": "notification_emails", + "description": "A list of account emails to notify when the configuration is applied.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of account emails to notify when the configuration is applied." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.exclude_tags_mode", + "tool_parameter_name": "exclude_configured_tags", + "description": "When set to true, the configuration will exclude the configured tags and include any other submitted tags.\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\nDefaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration will exclude the configured tags and include any other submitted tags.\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\nDefaults to false." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.include_actively_queried_tags_window", + "tool_parameter_name": "actively_queried_tags_window_seconds", + "description": "When provided, all tags that have been actively queried are\nconfigured (and, therefore, remain queryable) for each metric that\nmatches the given prefix. Minimum value is 1 second, and maximum\nvalue is 7,776,000 seconds (90 days).", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When provided, all tags that have been actively queried are\nconfigured (and, therefore, remain queryable) for each metric that\nmatches the given prefix. Minimum value is 1 second, and maximum\nvalue is 7,776,000 seconds (90 days)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.override_existing_configurations", + "tool_parameter_name": "override_existing_configurations", + "description": "When set to true, the configuration overrides any existing\nconfigurations for the given metric with the new set of tags in this\nconfiguration request. If false, old configurations are kept and\nare merged with the set of tags in this configuration request.\nDefaults to true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration overrides any existing\nconfigurations for the given metric with the new set of tags in this\nconfiguration request. If false, old configurations are kept and\nare merged with the set of tags in this configuration request.\nDefaults to true." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "tags_to_apply", + "description": "A list of tag names to apply to the configuration.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tag names to apply to the configuration." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "metric_name_prefix", + "description": "A text prefix to match against metric names.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A text prefix to match against metric names." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "metric_bulk_configure_tags_resource", + "description": "The metric bulk configure tags resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "metric_bulk_configure_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric bulk configure tags resource." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "metric_bulk_configure_tags", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Wrapper object for a single bulk tag configuration request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Request object to bulk configure tags for metrics matching the given prefix.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Optional parameters for bulk creating metric tag configurations.\",\n \"properties\": {\n \"emails\": {\n \"description\": \"A list of account emails to notify when the configuration is applied.\",\n \"example\": [\n \"sue@example.com\",\n \"bob@example.com\"\n ],\n \"items\": {\n \"description\": \"An email address.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"exclude_tags_mode\": {\n \"description\": \"When set to true, the configuration will exclude the configured tags and include any other submitted tags.\\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\\nDefaults to false.\",\n \"type\": \"boolean\"\n },\n \"include_actively_queried_tags_window\": {\n \"description\": \"When provided, all tags that have been actively queried are\\nconfigured (and, therefore, remain queryable) for each metric that\\nmatches the given prefix. Minimum value is 1 second, and maximum\\nvalue is 7,776,000 seconds (90 days).\",\n \"format\": \"double\",\n \"maximum\": 7776000,\n \"minimum\": 1,\n \"type\": \"number\"\n },\n \"override_existing_configurations\": {\n \"description\": \"When set to true, the configuration overrides any existing\\nconfigurations for the given metric with the new set of tags in this\\nconfiguration request. If false, old configurations are kept and\\nare merged with the set of tags in this configuration request.\\nDefaults to true.\",\n \"type\": \"boolean\"\n },\n \"tags\": {\n \"description\": \"A list of tag names to apply to the configuration.\",\n \"example\": [\n \"host\",\n \"pod_name\",\n \"is_shadow\"\n ],\n \"items\": {\n \"description\": \"A metric tag name.\",\n \"maxLength\": 200,\n \"pattern\": \"^[A-Za-z][A-Za-z0-9\\\\.\\\\-\\\\_:\\\\/]*$\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"A text prefix to match against metric names.\",\n \"example\": \"kafka.lag\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"metric_bulk_configure_tags\",\n \"description\": \"The metric bulk configure tags resource.\",\n \"enum\": [\n \"metric_bulk_configure_tags\"\n ],\n \"example\": \"metric_bulk_configure_tags\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BULK_MANAGE_TAGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertJobResultToSignal.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertJobResultToSignal.json new file mode 100644 index 00000000..7ab94827 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertJobResultToSignal.json @@ -0,0 +1,307 @@ +{ + "name": "ConvertJobResultToSignal", + "fully_qualified_name": "DatadogApi.ConvertJobResultToSignal@0.1.0", + "description": "Convert a job result to a signal for detection purposes.\n\nUse this tool to transform a job result into a signal, useful for detection and monitoring in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "request_id", + "required": false, + "description": "A unique identifier for the request that is used to convert the job result to a signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Request ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.id" + }, + { + "name": "job_result_ids", + "required": false, + "description": "Array of job result IDs to convert into signals.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Job result IDs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.jobResultIds" + }, + { + "name": "notifications_sent", + "required": false, + "description": "List of notification types sent related to the signal.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notifications sent." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.notifications" + }, + { + "name": "signal_message", + "required": false, + "description": "Message content of the generated signals to be converted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Message of generated signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.signalMessage" + }, + { + "name": "signal_severity", + "required": false, + "description": "Severity level of the security signal. Accepts values: info, low, medium, high, critical.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.signalSeverity" + }, + { + "name": "payload_type", + "required": false, + "description": "Type of payload, must be 'historicalDetectionsJobResultSignalConversion'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "historicalDetectionsJobResultSignalConversion" + ], + "properties": null, + "inner_properties": null, + "description": "Type of payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ConvertJobResultToSignal'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/signal_convert", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.id", + "tool_parameter_name": "request_id", + "description": "Request ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Request ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.jobResultIds", + "tool_parameter_name": "job_result_ids", + "description": "Job result IDs.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Job result IDs." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.notifications", + "tool_parameter_name": "notifications_sent", + "description": "Notifications sent.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notifications sent." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.signalMessage", + "tool_parameter_name": "signal_message", + "description": "Message of generated signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Message of generated signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.signalSeverity", + "tool_parameter_name": "signal_severity", + "description": "Severity of the Security Signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "payload_type", + "description": "Type of payload.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "historicalDetectionsJobResultSignalConversion" + ], + "properties": null, + "inner_properties": null, + "description": "Type of payload." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for converting historical job results to signals.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data for converting historical job results to signals.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for converting historical job results to signals.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Request ID.\",\n \"type\": \"string\"\n },\n \"jobResultIds\": {\n \"description\": \"Job result IDs.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"notifications\": {\n \"description\": \"Notifications sent.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"signalMessage\": {\n \"description\": \"Message of generated signals.\",\n \"example\": \"A large number of failed login attempts.\",\n \"type\": \"string\"\n },\n \"signalSeverity\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"jobResultIds\",\n \"signalSeverity\",\n \"signalMessage\",\n \"notifications\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of payload.\",\n \"enum\": [\n \"historicalDetectionsJobResultSignalConversion\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HISTORICALDETECTIONSJOBRESULTSIGNALCONVERSION\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertRuleJsonToTerraform.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertRuleJsonToTerraform.json new file mode 100644 index 00000000..099d9ba5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertRuleJsonToTerraform.json @@ -0,0 +1,126 @@ +{ + "name": "ConvertRuleJsonToTerraform", + "fully_qualified_name": "DatadogApi.ConvertRuleJsonToTerraform@0.1.0", + "description": "Converts Datadog security rules from JSON to Terraform format.\n\nUse this tool to convert a Datadog security monitoring rule from JSON format to Terraform format. It is helpful when you need to transform security rules for infrastructure as code purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_json_data", + "required": true, + "description": "The JSON data of the Datadog security monitoring rule to convert to Terraform format.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ConvertSecurityMonitoringRuleFromJSONToTerraform'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/convert", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "rule_json_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Convert a rule from JSON to Terraform.\",\n \"oneOf\": [\n {\n \"description\": \"The payload of a rule.\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"customMessage\": {\n \"description\": \"Custom/Overridden message for generated signals (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"customName\": {\n \"description\": \"Custom/Overridden name of the rule (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"customQueryExtension\": {\n \"description\": \"Query extension to append to the logs query.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"**This field is currently unstable and might be removed in a minor version upgrade.**\\nThe index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules - in other words, when the `schedulingOptions` field is present in the rule payload.\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"description\": \"List of indexes to query when the `dataSource` is `logs`. Only used for scheduled rules, such as when the `schedulingOptions` field is present in the rule payload.\",\n \"items\": {\n \"description\": \"Index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metric\": {\n \"deprecated\": true,\n \"description\": \"(Deprecated) The target field to aggregate over when using the sum or max\\naggregations. `metrics` field should be used instead.\",\n \"type\": \"string\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables for the rule.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulingOptions\": {\n \"description\": \"Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.\",\n \"nullable\": true,\n \"properties\": {\n \"rrule\": {\n \"description\": \"Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference.\",\n \"example\": \"FREQ=HOURLY;INTERVAL=1;\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"Start date for the schedule, in ISO 8601 format without timezone.\",\n \"example\": \"2025-07-14T12:00:00\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating signals from third-party rules. Only available for third-party rules.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when a signal is generated by a third party rule.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"api_security\",\n \"application_security\",\n \"log_detection\",\n \"workload_security\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"API_SECURITY\",\n \"APPLICATION_SECURITY\",\n \"LOG_DETECTION\",\n \"WORKLOAD_SECURITY\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The payload of a signal correlation rule.\",\n \"properties\": {\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"customMessage\": {\n \"description\": \"Custom/Overridden message for generated signals (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"customName\": {\n \"description\": \"Custom/Overridden name of the rule (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting signals which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule on signals.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"correlatedByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"correlatedQueryIndex\": {\n \"description\": \"Index of the rule query used to retrieve the correlated field.\",\n \"format\": \"int32\",\n \"maximum\": 9,\n \"type\": \"integer\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"ruleId\": {\n \"description\": \"Rule ID to match on signals.\",\n \"example\": \"org-ru1-e1d\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ruleId\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"signal_correlation\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SIGNAL_CORRELATION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertSecurityRuleToTerraform.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertSecurityRuleToTerraform.json new file mode 100644 index 00000000..45537501 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ConvertSecurityRuleToTerraform.json @@ -0,0 +1,126 @@ +{ + "name": "ConvertSecurityRuleToTerraform", + "fully_qualified_name": "DatadogApi.ConvertSecurityRuleToTerraform@0.1.0", + "description": "Convert existing security rule from JSON to Terraform.\n\nThis tool converts an existing Datadog security monitoring rule from its JSON format to a Terraform configuration. Use it to facilitate the integration and management of your rules using Terraform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_id", + "required": true, + "description": "The ID of the Datadog security monitoring rule to convert.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ConvertExistingSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}/convert", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateActionConnection.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateActionConnection.json new file mode 100644 index 00000000..b5e59f0d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateActionConnection.json @@ -0,0 +1,232 @@ +{ + "name": "CreateActionConnection", + "fully_qualified_name": "DatadogApi.CreateActionConnection@0.1.0", + "description": "Create a new action connection in Datadog.\n\nUse this tool to create a new action connection in Datadog. Ensure you have a registered application key before using this tool.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "action_connection_data", + "required": true, + "description": "JSON object containing details like connection attributes, ID, and type. Must include 'attributes' with 'integration' and 'name', 'id', and 'type' as 'action_connection'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "integration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionIntegration` object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the connection" + } + }, + "inner_properties": null, + "description": "The definition of `ActionConnectionAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The connection identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "action_connection" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the connection." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateActionConnection'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/connections", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "action_connection_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "integration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionIntegration` object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the connection" + } + }, + "inner_properties": null, + "description": "The definition of `ActionConnectionAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The connection identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "action_connection" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the connection." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to create an action connection.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the connection.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `ActionConnectionAttributes` object.\",\n \"properties\": {\n \"integration\": {\n \"description\": \"The definition of `ActionConnectionIntegration` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of `AWSIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of `AWSCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of `AWSAssumeRole` object.\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"AWS account the connection is created for\",\n \"example\": \"111222333444\",\n \"pattern\": \"^\\\\d{12}$\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"External ID used to scope which connection can be used to assume the role\",\n \"example\": \"33a1011635c44b38a064cf14e82e1d8f\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"principal_id\": {\n \"description\": \"AWS account that will assume the role\",\n \"example\": \"123456789012\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"Role to assume\",\n \"example\": \"my-role\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `AWSAssumeRoleType` object.\",\n \"enum\": [\n \"AWSAssumeRole\"\n ],\n \"example\": \"AWSAssumeRole\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWSASSUMEROLE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"account_id\",\n \"role\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of `AWSIntegrationType` object.\",\n \"enum\": [\n \"AWS\"\n ],\n \"example\": \"AWS\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `AnthropicIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `AnthropicCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `AnthropicAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `AnthropicAPIKey` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `AnthropicAPIKey` object.\",\n \"enum\": [\n \"AnthropicAPIKey\"\n ],\n \"example\": \"AnthropicAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ANTHROPICAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `AnthropicIntegrationType` object.\",\n \"enum\": [\n \"Anthropic\"\n ],\n \"example\": \"Anthropic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ANTHROPIC\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `AsanaIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `AsanaCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `AsanaAccessToken` object.\",\n \"properties\": {\n \"access_token\": {\n \"description\": \"The `AsanaAccessToken` `access_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `AsanaAccessToken` object.\",\n \"enum\": [\n \"AsanaAccessToken\"\n ],\n \"example\": \"AsanaAccessToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASANAACCESSTOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"access_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `AsanaIntegrationType` object.\",\n \"enum\": [\n \"Asana\"\n ],\n \"example\": \"Asana\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASANA\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `AzureIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `AzureCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `AzureTenant` object.\",\n \"properties\": {\n \"app_client_id\": {\n \"description\": \"The Client ID, also known as the Application ID in Azure, is a unique identifier for an application. It's used to identify the application during the authentication process. Your Application (client) ID is listed in the application's overview page. You can navigate to your application via the Azure Directory. \",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"client_secret\": {\n \"description\": \"The Client Secret is a confidential piece of information known only to the application and Azure AD. It's used to prove the application's identity. Your Client Secret is available from the application\\u2019s secrets page. You can navigate to your application via the Azure Directory.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"custom_scopes\": {\n \"description\": \"If provided, the custom scope to be requested from Microsoft when acquiring an OAuth 2 access token. This custom scope is used only in conjunction with the HTTP action. A resource's scope is constructed by using the identifier URI for the resource and .default, separated by a forward slash (/) as follows:{identifierURI}/.default.\",\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"The Tenant ID, also known as the Directory ID in Azure, is a unique identifier that represents an Azure AD instance. Your Tenant ID (Directory ID) is listed in your Active Directory overview page under the 'Tenant information' section.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `AzureTenant` object.\",\n \"enum\": [\n \"AzureTenant\"\n ],\n \"example\": \"AzureTenant\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURETENANT\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"tenant_id\",\n \"app_client_id\",\n \"client_secret\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `AzureIntegrationType` object.\",\n \"enum\": [\n \"Azure\"\n ],\n \"example\": \"Azure\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `CircleCIIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `CircleCICredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `CircleCIAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `CircleCIAPIKey` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `CircleCIAPIKey` object.\",\n \"enum\": [\n \"CircleCIAPIKey\"\n ],\n \"example\": \"CircleCIAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CIRCLECIAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `CircleCIIntegrationType` object.\",\n \"enum\": [\n \"CircleCI\"\n ],\n \"example\": \"CircleCI\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CIRCLECI\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `ClickupIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `ClickupCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `ClickupAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `ClickupAPIKey` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `ClickupAPIKey` object.\",\n \"enum\": [\n \"ClickupAPIKey\"\n ],\n \"example\": \"ClickupAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLICKUPAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `ClickupIntegrationType` object.\",\n \"enum\": [\n \"Clickup\"\n ],\n \"example\": \"Clickup\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLICKUP\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `CloudflareIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `CloudflareCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `CloudflareAPIToken` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `CloudflareAPIToken` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `CloudflareAPIToken` object.\",\n \"enum\": [\n \"CloudflareAPIToken\"\n ],\n \"example\": \"CloudflareAPIToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLAREAPITOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `CloudflareGlobalAPIToken` object.\",\n \"properties\": {\n \"auth_email\": {\n \"description\": \"The `CloudflareGlobalAPIToken` `auth_email`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"global_api_key\": {\n \"description\": \"The `CloudflareGlobalAPIToken` `global_api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `CloudflareGlobalAPIToken` object.\",\n \"enum\": [\n \"CloudflareGlobalAPIToken\"\n ],\n \"example\": \"CloudflareGlobalAPIToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLAREGLOBALAPITOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"auth_email\",\n \"global_api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `CloudflareIntegrationType` object.\",\n \"enum\": [\n \"Cloudflare\"\n ],\n \"example\": \"Cloudflare\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLARE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `ConfigCatIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `ConfigCatCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `ConfigCatSDKKey` object.\",\n \"properties\": {\n \"api_password\": {\n \"description\": \"The `ConfigCatSDKKey` `api_password`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"api_username\": {\n \"description\": \"The `ConfigCatSDKKey` `api_username`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"sdk_key\": {\n \"description\": \"The `ConfigCatSDKKey` `sdk_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `ConfigCatSDKKey` object.\",\n \"enum\": [\n \"ConfigCatSDKKey\"\n ],\n \"example\": \"ConfigCatSDKKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFIGCATSDKKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"sdk_key\",\n \"api_username\",\n \"api_password\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `ConfigCatIntegrationType` object.\",\n \"enum\": [\n \"ConfigCat\"\n ],\n \"example\": \"ConfigCat\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFIGCAT\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `DatadogIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `DatadogCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `DatadogAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `DatadogAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"app_key\": {\n \"description\": \"The `DatadogAPIKey` `app_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"datacenter\": {\n \"description\": \"The `DatadogAPIKey` `datacenter`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"subdomain\": {\n \"description\": \"Custom subdomain used for Datadog URLs generated with this Connection. For example, if this org uses `https://acme.datadoghq.com` to access Datadog, set this field to `acme`. If this field is omitted, generated URLs will use the default site URL for its datacenter (see [https://docs.datadoghq.com/getting_started/site](https://docs.datadoghq.com/getting_started/site)).\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `DatadogAPIKey` object.\",\n \"enum\": [\n \"DatadogAPIKey\"\n ],\n \"example\": \"DatadogAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOGAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"datacenter\",\n \"api_key\",\n \"app_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `DatadogIntegrationType` object.\",\n \"enum\": [\n \"Datadog\"\n ],\n \"example\": \"Datadog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `FastlyIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `FastlyCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `FastlyAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `FastlyAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `FastlyAPIKey` object.\",\n \"enum\": [\n \"FastlyAPIKey\"\n ],\n \"example\": \"FastlyAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLYAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `FastlyIntegrationType` object.\",\n \"enum\": [\n \"Fastly\"\n ],\n \"example\": \"Fastly\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `FreshserviceIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `FreshserviceCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `FreshserviceAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `FreshserviceAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"domain\": {\n \"description\": \"The `FreshserviceAPIKey` `domain`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `FreshserviceAPIKey` object.\",\n \"enum\": [\n \"FreshserviceAPIKey\"\n ],\n \"example\": \"FreshserviceAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FRESHSERVICEAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"domain\",\n \"api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `FreshserviceIntegrationType` object.\",\n \"enum\": [\n \"Freshservice\"\n ],\n \"example\": \"Freshservice\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FRESHSERVICE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GCPIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GCPCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GCPServiceAccount` object.\",\n \"properties\": {\n \"private_key\": {\n \"description\": \"The `GCPServiceAccount` `private_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"service_account_email\": {\n \"description\": \"The `GCPServiceAccount` `service_account_email`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GCPServiceAccount` object.\",\n \"enum\": [\n \"GCPServiceAccount\"\n ],\n \"example\": \"GCPServiceAccount\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCPSERVICEACCOUNT\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"service_account_email\",\n \"private_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GCPIntegrationType` object.\",\n \"enum\": [\n \"GCP\"\n ],\n \"example\": \"GCP\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GeminiIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GeminiCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GeminiAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `GeminiAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GeminiAPIKey` object.\",\n \"enum\": [\n \"GeminiAPIKey\"\n ],\n \"example\": \"GeminiAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GEMINIAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GeminiIntegrationType` object.\",\n \"enum\": [\n \"Gemini\"\n ],\n \"example\": \"Gemini\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GEMINI\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GitlabIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GitlabCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GitlabAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `GitlabAPIKey` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GitlabAPIKey` object.\",\n \"enum\": [\n \"GitlabAPIKey\"\n ],\n \"example\": \"GitlabAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GITLABAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GitlabIntegrationType` object.\",\n \"enum\": [\n \"Gitlab\"\n ],\n \"example\": \"Gitlab\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GITLAB\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GreyNoiseIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GreyNoiseCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GreyNoiseAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `GreyNoiseAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GreyNoiseAPIKey` object.\",\n \"enum\": [\n \"GreyNoiseAPIKey\"\n ],\n \"example\": \"GreyNoiseAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GREYNOISEAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GreyNoiseIntegrationType` object.\",\n \"enum\": [\n \"GreyNoise\"\n ],\n \"example\": \"GreyNoise\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GREYNOISE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of `HTTPIntegration` object.\",\n \"properties\": {\n \"base_url\": {\n \"description\": \"Base HTTP url for the integration\",\n \"example\": \"http://datadoghq.com\",\n \"type\": \"string\"\n },\n \"credentials\": {\n \"description\": \"The definition of `HTTPCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of `HTTPTokenAuth` object.\",\n \"properties\": {\n \"body\": {\n \"description\": \"The definition of `HTTPBody` object.\",\n \"properties\": {\n \"content\": {\n \"description\": \"Serialized body content\",\n \"example\": \"{\\\"some-json\\\": \\\"with-value\\\"}\",\n \"type\": \"string\"\n },\n \"content_type\": {\n \"description\": \"Content type of the body\",\n \"example\": \"application/json\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"description\": \"The `HTTPTokenAuth` `headers`.\",\n \"items\": {\n \"description\": \"The definition of `HTTPHeader` object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The `HTTPHeader` `name`.\",\n \"example\": \"MyHttpHeader\",\n \"pattern\": \"^[A-Za-z][A-Za-z\\\\\\\\d\\\\\\\\-\\\\\\\\_]*$\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `HTTPHeader` `value`.\",\n \"example\": \"Some header value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tokens\": {\n \"description\": \"The `HTTPTokenAuth` `tokens`.\",\n \"items\": {\n \"description\": \"The definition of `HTTPToken` object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The `HTTPToken` `name`.\",\n \"example\": \"MyToken\",\n \"pattern\": \"^[A-Za-z][A-Za-z\\\\\\\\d]*$\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `TokenType` object.\",\n \"enum\": [\n \"SECRET\"\n ],\n \"example\": \"SECRET\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SECRET\"\n ]\n },\n \"value\": {\n \"description\": \"The `HTTPToken` `value`.\",\n \"example\": \"Some Token Value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The definition of `HTTPTokenAuthType` object.\",\n \"enum\": [\n \"HTTPTokenAuth\"\n ],\n \"example\": \"HTTPTokenAuth\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTPTOKENAUTH\"\n ]\n },\n \"url_parameters\": {\n \"description\": \"The `HTTPTokenAuth` `url_parameters`.\",\n \"items\": {\n \"description\": \"The definition of `UrlParam` object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name for tokens.\",\n \"example\": \"MyTokenName\",\n \"pattern\": \"^[A-Za-z][A-Za-z\\\\\\\\d]*$\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `UrlParam` `value`.\",\n \"example\": \"Some Url Parameter value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of `HTTPIntegrationType` object.\",\n \"enum\": [\n \"HTTP\"\n ],\n \"example\": \"HTTP\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"base_url\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `LaunchDarklyIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `LaunchDarklyCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `LaunchDarklyAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `LaunchDarklyAPIKey` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `LaunchDarklyAPIKey` object.\",\n \"enum\": [\n \"LaunchDarklyAPIKey\"\n ],\n \"example\": \"LaunchDarklyAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LAUNCHDARKLYAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `LaunchDarklyIntegrationType` object.\",\n \"enum\": [\n \"LaunchDarkly\"\n ],\n \"example\": \"LaunchDarkly\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LAUNCHDARKLY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `NotionIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `NotionCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `NotionAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `NotionAPIKey` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `NotionAPIKey` object.\",\n \"enum\": [\n \"NotionAPIKey\"\n ],\n \"example\": \"NotionAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTIONAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `NotionIntegrationType` object.\",\n \"enum\": [\n \"Notion\"\n ],\n \"example\": \"Notion\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTION\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `OktaIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `OktaCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `OktaAPIToken` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `OktaAPIToken` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"domain\": {\n \"description\": \"The `OktaAPIToken` `domain`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `OktaAPIToken` object.\",\n \"enum\": [\n \"OktaAPIToken\"\n ],\n \"example\": \"OktaAPIToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OKTAAPITOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"domain\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `OktaIntegrationType` object.\",\n \"enum\": [\n \"Okta\"\n ],\n \"example\": \"Okta\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OKTA\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `OpenAIIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `OpenAICredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `OpenAIAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `OpenAIAPIKey` `api_token`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `OpenAIAPIKey` object.\",\n \"enum\": [\n \"OpenAIAPIKey\"\n ],\n \"example\": \"OpenAIAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPENAIAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_token\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `OpenAIIntegrationType` object.\",\n \"enum\": [\n \"OpenAI\"\n ],\n \"example\": \"OpenAI\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPENAI\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `ServiceNowIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `ServiceNowCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `ServiceNowBasicAuth` object.\",\n \"properties\": {\n \"instance\": {\n \"description\": \"The `ServiceNowBasicAuth` `instance`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"The `ServiceNowBasicAuth` `password`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `ServiceNowBasicAuth` object.\",\n \"enum\": [\n \"ServiceNowBasicAuth\"\n ],\n \"example\": \"ServiceNowBasicAuth\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SERVICENOWBASICAUTH\"\n ]\n },\n \"username\": {\n \"description\": \"The `ServiceNowBasicAuth` `username`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"instance\",\n \"username\",\n \"password\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `ServiceNowIntegrationType` object.\",\n \"enum\": [\n \"ServiceNow\"\n ],\n \"example\": \"ServiceNow\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SERVICENOW\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `SplitIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `SplitCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `SplitAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `SplitAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `SplitAPIKey` object.\",\n \"enum\": [\n \"SplitAPIKey\"\n ],\n \"example\": \"SplitAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLITAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `SplitIntegrationType` object.\",\n \"enum\": [\n \"Split\"\n ],\n \"example\": \"Split\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLIT\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `StatsigIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `StatsigCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `StatsigAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `StatsigAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `StatsigAPIKey` object.\",\n \"enum\": [\n \"StatsigAPIKey\"\n ],\n \"example\": \"StatsigAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STATSIGAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `StatsigIntegrationType` object.\",\n \"enum\": [\n \"Statsig\"\n ],\n \"example\": \"Statsig\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STATSIG\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `VirusTotalIntegration` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `VirusTotalCredentials` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `VirusTotalAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `VirusTotalAPIKey` `api_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `VirusTotalAPIKey` object.\",\n \"enum\": [\n \"VirusTotalAPIKey\"\n ],\n \"example\": \"VirusTotalAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"VIRUSTOTALAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"api_key\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `VirusTotalIntegrationType` object.\",\n \"enum\": [\n \"VirusTotal\"\n ],\n \"example\": \"VirusTotal\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"VIRUSTOTAL\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"credentials\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"Name of the connection\",\n \"example\": \"My AWS Connection\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"integration\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The connection identifier\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `ActionConnectionDataType` object.\",\n \"enum\": [\n \"action_connection\"\n ],\n \"example\": \"action_connection\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ACTION_CONNECTION\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateApmRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateApmRetentionFilter.json new file mode 100644 index 00000000..77dae7cd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateApmRetentionFilter.json @@ -0,0 +1,332 @@ +{ + "name": "CreateApmRetentionFilter", + "fully_qualified_name": "DatadogApi.CreateApmRetentionFilter@0.1.0", + "description": "Create a retention filter for indexing spans in Datadog.\n\nUse this tool to create a retention filter in Datadog that indexes spans within your organization. Note that default filters of types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be created. This tool returns the definition of the newly created retention filter.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "search_query", + "required": true, + "description": "The search query using span search syntax to define criteria for retention.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter.query" + }, + { + "name": "retention_filter_type", + "required": true, + "description": "Set the type of retention filter. Must be 'spans-sampling-processor'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans-sampling-processor" + ], + "properties": null, + "inner_properties": null, + "description": "The type of retention filter. The value should always be spans-sampling-processor." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter_type" + }, + { + "name": "retention_filter_name", + "required": true, + "description": "The name for the retention filter to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "span_sample_rate", + "required": true, + "description": "Sample rate for spans matching the query. A value of 1.0 processes all matching spans.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to spans going through this retention filter.\nA value of 1.0 keeps all spans matching the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.rate" + }, + { + "name": "resource_type", + "required": true, + "description": "Specify the type of the resource, always use 'apm_retention_filter'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "apm_retention_filter" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_retention_filter", + "required": true, + "description": "Set to true to enable the retention filter or false to disable it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable/Disable the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + }, + { + "name": "trace_sample_rate", + "required": false, + "description": "Sample rate for traces with spans going through the filter. Use 1.0 to keep all matching traces.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to traces containing spans going through this retention filter.\nA value of 1.0 keeps all traces with spans matching the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.trace_rate" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateApmRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/retention-filters", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.enabled", + "tool_parameter_name": "enable_retention_filter", + "description": "Enable/Disable the retention filter.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable/Disable the retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.filter.query", + "tool_parameter_name": "search_query", + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/)." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.filter_type", + "tool_parameter_name": "retention_filter_type", + "description": "The type of retention filter. The value should always be spans-sampling-processor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans-sampling-processor" + ], + "properties": null, + "inner_properties": null, + "description": "The type of retention filter. The value should always be spans-sampling-processor." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "spans-sampling-processor", + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "retention_filter_name", + "description": "The name of the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.rate", + "tool_parameter_name": "span_sample_rate", + "description": "Sample rate to apply to spans going through this retention filter.\nA value of 1.0 keeps all spans matching the query.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to spans going through this retention filter.\nA value of 1.0 keeps all spans matching the query." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.trace_rate", + "tool_parameter_name": "trace_sample_rate", + "description": "Sample rate to apply to traces containing spans going through this retention filter.\nA value of 1.0 keeps all traces with spans matching the query.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to traces containing spans going through this retention filter.\nA value of 1.0 keeps all traces with spans matching the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "apm_retention_filter" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "apm_retention_filter", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The body of the retention filter to be created.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The body of the retention filter to be created.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing the configuration of the retention filter to create/update.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Enable/Disable the retention filter.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"filter\": {\n \"description\": \"The spans filter. Spans matching this filter will be indexed and stored.\",\n \"properties\": {\n \"query\": {\n \"description\": \"The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).\",\n \"example\": \"@http.status_code:200 service:my-service\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"filter_type\": {\n \"default\": \"spans-sampling-processor\",\n \"description\": \"The type of retention filter. The value should always be spans-sampling-processor.\",\n \"enum\": [\n \"spans-sampling-processor\"\n ],\n \"example\": \"spans-sampling-processor\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPANS_SAMPLING_PROCESSOR\"\n ]\n },\n \"name\": {\n \"description\": \"The name of the retention filter.\",\n \"example\": \"my retention filter\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Sample rate to apply to spans going through this retention filter.\\nA value of 1.0 keeps all spans matching the query.\",\n \"example\": 1.0,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"trace_rate\": {\n \"description\": \"Sample rate to apply to traces containing spans going through this retention filter.\\nA value of 1.0 keeps all traces with spans matching the query.\",\n \"example\": 1.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"name\",\n \"filter\",\n \"enabled\",\n \"filter_type\",\n \"rate\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"apm_retention_filter\",\n \"description\": \"The type of the resource.\",\n \"enum\": [\n \"apm_retention_filter\"\n ],\n \"example\": \"apm_retention_filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"apm_retention_filter\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new retention filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAuthnMapping.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAuthnMapping.json new file mode 100644 index 00000000..45df5924 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAuthnMapping.json @@ -0,0 +1,232 @@ +{ + "name": "CreateAuthnMapping", + "fully_qualified_name": "DatadogApi.CreateAuthnMapping@0.1.0", + "description": "Creates a new AuthN Mapping in Datadog.\n\nThis tool calls the Datadog API to create a new AuthN Mapping. It should be used when you need to set up or configure authentication mappings in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "authn_mapping_data", + "required": true, + "description": "JSON object containing attributes and relationships for AuthN Mapping creation. Includes attribute_key, attribute_value, and type ('authn_mappings').", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attribute_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Key portion of a key/value pair of the attribute sent from the Identity Provider." + }, + "attribute_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value portion of a key/value pair of the attribute sent from the Identity Provider." + } + }, + "inner_properties": null, + "description": "Key/Value pair of attributes used for create request." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Relationship of AuthN Mapping create object to a Role or Team." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "authn_mappings" + ], + "properties": null, + "inner_properties": null, + "description": "AuthN Mappings resource type." + } + }, + "inner_properties": null, + "description": "Data for creating an AuthN Mapping." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateAuthNMapping'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/authn_mappings", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "authn_mapping_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attribute_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Key portion of a key/value pair of the attribute sent from the Identity Provider." + }, + "attribute_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value portion of a key/value pair of the attribute sent from the Identity Provider." + } + }, + "inner_properties": null, + "description": "Key/Value pair of attributes used for create request." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Relationship of AuthN Mapping create object to a Role or Team." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "authn_mappings" + ], + "properties": null, + "inner_properties": null, + "description": "AuthN Mappings resource type." + } + }, + "inner_properties": null, + "description": "Data for creating an AuthN Mapping." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating an AuthN Mapping.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data for creating an AuthN Mapping.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Key/Value pair of attributes used for create request.\",\n \"properties\": {\n \"attribute_key\": {\n \"description\": \"Key portion of a key/value pair of the attribute sent from the Identity Provider.\",\n \"example\": \"member-of\",\n \"type\": \"string\"\n },\n \"attribute_value\": {\n \"description\": \"Value portion of a key/value pair of the attribute sent from the Identity Provider.\",\n \"example\": \"Development\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationship of AuthN Mapping create object to a Role or Team.\",\n \"oneOf\": [\n {\n \"description\": \"Relationship of AuthN Mapping to a Role.\",\n \"properties\": {\n \"role\": {\n \"description\": \"Relationship to role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"role\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Relationship of AuthN Mapping to a Team.\",\n \"properties\": {\n \"team\": {\n \"description\": \"Relationship to team.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to Team object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the team.\",\n \"example\": \"f9bb8444-af7f-11ec-ac2c-da7ad0900001\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"team\",\n \"description\": \"Team type\",\n \"enum\": [\n \"team\"\n ],\n \"example\": \"team\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"team\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"default\": \"authn_mappings\",\n \"description\": \"AuthN Mappings resource type.\",\n \"enum\": [\n \"authn_mappings\"\n ],\n \"example\": \"authn_mappings\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AUTHN_MAPPINGS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAwsAccountIntegration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAwsAccountIntegration.json new file mode 100644 index 00000000..7b61ab7d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAwsAccountIntegration.json @@ -0,0 +1,640 @@ +{ + "name": "CreateAwsAccountIntegration", + "fully_qualified_name": "DatadogApi.CreateAwsAccountIntegration@0.1.0", + "description": "Create a new AWS Account Integration Config in Datadog.\n\nThis tool should be called when you need to integrate an AWS account with Datadog. It will set up a new AWS account configuration for monitoring and managing AWS services through Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_config", + "required": true, + "description": "JSON structure detailing the AWS account integration configuration, including account tags, authentication, region, logs, metrics, resources, and trace settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to apply to all hosts and metrics reporting for this account. Defaults to `[]`." + }, + "auth_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Authentication config." + }, + "aws_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Account ID." + }, + "aws_partition": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws", + "aws-cn", + "aws-us-gov" + ], + "properties": null, + "inner_properties": null, + "description": "AWS partition your AWS account is scoped to. Defaults to `aws`.\nSee [Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) in the AWS documentation for more information." + }, + "aws_regions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Regions to collect data from. Defaults to `include_all`." + }, + "logs_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambda_forwarder": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambdas": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to `[]`." + }, + "log_source_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS log source to which the tag filters defined in `tags` are applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the log source specified by `source`." + } + }, + "description": "List of AWS log source tag filters. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "Log source configuration." + }, + "sources": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of service IDs set to enable automatic log collection. Discover the list of available services with the\n[Get list of AWS log ready services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) endpoint." + } + }, + "inner_properties": null, + "description": "Log Autosubscription configuration for Datadog Forwarder Lambda functions. Automatically set up triggers for existing\nand new logs for some services, ensuring no logs from new resources are missed and saving time spent on manual configuration." + } + }, + "inner_properties": null, + "description": "AWS Logs Collection config." + }, + "metrics_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "automute_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable EC2 automute for AWS metrics. Defaults to `true`." + }, + "collect_cloudwatch_alarms": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable CloudWatch alarms collection. Defaults to `false`." + }, + "collect_custom_metrics": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable custom metrics collection. Defaults to `false`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable AWS metrics collection. Defaults to `true`." + }, + "namespace_filters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Metrics namespace filters. Defaults to `exclude_only`." + }, + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "namespace": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS service for which the tag filters defined in `tags` will be applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the service specified by `namespace`." + } + }, + "description": "AWS Metrics collection tag filters list. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "AWS Metrics Collection config." + }, + "resources_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cloud_security_posture_management_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Defaults to `false`. Requires `extended_collection` to be set to `true`." + }, + "extended_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Defaults to `true`. Required for `cloud_security_posture_management_collection`." + } + }, + "inner_properties": null, + "description": "AWS Resources Collection config." + }, + "traces_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "xray_services": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS X-Ray services to collect traces from. Defaults to `include_only`." + } + }, + "inner_properties": null, + "description": "AWS Traces Collection config." + } + }, + "inner_properties": null, + "description": "The AWS Account Integration Config to be created." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "account" + ], + "properties": null, + "inner_properties": null, + "description": "AWS Account resource type." + } + }, + "inner_properties": null, + "description": "AWS Account Create Request data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateAWSAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/accounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "aws_account_config", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to apply to all hosts and metrics reporting for this account. Defaults to `[]`." + }, + "auth_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Authentication config." + }, + "aws_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Account ID." + }, + "aws_partition": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws", + "aws-cn", + "aws-us-gov" + ], + "properties": null, + "inner_properties": null, + "description": "AWS partition your AWS account is scoped to. Defaults to `aws`.\nSee [Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) in the AWS documentation for more information." + }, + "aws_regions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Regions to collect data from. Defaults to `include_all`." + }, + "logs_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambda_forwarder": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambdas": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to `[]`." + }, + "log_source_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS log source to which the tag filters defined in `tags` are applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the log source specified by `source`." + } + }, + "description": "List of AWS log source tag filters. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "Log source configuration." + }, + "sources": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of service IDs set to enable automatic log collection. Discover the list of available services with the\n[Get list of AWS log ready services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) endpoint." + } + }, + "inner_properties": null, + "description": "Log Autosubscription configuration for Datadog Forwarder Lambda functions. Automatically set up triggers for existing\nand new logs for some services, ensuring no logs from new resources are missed and saving time spent on manual configuration." + } + }, + "inner_properties": null, + "description": "AWS Logs Collection config." + }, + "metrics_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "automute_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable EC2 automute for AWS metrics. Defaults to `true`." + }, + "collect_cloudwatch_alarms": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable CloudWatch alarms collection. Defaults to `false`." + }, + "collect_custom_metrics": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable custom metrics collection. Defaults to `false`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable AWS metrics collection. Defaults to `true`." + }, + "namespace_filters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Metrics namespace filters. Defaults to `exclude_only`." + }, + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "namespace": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS service for which the tag filters defined in `tags` will be applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the service specified by `namespace`." + } + }, + "description": "AWS Metrics collection tag filters list. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "AWS Metrics Collection config." + }, + "resources_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cloud_security_posture_management_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Defaults to `false`. Requires `extended_collection` to be set to `true`." + }, + "extended_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Defaults to `true`. Required for `cloud_security_posture_management_collection`." + } + }, + "inner_properties": null, + "description": "AWS Resources Collection config." + }, + "traces_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "xray_services": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS X-Ray services to collect traces from. Defaults to `include_only`." + } + }, + "inner_properties": null, + "description": "AWS Traces Collection config." + } + }, + "inner_properties": null, + "description": "The AWS Account Integration Config to be created." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "account" + ], + "properties": null, + "inner_properties": null, + "description": "AWS Account resource type." + } + }, + "inner_properties": null, + "description": "AWS Account Create Request data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"AWS Account Create Request body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"AWS Account Create Request data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The AWS Account Integration Config to be created.\",\n \"properties\": {\n \"account_tags\": {\n \"description\": \"Tags to apply to all hosts and metrics reporting for this account. Defaults to `[]`.\",\n \"items\": {\n \"description\": \"Tag in the form `key:value`.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"auth_config\": {\n \"description\": \"AWS Authentication config.\",\n \"oneOf\": [\n {\n \"description\": \"AWS Authentication config to integrate your account using an access key pair.\",\n \"properties\": {\n \"access_key_id\": {\n \"description\": \"AWS Access Key ID.\",\n \"example\": \"AKIAIOSFODNN7EXAMPLE\",\n \"type\": \"string\"\n },\n \"secret_access_key\": {\n \"description\": \"AWS Secret Access Key.\",\n \"example\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\",\n \"minLength\": 1,\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"required\": [\n \"access_key_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"AWS Authentication config to integrate your account using an IAM role.\",\n \"properties\": {\n \"external_id\": {\n \"description\": \"AWS IAM External ID for associated role.\",\n \"type\": \"string\"\n },\n \"role_name\": {\n \"description\": \"AWS IAM Role name.\",\n \"example\": \"DatadogIntegrationRole\",\n \"maxLength\": 576,\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role_name\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"aws_account_id\": {\n \"description\": \"AWS Account ID.\",\n \"example\": \"123456789012\",\n \"type\": \"string\"\n },\n \"aws_partition\": {\n \"description\": \"AWS partition your AWS account is scoped to. Defaults to `aws`.\\nSee [Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) in the AWS documentation for more information.\",\n \"enum\": [\n \"aws\",\n \"aws-cn\",\n \"aws-us-gov\"\n ],\n \"example\": \"aws\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS\",\n \"AWS_CN\",\n \"AWS_US_GOV\"\n ]\n },\n \"aws_regions\": {\n \"description\": \"AWS Regions to collect data from. Defaults to `include_all`.\",\n \"oneOf\": [\n {\n \"description\": \"Include all regions. Defaults to `true`.\",\n \"properties\": {\n \"include_all\": {\n \"description\": \"Include all regions.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"include_all\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Include only these regions.\",\n \"properties\": {\n \"include_only\": {\n \"description\": \"Include only these regions.\",\n \"example\": [\n \"us-east-1\"\n ],\n \"items\": {\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"include_only\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"logs_config\": {\n \"description\": \"AWS Logs Collection config.\",\n \"properties\": {\n \"lambda_forwarder\": {\n \"description\": \"Log Autosubscription configuration for Datadog Forwarder Lambda functions. Automatically set up triggers for existing\\nand new logs for some services, ensuring no logs from new resources are missed and saving time spent on manual configuration.\",\n \"properties\": {\n \"lambdas\": {\n \"description\": \"List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to `[]`.\",\n \"items\": {\n \"example\": \"arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"log_source_config\": {\n \"description\": \"Log source configuration.\",\n \"properties\": {\n \"tag_filters\": {\n \"description\": \"List of AWS log source tag filters. Defaults to `[]`.\",\n \"items\": {\n \"description\": \"AWS log source tag filter list. Defaults to `[]`.\\nArray of log source to AWS resource tag mappings. Each mapping contains a log source and its associated AWS resource tags (in `key:value` format) used to filter logs submitted to Datadog.\\nTag filters are applied for tags on the AWS resource emitting logs; tags associated with the log storage entity (such as a CloudWatch Log Group or S3 Bucket) are not considered.\\nFor more information on resource tag filter syntax, [see AWS resource exclusion](https://docs.datadoghq.com/account_management/billing/aws/#aws-resource-exclusion) in the AWS integration billing page.\",\n \"properties\": {\n \"source\": {\n \"description\": \"The AWS log source to which the tag filters defined in `tags` are applied.\",\n \"example\": \"s3\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The AWS resource tags to filter on for the log source specified by `source`.\",\n \"items\": {\n \"description\": \"Tag in the form `key:value`.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"sources\": {\n \"description\": \"List of service IDs set to enable automatic log collection. Discover the list of available services with the\\n[Get list of AWS log ready services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) endpoint.\",\n \"items\": {\n \"example\": \"s3\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics_config\": {\n \"description\": \"AWS Metrics Collection config.\",\n \"properties\": {\n \"automute_enabled\": {\n \"description\": \"Enable EC2 automute for AWS metrics. Defaults to `true`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"collect_cloudwatch_alarms\": {\n \"description\": \"Enable CloudWatch alarms collection. Defaults to `false`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"collect_custom_metrics\": {\n \"description\": \"Enable custom metrics collection. Defaults to `false`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"description\": \"Enable AWS metrics collection. Defaults to `true`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"namespace_filters\": {\n \"description\": \"AWS Metrics namespace filters. Defaults to `exclude_only`.\",\n \"oneOf\": [\n {\n \"description\": \"Exclude only these namespaces from metrics collection. Defaults to `[\\\"AWS/SQS\\\", \\\"AWS/ElasticMapReduce\\\", \\\"AWS/Usage\\\"]`.\\n`AWS/SQS`, `AWS/ElasticMapReduce`, and `AWS/Usage` are excluded by default to reduce your AWS CloudWatch costs from `GetMetricData` API calls.\",\n \"properties\": {\n \"exclude_only\": {\n \"description\": \"Exclude only these namespaces from metrics collection. Defaults to `[\\\"AWS/SQS\\\", \\\"AWS/ElasticMapReduce\\\", \\\"AWS/Usage\\\"]`.\\n`AWS/SQS`, `AWS/ElasticMapReduce`, and `AWS/Usage` are excluded by default to reduce your AWS CloudWatch costs from `GetMetricData` API calls.\",\n \"example\": [\n \"AWS/SQS\",\n \"AWS/ElasticMapReduce\",\n \"AWS/Usage\"\n ],\n \"items\": {\n \"example\": \"AWS/SQS\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"exclude_only\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Include only these namespaces.\",\n \"properties\": {\n \"include_only\": {\n \"description\": \"Include only these namespaces.\",\n \"example\": [\n \"AWS/EC2\"\n ],\n \"items\": {\n \"example\": \"AWS/EC2\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"include_only\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"tag_filters\": {\n \"description\": \"AWS Metrics collection tag filters list. Defaults to `[]`.\",\n \"items\": {\n \"description\": \"AWS Metrics Collection tag filters list. Defaults to `[]`.\\nThe array of custom AWS resource tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from a specified service.\\nWildcards, such as `?` (match a single character) and `*` (match multiple characters), and exclusion using `!` before the tag are supported.\\nFor EC2, only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored.\\nFor example, `env:production,instance-type:c?.*,!region:us-east-1`.\",\n \"properties\": {\n \"namespace\": {\n \"description\": \"The AWS service for which the tag filters defined in `tags` will be applied.\",\n \"example\": \"AWS/EC2\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The AWS resource tags to filter on for the service specified by `namespace`.\",\n \"items\": {\n \"description\": \"Tag in the form `key:value`.\",\n \"example\": \"datadog:true\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"resources_config\": {\n \"description\": \"AWS Resources Collection config.\",\n \"properties\": {\n \"cloud_security_posture_management_collection\": {\n \"description\": \"Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Defaults to `false`. Requires `extended_collection` to be set to `true`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"extended_collection\": {\n \"description\": \"Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Defaults to `true`. Required for `cloud_security_posture_management_collection`.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"traces_config\": {\n \"description\": \"AWS Traces Collection config.\",\n \"properties\": {\n \"xray_services\": {\n \"description\": \"AWS X-Ray services to collect traces from. Defaults to `include_only`.\",\n \"oneOf\": [\n {\n \"description\": \"Include all services.\",\n \"properties\": {\n \"include_all\": {\n \"description\": \"Include all services.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"include_all\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Include only these services. Defaults to `[]`.\",\n \"nullable\": true,\n \"properties\": {\n \"include_only\": {\n \"description\": \"Include only these services.\",\n \"example\": [\n \"AWS/AppSync\"\n ],\n \"items\": {\n \"example\": \"AWS/AppSync\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"include_only\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"aws_account_id\",\n \"aws_partition\",\n \"auth_config\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"account\",\n \"description\": \"AWS Account resource type.\",\n \"enum\": [\n \"account\"\n ],\n \"example\": \"account\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ACCOUNT\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAwsCurConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAwsCurConfig.json new file mode 100644 index 00000000..243ffe02 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAwsCurConfig.json @@ -0,0 +1,427 @@ +{ + "name": "CreateAwsCurConfig", + "fully_qualified_name": "DatadogApi.CreateAwsCurConfig@0.1.0", + "description": "Create an AWS CUR config for Cloud Cost Management.\n\nUse this tool to create a Cloud Cost Management account for an AWS Cost and Usage Report (CUR) configuration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_cur_config_type", + "required": true, + "description": "Type of AWS CUR config post request. Choose from available options: 'aws_cur_config_post_request'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_cur_config_post_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of AWS CUR config Post Request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "excluded_aws_account_ids", + "required": false, + "description": "List of AWS account IDs to exclude from the billing dataset. Used when `include_new_accounts` is `true`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.account_filters.excluded_accounts" + }, + { + "name": "included_aws_account_ids", + "required": false, + "description": "List of AWS account IDs to be included in the billing dataset, used when `include_new_accounts` is `false`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.account_filters.included_accounts" + }, + { + "name": "aws_account_id", + "required": false, + "description": "The AWS account ID for which the CUR config is created. This is required to specify which AWS account the configuration applies to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.account_id" + }, + { + "name": "aws_bucket_name_for_cur", + "required": false, + "description": "The AWS bucket name used to store the Cost and Usage Report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS bucket name used to store the Cost and Usage Report." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.bucket_name" + }, + { + "name": "bucket_region", + "required": false, + "description": "The AWS region where the bucket is located.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region the bucket is located in." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.bucket_region" + }, + { + "name": "report_month", + "required": false, + "description": "Specify the month for the AWS Cost and Usage Report. Use an integer (1-12) to represent the month.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The month of the report." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.months" + }, + { + "name": "report_name", + "required": false, + "description": "The name of the Cost and Usage Report to create for AWS CUR configuration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Cost and Usage Report." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.report_name" + }, + { + "name": "report_prefix", + "required": false, + "description": "The prefix for the Cost and Usage Report (CUR).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The report prefix used for the Cost and Usage Report." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.report_prefix" + }, + { + "name": "include_new_member_accounts", + "required": false, + "description": "Set to true to automatically include new member accounts by default in your billing dataset.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to automatically include new member accounts by default in your billing dataset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.account_filters.include_new_accounts" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCostAWSCURConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/aws_cur_config", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.account_filters.excluded_accounts", + "tool_parameter_name": "excluded_aws_account_ids", + "description": "The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.account_filters.include_new_accounts", + "tool_parameter_name": "include_new_member_accounts", + "description": "Whether or not to automatically include new member accounts by default in your billing dataset.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to automatically include new member accounts by default in your billing dataset." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.account_filters.included_accounts", + "tool_parameter_name": "included_aws_account_ids", + "description": "The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.account_id", + "tool_parameter_name": "aws_account_id", + "description": "The AWS account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.bucket_name", + "tool_parameter_name": "aws_bucket_name_for_cur", + "description": "The AWS bucket name used to store the Cost and Usage Report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS bucket name used to store the Cost and Usage Report." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.bucket_region", + "tool_parameter_name": "bucket_region", + "description": "The region the bucket is located in.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The region the bucket is located in." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.months", + "tool_parameter_name": "report_month", + "description": "The month of the report.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The month of the report." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.report_name", + "tool_parameter_name": "report_name", + "description": "The name of the Cost and Usage Report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Cost and Usage Report." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.report_prefix", + "tool_parameter_name": "report_prefix", + "description": "The report prefix used for the Cost and Usage Report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The report prefix used for the Cost and Usage Report." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "aws_cur_config_type", + "description": "Type of AWS CUR config Post Request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_cur_config_post_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of AWS CUR config Post Request." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "aws_cur_config_post_request", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"AWS CUR config Post Request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"AWS CUR config Post data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for AWS CUR config Post Request.\",\n \"properties\": {\n \"account_filters\": {\n \"description\": \"The account filtering configuration.\",\n \"properties\": {\n \"excluded_accounts\": {\n \"description\": \"The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`.\",\n \"example\": [\n \"123456789123\",\n \"123456789143\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"include_new_accounts\": {\n \"description\": \"Whether or not to automatically include new member accounts by default in your billing dataset.\",\n \"example\": true,\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"included_accounts\": {\n \"description\": \"The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`.\",\n \"example\": [\n \"123456789123\",\n \"123456789143\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"account_id\": {\n \"description\": \"The AWS account ID.\",\n \"example\": \"123456789123\",\n \"type\": \"string\"\n },\n \"bucket_name\": {\n \"description\": \"The AWS bucket name used to store the Cost and Usage Report.\",\n \"example\": \"dd-cost-bucket\",\n \"type\": \"string\"\n },\n \"bucket_region\": {\n \"description\": \"The region the bucket is located in.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"months\": {\n \"description\": \"The month of the report.\",\n \"format\": \"int32\",\n \"maximum\": 36,\n \"type\": \"integer\"\n },\n \"report_name\": {\n \"description\": \"The name of the Cost and Usage Report.\",\n \"example\": \"dd-report-name\",\n \"type\": \"string\"\n },\n \"report_prefix\": {\n \"description\": \"The report prefix used for the Cost and Usage Report.\",\n \"example\": \"dd-report-prefix\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"account_id\",\n \"bucket_name\",\n \"report_name\",\n \"report_prefix\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"aws_cur_config_post_request\",\n \"description\": \"Type of AWS CUR config Post Request.\",\n \"enum\": [\n \"aws_cur_config_post_request\"\n ],\n \"example\": \"aws_cur_config_post_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS_CUR_CONFIG_POST_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAzureCostManagementAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAzureCostManagementAccount.json new file mode 100644 index 00000000..d992ea94 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateAzureCostManagementAccount.json @@ -0,0 +1,396 @@ +{ + "name": "CreateAzureCostManagementAccount", + "fully_qualified_name": "DatadogApi.CreateAzureCostManagementAccount@0.1.0", + "description": "Create a Cloud Cost Management account for Azure.\n\nUse this tool to set up a Cloud Cost Management account for an Azure configuration using Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "azure_config_post_data", + "required": true, + "description": "JSON object containing Azure account details including account_id, client_id, scope, and bill configurations.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "The tenant ID of the Azure account." + }, + "actual_bill_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "export_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the configured Azure Export." + }, + "export_path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path where the Azure Export is saved." + }, + "storage_account": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage account where the Azure Export is saved." + }, + "storage_container": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage container where the Azure Export is saved." + } + }, + "inner_properties": null, + "description": "Bill config." + }, + "amortized_bill_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "export_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the configured Azure Export." + }, + "export_path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path where the Azure Export is saved." + }, + "storage_account": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage account where the Azure Export is saved." + }, + "storage_container": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage container where the Azure Export is saved." + } + }, + "inner_properties": null, + "description": "Bill config." + }, + "client_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client ID of the Azure account." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of your observed subscription." + } + }, + "inner_properties": null, + "description": "Attributes for Azure config Post Request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_uc_config_post_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Azure config Post Request." + } + }, + "inner_properties": null, + "description": "Azure config Post data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCostAzureUCConfigs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/azure_uc_config", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "azure_config_post_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "The tenant ID of the Azure account." + }, + "actual_bill_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "export_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the configured Azure Export." + }, + "export_path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path where the Azure Export is saved." + }, + "storage_account": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage account where the Azure Export is saved." + }, + "storage_container": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage container where the Azure Export is saved." + } + }, + "inner_properties": null, + "description": "Bill config." + }, + "amortized_bill_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "export_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the configured Azure Export." + }, + "export_path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path where the Azure Export is saved." + }, + "storage_account": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage account where the Azure Export is saved." + }, + "storage_container": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the storage container where the Azure Export is saved." + } + }, + "inner_properties": null, + "description": "Bill config." + }, + "client_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client ID of the Azure account." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of your observed subscription." + } + }, + "inner_properties": null, + "description": "Attributes for Azure config Post Request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_uc_config_post_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Azure config Post Request." + } + }, + "inner_properties": null, + "description": "Azure config Post data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Azure config Post Request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Azure config Post data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for Azure config Post Request.\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"The tenant ID of the Azure account.\",\n \"example\": \"1234abcd-1234-abcd-1234-1234abcd1234\",\n \"type\": \"string\"\n },\n \"actual_bill_config\": {\n \"description\": \"Bill config.\",\n \"properties\": {\n \"export_name\": {\n \"description\": \"The name of the configured Azure Export.\",\n \"example\": \"dd-actual-export\",\n \"type\": \"string\"\n },\n \"export_path\": {\n \"description\": \"The path where the Azure Export is saved.\",\n \"example\": \"dd-export-path\",\n \"type\": \"string\"\n },\n \"storage_account\": {\n \"description\": \"The name of the storage account where the Azure Export is saved.\",\n \"example\": \"dd-storage-account\",\n \"type\": \"string\"\n },\n \"storage_container\": {\n \"description\": \"The name of the storage container where the Azure Export is saved.\",\n \"example\": \"dd-storage-container\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"export_name\",\n \"export_path\",\n \"storage_account\",\n \"storage_container\"\n ],\n \"type\": \"object\"\n },\n \"amortized_bill_config\": {\n \"description\": \"Bill config.\",\n \"properties\": {\n \"export_name\": {\n \"description\": \"The name of the configured Azure Export.\",\n \"example\": \"dd-actual-export\",\n \"type\": \"string\"\n },\n \"export_path\": {\n \"description\": \"The path where the Azure Export is saved.\",\n \"example\": \"dd-export-path\",\n \"type\": \"string\"\n },\n \"storage_account\": {\n \"description\": \"The name of the storage account where the Azure Export is saved.\",\n \"example\": \"dd-storage-account\",\n \"type\": \"string\"\n },\n \"storage_container\": {\n \"description\": \"The name of the storage container where the Azure Export is saved.\",\n \"example\": \"dd-storage-container\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"export_name\",\n \"export_path\",\n \"storage_account\",\n \"storage_container\"\n ],\n \"type\": \"object\"\n },\n \"client_id\": {\n \"description\": \"The client ID of the Azure account.\",\n \"example\": \"1234abcd-1234-abcd-1234-1234abcd1234\",\n \"type\": \"string\"\n },\n \"scope\": {\n \"description\": \"The scope of your observed subscription.\",\n \"example\": \"/subscriptions/1234abcd-1234-abcd-1234-1234abcd1234\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"account_id\",\n \"actual_bill_config\",\n \"amortized_bill_config\",\n \"client_id\",\n \"scope\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"azure_uc_config_post_request\",\n \"description\": \"Type of Azure config Post Request.\",\n \"enum\": [\n \"azure_uc_config_post_request\"\n ],\n \"example\": \"azure_uc_config_post_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE_UC_CONFIG_POST_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCaseTypeInDatadog.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCaseTypeInDatadog.json new file mode 100644 index 00000000..88548b91 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCaseTypeInDatadog.json @@ -0,0 +1,262 @@ +{ + "name": "CreateCaseTypeInDatadog", + "fully_qualified_name": "DatadogApi.CreateCaseTypeInDatadog@0.1.0", + "description": "Initiate the creation of a new case type in Datadog.\n\nUse this tool to create a new case type in Datadog, enabling structured classification and management of cases within the platform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_type_name", + "required": true, + "description": "Specify the name of the case type to be created in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "case_type_resource_type", + "required": true, + "description": "Specify the resource type for the case. Must be 'case_type'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case_type" + ], + "properties": null, + "inner_properties": null, + "description": "Case type resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "case_type_deleted_timestamp", + "required": false, + "description": "Timestamp indicating when the case type was deleted. Format should be a valid ISO 8601 string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp of when the case type was deleted" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.deleted_at" + }, + { + "name": "case_type_description", + "required": false, + "description": "A brief textual description of the case type to be created in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type description." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "case_type_emoji", + "required": false, + "description": "Emoji representing the case type. Use a short, descriptive Unicode emoji.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type emoji." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.emoji" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCaseType'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/types", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.deleted_at", + "tool_parameter_name": "case_type_deleted_timestamp", + "description": "Timestamp of when the case type was deleted", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp of when the case type was deleted" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "case_type_description", + "description": "Case type description.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type description." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.emoji", + "tool_parameter_name": "case_type_emoji", + "description": "Case type emoji.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type emoji." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "case_type_name", + "description": "Case type name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type name." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_type_resource_type", + "description": "Case type resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case_type" + ], + "properties": null, + "inner_properties": null, + "description": "Case type resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case_type", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case type create request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case type\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case Type resource attributes\",\n \"properties\": {\n \"deleted_at\": {\n \"description\": \"Timestamp of when the case type was deleted\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Case type description.\",\n \"example\": \"Investigations done in case management\",\n \"type\": \"string\"\n },\n \"emoji\": {\n \"description\": \"Case type emoji.\",\n \"example\": \"\\ud83d\\udd75\\ud83c\\udffb\\u200d\\u2642\\ufe0f\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Case type name.\",\n \"example\": \"Investigation\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case_type\",\n \"description\": \"Case type resource type\",\n \"enum\": [\n \"case_type\"\n ],\n \"example\": \"case_type\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE_TYPE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case type payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCloudWorkloadSecurityAgentRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCloudWorkloadSecurityAgentRule.json new file mode 100644 index 00000000..14f71536 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCloudWorkloadSecurityAgentRule.json @@ -0,0 +1,704 @@ +{ + "name": "CreateCloudWorkloadSecurityAgentRule", + "fully_qualified_name": "DatadogApi.CreateCloudWorkloadSecurityAgentRule@0.1.0", + "description": "Create a new cloud workload security agent rule.\n\nThis tool creates a new security agent rule for cloud workload monitoring. It should be called when there is a need to set up or update security rules specifically for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_definition", + "required": true, + "description": "JSON object defining the new cloud workload security agent rule. Include attributes like actions, description, name, and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent." + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule." + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled." + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule." + }, + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The platforms the Agent rule is supported on." + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Agent rule." + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved." + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule." + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Create a new Cloud Workload Security Agent rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "The definition of the new agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCloudWorkloadSecurityAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "agent_rule_definition", + "description": "The definition of the new agent rule", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent." + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule." + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled." + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule." + }, + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The platforms the Agent rule is supported on." + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Agent rule." + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved." + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule." + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Create a new Cloud Workload Security Agent rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "The definition of the new agent rule" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the Agent rule to create\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single Agent rule\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Create a new Cloud Workload Security Agent rule.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"The array of actions the rule can perform if triggered\",\n \"items\": {\n \"description\": \"The action the rule can perform if triggered\",\n \"properties\": {\n \"filter\": {\n \"description\": \"SECL expression used to target the container to apply the action on\",\n \"type\": \"string\"\n },\n \"hash\": {\n \"additionalProperties\": {},\n \"description\": \"An empty object indicating the hash action\",\n \"type\": \"object\"\n },\n \"kill\": {\n \"description\": \"Kill system call applied on the container matching the rule\",\n \"properties\": {\n \"signal\": {\n \"description\": \"Supported signals for the kill system call\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"The metadata action applied on the scope matching the rule\",\n \"properties\": {\n \"image_tag\": {\n \"description\": \"The image tag of the metadata action\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The service of the metadata action\",\n \"type\": \"string\"\n },\n \"short_image\": {\n \"description\": \"The short image of the metadata action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"set\": {\n \"description\": \"The set action applied on the scope matching the rule\",\n \"properties\": {\n \"append\": {\n \"description\": \"Whether the value should be appended to the field.\",\n \"type\": \"boolean\"\n },\n \"default_value\": {\n \"description\": \"The default value of the set action\",\n \"type\": \"string\"\n },\n \"expression\": {\n \"description\": \"The expression of the set action.\",\n \"type\": \"string\"\n },\n \"field\": {\n \"description\": \"The field of the set action\",\n \"type\": \"string\"\n },\n \"inherited\": {\n \"description\": \"Whether the value should be inherited.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The name of the set action\",\n \"type\": \"string\"\n },\n \"scope\": {\n \"description\": \"The scope of the set action.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"The size of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"ttl\": {\n \"description\": \"The time to live of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"The value of the set action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"agent_version\": {\n \"description\": \"Constrain the rule to specific versions of the Datadog Agent.\",\n \"type\": \"string\"\n },\n \"blocking\": {\n \"description\": \"The blocking policies that the rule belongs to.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"The description of the Agent rule.\",\n \"example\": \"My Agent rule\",\n \"type\": \"string\"\n },\n \"disabled\": {\n \"description\": \"The disabled policies that the rule belongs to.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"Whether the Agent rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"expression\": {\n \"description\": \"The SECL expression of the Agent rule.\",\n \"example\": \"exec.file.name == \\\"sh\\\"\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"The platforms the Agent rule is supported on.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"monitoring\": {\n \"description\": \"The monitoring policies that the rule belongs to.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the Agent rule.\",\n \"example\": \"my_agent_rule\",\n \"type\": \"string\"\n },\n \"policy_id\": {\n \"description\": \"The ID of the policy where the Agent rule is saved.\",\n \"example\": \"a8c8e364-6556-434d-b798-a4c23de29c0b\",\n \"type\": \"string\"\n },\n \"product_tags\": {\n \"description\": \"The list of product tags associated with the rule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"silent\": {\n \"description\": \"Whether the rule is silent.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"agent_rule\",\n \"description\": \"The type of the resource, must always be `agent_rule`\",\n \"enum\": [\n \"agent_rule\"\n ],\n \"example\": \"agent_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AGENT_RULE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new agent rule\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCloudflareAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCloudflareAccount.json new file mode 100644 index 00000000..a8f74c63 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCloudflareAccount.json @@ -0,0 +1,295 @@ +{ + "name": "CreateCloudflareAccount", + "fully_qualified_name": "DatadogApi.CreateCloudflareAccount@0.1.0", + "description": "Create a Cloudflare account through Datadog integration.\n\nThis tool is used to create a Cloudflare account using Datadog's integration API. It should be called when you wish to initiate a new Cloudflare account while leveraging Datadog services.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloudflare_api_key", + "required": true, + "description": "The API key or token for the Cloudflare account required to authenticate and connect with the Cloudflare service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key (or token) for the Cloudflare account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.api_key" + }, + { + "name": "cloudflare_account_name", + "required": true, + "description": "The name for the Cloudflare account to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Cloudflare account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "json_api_type", + "required": true, + "description": "Specifies the JSON:API type, must be 'cloudflare-accounts'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloudflare-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `cloudflare-accounts`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "cloudflare_account_email", + "required": false, + "description": "The email associated with the Cloudflare account. Required if using an API key instead of a token.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.email" + }, + { + "name": "resources_allowlist", + "required": false, + "description": "List of resources such as 'web', 'dns', 'lb', or 'worker' to restrict metric pulling.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.resources" + }, + { + "name": "zone_allowlist", + "required": false, + "description": "A list of zones for restricting metric data collection.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of zones to restrict pulling metrics for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.zones" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCloudflareAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.api_key", + "tool_parameter_name": "cloudflare_api_key", + "description": "The API key (or token) for the Cloudflare account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key (or token) for the Cloudflare account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.email", + "tool_parameter_name": "cloudflare_account_email", + "description": "The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "cloudflare_account_name", + "description": "The name of the Cloudflare account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Cloudflare account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.resources", + "tool_parameter_name": "resources_allowlist", + "description": "An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.zones", + "tool_parameter_name": "zone_allowlist", + "description": "An allowlist of zones to restrict pulling metrics for.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of zones to restrict pulling metrics for." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "json_api_type", + "description": "The JSON:API type for this API. Should always be `cloudflare-accounts`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloudflare-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `cloudflare-accounts`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "cloudflare-accounts", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema when adding a Cloudflare account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for creating a Cloudflare account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for creating a Cloudflare account.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key (or token) for the Cloudflare account.\",\n \"example\": \"a94a8fe5ccb19ba61c4c0873d391e987982fbbd3\",\n \"type\": \"string\"\n },\n \"email\": {\n \"description\": \"The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required.\",\n \"example\": \"test-email@example.com\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the Cloudflare account.\",\n \"example\": \"test-name\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`.\",\n \"example\": [\n \"web\",\n \"dns\",\n \"lb\",\n \"worker\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"zones\": {\n \"description\": \"An allowlist of zones to restrict pulling metrics for.\",\n \"example\": [\n \"zone_id_1\",\n \"zone_id_2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"api_key\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"cloudflare-accounts\",\n \"description\": \"The JSON:API type for this API. Should always be `cloudflare-accounts`.\",\n \"enum\": [\n \"cloudflare-accounts\"\n ],\n \"example\": \"cloudflare-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLARE_ACCOUNTS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateConfluentAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateConfluentAccount.json new file mode 100644 index 00000000..ed488915 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateConfluentAccount.json @@ -0,0 +1,314 @@ +{ + "name": "CreateConfluentAccount", + "fully_qualified_name": "DatadogApi.CreateConfluentAccount@0.1.0", + "description": "Create a Confluent account on Datadog.\n\nUse this tool to create a new Confluent account within the Datadog platform. Ideal for setting up new Confluent integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_payload", + "required": true, + "description": "JSON payload containing attributes for the Confluent account such as API key, API secret, and resources.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "api_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key associated with your Confluent account." + }, + "api_secret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API secret associated with your Confluent account." + }, + "resources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "enable_custom_metrics": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID associated with a Confluent resource." + }, + "resource_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + } + }, + "description": "A list of Confluent resources associated with the Confluent account." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + } + }, + "inner_properties": null, + "description": "Attributes associated with the account creation request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `confluent-cloud-accounts`." + } + }, + "inner_properties": null, + "description": "The data body for adding a Confluent account." + } + }, + "inner_properties": null, + "description": "Confluent payload" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateConfluentAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "confluent_payload", + "description": "Confluent payload", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "api_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key associated with your Confluent account." + }, + "api_secret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API secret associated with your Confluent account." + }, + "resources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "enable_custom_metrics": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID associated with a Confluent resource." + }, + "resource_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + } + }, + "description": "A list of Confluent resources associated with the Confluent account." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + } + }, + "inner_properties": null, + "description": "Attributes associated with the account creation request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `confluent-cloud-accounts`." + } + }, + "inner_properties": null, + "description": "The data body for adding a Confluent account." + } + }, + "inner_properties": null, + "description": "Confluent payload" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema when adding a Confluent account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The data body for adding a Confluent account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes associated with the account creation request.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key associated with your Confluent account.\",\n \"example\": \"TESTAPIKEY123\",\n \"type\": \"string\"\n },\n \"api_secret\": {\n \"description\": \"The API secret associated with your Confluent account.\",\n \"example\": \"test-api-secret-123\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"A list of Confluent resources associated with the Confluent account.\",\n \"items\": {\n \"description\": \"Attributes object for updating a Confluent resource.\",\n \"properties\": {\n \"enable_custom_metrics\": {\n \"default\": false,\n \"description\": \"Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"The ID associated with a Confluent resource.\",\n \"example\": \"resource-id-123\",\n \"type\": \"string\"\n },\n \"resource_type\": {\n \"description\": \"The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.\",\n \"example\": \"kafka\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"resource_type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"api_key\",\n \"api_secret\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"confluent-cloud-accounts\",\n \"description\": \"The JSON:API type for this API. Should always be `confluent-cloud-accounts`.\",\n \"enum\": [\n \"confluent-cloud-accounts\"\n ],\n \"example\": \"confluent-cloud-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFLUENT_CLOUD_ACCOUNTS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Confluent payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateConfluentResource.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateConfluentResource.json new file mode 100644 index 00000000..0d898d9d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateConfluentResource.json @@ -0,0 +1,295 @@ +{ + "name": "CreateConfluentResource", + "fully_qualified_name": "DatadogApi.CreateConfluentResource@0.1.0", + "description": "Create a Confluent resource for a specified account.\n\nUse this tool to create a Confluent resource within a specific account using its ID. It's useful for managing Confluent resources in Datadog integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "The ID of the Confluent account for which to create the resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "resource_type", + "required": true, + "description": "The type of Confluent resource to create: `kafka`, `connector`, `ksql`, or `schema_registry`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.resource_type" + }, + { + "name": "confluent_resource_id", + "required": true, + "description": "The unique ID for the Confluent resource to be created or managed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID associated with a Confluent resource." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "json_api_request_type", + "required": true, + "description": "The JSON:API type for this request. Must be 'confluent-cloud-resources'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-resources" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "resource_tags", + "required": false, + "description": "A list of tag strings for the Confluent resource. Use key-value pairs separated by colons or single keys.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + }, + { + "name": "enable_custom_metrics", + "required": false, + "description": "Set to true to enable the `custom.consumer_lag_offset` metric with extra tags, false to disable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enable_custom_metrics" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateConfluentResource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enable_custom_metrics", + "tool_parameter_name": "enable_custom_metrics", + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + }, + { + "name": "data.attributes.resource_type", + "tool_parameter_name": "resource_type", + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "resource_tags", + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "confluent_resource_id", + "description": "The ID associated with a Confluent resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID associated with a Confluent resource." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "json_api_request_type", + "description": "The JSON:API type for this request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-resources" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this request." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "confluent-cloud-resources", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The JSON:API request for updating a Confluent resource.\",\n \"properties\": {\n \"data\": {\n \"description\": \"JSON:API request for updating a Confluent resource.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for updating a Confluent resource.\",\n \"properties\": {\n \"enable_custom_metrics\": {\n \"default\": false,\n \"description\": \"Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"resource_type\": {\n \"description\": \"The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.\",\n \"example\": \"kafka\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"resource_type\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID associated with a Confluent resource.\",\n \"example\": \"resource-id-123\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"confluent-cloud-resources\",\n \"description\": \"The JSON:API type for this request.\",\n \"enum\": [\n \"confluent-cloud-resources\"\n ],\n \"example\": \"confluent-cloud-resources\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFLUENT_CLOUD_RESOURCES\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Confluent payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomAllocationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomAllocationRule.json new file mode 100644 index 00000000..44777bd3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomAllocationRule.json @@ -0,0 +1,806 @@ +{ + "name": "CreateCustomAllocationRule", + "fully_qualified_name": "DatadogApi.CreateCustomAllocationRule@0.1.0", + "description": "Create a custom allocation rule in Datadog.\n\nUse this tool to create a custom allocation rule in Datadog with specified filters and allocation strategies. Useful for managing cost allocations with strategies like proportional, even, timeseries, or fixed percentage methods.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_allocation_rule_data", + "required": true, + "description": "JSON data to define a custom allocation rule, including attributes like costs, strategy, and filters.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "costs_to_allocate": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `attributes` `costs_to_allocate`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "order_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `order_id`." + }, + "provider": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `provider`." + }, + "rejected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rejected`." + }, + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rule_name`." + }, + "strategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "allocated_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "allocated_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + } + }, + "description": "The `items` `allocated_tags`." + }, + "percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `percentage`. The numeric value format should be a 32bit float value." + } + }, + "description": "The `strategy` `allocated_by`." + }, + "allocated_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `allocated_by_filters`." + }, + "allocated_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `allocated_by_tag_keys`." + }, + "based_on_costs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `based_on_costs`." + }, + "based_on_timeseries": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `based_on_timeseries`." + }, + "evaluate_grouped_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `evaluate_grouped_by_filters`." + }, + "evaluate_grouped_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `evaluate_grouped_by_tag_keys`." + }, + "granularity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `granularity`." + }, + "method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `method`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributesStrategy` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `type`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ArbitraryCostUpsertRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "upsert_arbitrary_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Upsert arbitrary rule resource type." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCustomAllocationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/arbitrary_rule", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "custom_allocation_rule_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "costs_to_allocate": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `attributes` `costs_to_allocate`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "order_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `order_id`." + }, + "provider": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `provider`." + }, + "rejected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rejected`." + }, + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rule_name`." + }, + "strategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "allocated_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "allocated_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + } + }, + "description": "The `items` `allocated_tags`." + }, + "percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `percentage`. The numeric value format should be a 32bit float value." + } + }, + "description": "The `strategy` `allocated_by`." + }, + "allocated_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `allocated_by_filters`." + }, + "allocated_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `allocated_by_tag_keys`." + }, + "based_on_costs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `based_on_costs`." + }, + "based_on_timeseries": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `based_on_timeseries`." + }, + "evaluate_grouped_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `evaluate_grouped_by_filters`." + }, + "evaluate_grouped_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `evaluate_grouped_by_tag_keys`." + }, + "granularity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `granularity`." + }, + "method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `method`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributesStrategy` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `type`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ArbitraryCostUpsertRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "upsert_arbitrary_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Upsert arbitrary rule resource type." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequest` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"costs_to_allocate\": [\n {\n \"condition\": \"is\",\n \"tag\": \"account_id\",\n \"value\": \"123456789\",\n \"values\": null\n },\n {\n \"condition\": \"in\",\n \"tag\": \"environment\",\n \"value\": \"\",\n \"values\": [\n \"production\",\n \"staging\"\n ]\n }\n ],\n \"enabled\": true,\n \"order_id\": 1,\n \"provider\": [\n \"aws\",\n \"gcp\"\n ],\n \"rule_name\": \"example-arbitrary-cost-rule\",\n \"strategy\": {\n \"allocated_by_tag_keys\": [\n \"team\",\n \"environment\"\n ],\n \"based_on_costs\": [\n {\n \"condition\": \"is\",\n \"tag\": \"service\",\n \"value\": \"web-api\",\n \"values\": null\n },\n {\n \"condition\": \"not in\",\n \"tag\": \"team\",\n \"value\": \"\",\n \"values\": [\n \"legacy\",\n \"deprecated\"\n ]\n }\n ],\n \"granularity\": \"daily\",\n \"method\": \"proportional\"\n },\n \"type\": \"shared\"\n },\n \"type\": \"upsert_arbitrary_rule\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributes` object.\",\n \"properties\": {\n \"costs_to_allocate\": {\n \"description\": \"The `attributes` `costs_to_allocate`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesCostsToAllocateItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"The `attributes` `enabled`.\",\n \"type\": \"boolean\"\n },\n \"order_id\": {\n \"description\": \"The `attributes` `order_id`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"provider\": {\n \"description\": \"The `attributes` `provider`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rejected\": {\n \"description\": \"The `attributes` `rejected`.\",\n \"type\": \"boolean\"\n },\n \"rule_name\": {\n \"description\": \"The `attributes` `rule_name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategy` object.\",\n \"properties\": {\n \"allocated_by\": {\n \"description\": \"The `strategy` `allocated_by`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItems` object.\",\n \"properties\": {\n \"allocated_tags\": {\n \"description\": \"The `items` `allocated_tags`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItemsAllocatedTagsItems` object.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The `items` `key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"percentage\": {\n \"description\": \"The `items` `percentage`. The numeric value format should be a 32bit float value.\",\n \"example\": 0.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"allocated_tags\",\n \"percentage\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"allocated_by_filters\": {\n \"description\": \"The `strategy` `allocated_by_filters`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByFiltersItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"allocated_by_tag_keys\": {\n \"description\": \"The `strategy` `allocated_by_tag_keys`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"based_on_costs\": {\n \"description\": \"The `strategy` `based_on_costs`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyBasedOnCostsItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"based_on_timeseries\": {\n \"additionalProperties\": {},\n \"description\": \"The `strategy` `based_on_timeseries`.\",\n \"type\": \"object\"\n },\n \"evaluate_grouped_by_filters\": {\n \"description\": \"The `strategy` `evaluate_grouped_by_filters`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyEvaluateGroupedByFiltersItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"evaluate_grouped_by_tag_keys\": {\n \"description\": \"The `strategy` `evaluate_grouped_by_tag_keys`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"granularity\": {\n \"description\": \"The `strategy` `granularity`.\",\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"The `strategy` `method`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The `attributes` `type`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"costs_to_allocate\",\n \"provider\",\n \"rule_name\",\n \"strategy\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `ArbitraryCostUpsertRequestData` `id`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"upsert_arbitrary_rule\",\n \"description\": \"Upsert arbitrary rule resource type.\",\n \"enum\": [\n \"upsert_arbitrary_rule\"\n ],\n \"example\": \"upsert_arbitrary_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"UPSERT_ARBITRARY_RULE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomAttributeConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomAttributeConfig.json new file mode 100644 index 00000000..61615ab0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomAttributeConfig.json @@ -0,0 +1,336 @@ +{ + "name": "CreateCustomAttributeConfig", + "fully_qualified_name": "DatadogApi.CreateCustomAttributeConfig@0.1.0", + "description": "Create a custom attribute configuration for a specific case type.\n\nUse this tool to create a custom attribute configuration in Datadog for a specified case type, enhancing data categorization and organization.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_type_uuid", + "required": true, + "description": "UUID of the case type for which the custom attribute config is to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_type_id" + }, + { + "name": "custom_attribute_display_name", + "required": true, + "description": "The display name for the custom attribute.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom attribute name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.display_name" + }, + { + "name": "custom_attribute_key", + "required": true, + "description": "A string key used to search for the custom attribute. This is the identifier for the attribute.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom attribute key. This will be the value use to search on this custom attribute" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.key" + }, + { + "name": "custom_attribute_type", + "required": true, + "description": "Type of the custom attribute. Options: 'URL', 'TEXT', or 'NUMBER'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "URL", + "TEXT", + "NUMBER" + ], + "properties": null, + "inner_properties": null, + "description": "Custom attributes type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.type" + }, + { + "name": "custom_attributes_config_type", + "required": true, + "description": "Specifies the JSON:API resource type for the custom attributes configuration. Must be 'custom_attribute'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_attribute" + ], + "properties": null, + "inner_properties": null, + "description": "Custom attributes config JSON:API resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "allow_multiple_values", + "required": true, + "description": "Indicates if multiple values can be set for the custom attribute.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether multiple values can be set" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.is_multi" + }, + { + "name": "custom_attribute_description", + "required": false, + "description": "Detailed description for the custom attribute. This helps define the attribute's purpose and use.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom attribute description." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCustomAttributeConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/types/{case_type_id}/custom_attributes", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_type_id", + "tool_parameter_name": "case_type_uuid", + "description": "Case type's UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "custom_attribute_description", + "description": "Custom attribute description.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom attribute description." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.display_name", + "tool_parameter_name": "custom_attribute_display_name", + "description": "Custom attribute name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom attribute name." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.is_multi", + "tool_parameter_name": "allow_multiple_values", + "description": "Whether multiple values can be set", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether multiple values can be set" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.key", + "tool_parameter_name": "custom_attribute_key", + "description": "Custom attribute key. This will be the value use to search on this custom attribute", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom attribute key. This will be the value use to search on this custom attribute" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.type", + "tool_parameter_name": "custom_attribute_type", + "description": "Custom attributes type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "URL", + "TEXT", + "NUMBER" + ], + "properties": null, + "inner_properties": null, + "description": "Custom attributes type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "custom_attributes_config_type", + "description": "Custom attributes config JSON:API resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_attribute" + ], + "properties": null, + "inner_properties": null, + "description": "Custom attributes config JSON:API resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "custom_attribute", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Custom attribute config create request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Custom attribute config\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Custom attribute config resource attributes\",\n \"properties\": {\n \"description\": {\n \"description\": \"Custom attribute description.\",\n \"example\": \"AWS Region, must be a valid region supported by AWS\",\n \"type\": \"string\"\n },\n \"display_name\": {\n \"description\": \"Custom attribute name.\",\n \"example\": \"AWS Region\",\n \"type\": \"string\"\n },\n \"is_multi\": {\n \"description\": \"Whether multiple values can be set\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"key\": {\n \"description\": \"Custom attribute key. This will be the value use to search on this custom attribute\",\n \"example\": \"aws_region\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Custom attributes type\",\n \"enum\": [\n \"URL\",\n \"TEXT\",\n \"NUMBER\"\n ],\n \"example\": \"NUMBER\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"URL\",\n \"TEXT\",\n \"NUMBER\"\n ]\n }\n },\n \"required\": [\n \"display_name\",\n \"key\",\n \"type\",\n \"is_multi\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"custom_attribute\",\n \"description\": \"Custom attributes config JSON:API resource type\",\n \"enum\": [\n \"custom_attribute\"\n ],\n \"example\": \"custom_attribute\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_ATTRIBUTE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Custom attribute config payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomLogDestination.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomLogDestination.json new file mode 100644 index 00000000..9c4d34ad --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomLogDestination.json @@ -0,0 +1,302 @@ +{ + "name": "CreateCustomLogDestination", + "fully_qualified_name": "DatadogApi.CreateCustomLogDestination@0.1.0", + "description": "Create a custom log destination in Datadog.\n\nThis tool creates a custom destination for logs in your Datadog organization. Use it to configure where your logs should be sent.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_destination_definition", + "required": true, + "description": "A JSON object defining the custom log destination attributes, including name, type, and forwarding settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether logs matching this custom destination should be forwarded or not." + }, + "forward_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether tags from the forwarded logs should be forwarded or not." + }, + "forward_tags_restriction_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of [keys of tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) to be filtered.\n\nAn empty list represents no restriction is in place and either all or no tags will be\nforwarded depending on `forward_tags_restriction_list_type` parameter." + }, + "forward_tags_restriction_list_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALLOW_LIST", + "BLOCK_LIST" + ], + "properties": null, + "inner_properties": null, + "description": "How `forward_tags_restriction_list` parameter should be interpreted.\nIf `ALLOW_LIST`, then only tags whose keys on the forwarded logs match the ones on the restriction list\nare forwarded.\n\n`BLOCK_LIST` works the opposite way. It does not forward the tags matching the ones on the list." + }, + "forwarder_destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A custom destination's location to forward logs." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination query and filter. Logs matching this query are forwarded to the destination." + } + }, + "inner_properties": null, + "description": "The attributes associated with the custom destination." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_destination" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_destination`." + } + }, + "inner_properties": null, + "description": "The definition of a custom destination." + } + }, + "inner_properties": null, + "description": "The definition of the new custom destination." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateLogsCustomDestination'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/custom-destinations", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "custom_destination_definition", + "description": "The definition of the new custom destination.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether logs matching this custom destination should be forwarded or not." + }, + "forward_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether tags from the forwarded logs should be forwarded or not." + }, + "forward_tags_restriction_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of [keys of tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) to be filtered.\n\nAn empty list represents no restriction is in place and either all or no tags will be\nforwarded depending on `forward_tags_restriction_list_type` parameter." + }, + "forward_tags_restriction_list_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALLOW_LIST", + "BLOCK_LIST" + ], + "properties": null, + "inner_properties": null, + "description": "How `forward_tags_restriction_list` parameter should be interpreted.\nIf `ALLOW_LIST`, then only tags whose keys on the forwarded logs match the ones on the restriction list\nare forwarded.\n\n`BLOCK_LIST` works the opposite way. It does not forward the tags matching the ones on the list." + }, + "forwarder_destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A custom destination's location to forward logs." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination query and filter. Logs matching this query are forwarded to the destination." + } + }, + "inner_properties": null, + "description": "The attributes associated with the custom destination." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_destination" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_destination`." + } + }, + "inner_properties": null, + "description": "The definition of a custom destination." + } + }, + "inner_properties": null, + "description": "The definition of the new custom destination." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The custom destination.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of a custom destination.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes associated with the custom destination.\",\n \"properties\": {\n \"enabled\": {\n \"default\": true,\n \"description\": \"Whether logs matching this custom destination should be forwarded or not.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"forward_tags\": {\n \"default\": true,\n \"description\": \"Whether tags from the forwarded logs should be forwarded or not.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"forward_tags_restriction_list\": {\n \"default\": [],\n \"description\": \"List of [keys of tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) to be filtered.\\n\\nAn empty list represents no restriction is in place and either all or no tags will be\\nforwarded depending on `forward_tags_restriction_list_type` parameter.\",\n \"example\": [\n \"datacenter\",\n \"host\"\n ],\n \"items\": {\n \"description\": \"The [key part of a tag](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\",\n \"type\": \"string\"\n },\n \"maxItems\": 10,\n \"minItems\": 0,\n \"type\": \"array\"\n },\n \"forward_tags_restriction_list_type\": {\n \"default\": \"ALLOW_LIST\",\n \"description\": \"How `forward_tags_restriction_list` parameter should be interpreted.\\nIf `ALLOW_LIST`, then only tags whose keys on the forwarded logs match the ones on the restriction list\\nare forwarded.\\n\\n`BLOCK_LIST` works the opposite way. It does not forward the tags matching the ones on the list.\",\n \"enum\": [\n \"ALLOW_LIST\",\n \"BLOCK_LIST\"\n ],\n \"example\": \"ALLOW_LIST\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALLOW_LIST\",\n \"BLOCK_LIST\"\n ]\n },\n \"forwarder_destination\": {\n \"description\": \"A custom destination's location to forward logs.\",\n \"oneOf\": [\n {\n \"description\": \"The HTTP destination.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Authentication method of the HTTP requests.\",\n \"oneOf\": [\n {\n \"description\": \"Basic access authentication.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The password of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-password\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"type\": {\n \"default\": \"basic\",\n \"description\": \"Type of the basic access authentication.\",\n \"enum\": [\n \"basic\"\n ],\n \"example\": \"basic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\"\n ]\n },\n \"username\": {\n \"description\": \"The username of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-username\",\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"required\": [\n \"type\",\n \"username\",\n \"password\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Custom header access authentication.\",\n \"properties\": {\n \"header_name\": {\n \"description\": \"The header name of the authentication.\",\n \"example\": \"CUSTOM-HEADER-NAME\",\n \"type\": \"string\"\n },\n \"header_value\": {\n \"description\": \"The header value of the authentication. This field is not returned by the API.\",\n \"example\": \"CUSTOM-HEADER-AUTHENTICATION-VALUE\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"type\": {\n \"default\": \"custom_header\",\n \"description\": \"Type of the custom header access authentication.\",\n \"enum\": [\n \"custom_header\"\n ],\n \"example\": \"custom_header\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_HEADER\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"header_name\",\n \"header_value\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"endpoint\": {\n \"description\": \"The destination for which logs will be forwarded to.\\nMust have HTTPS scheme and forwarding back to Datadog is not allowed.\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"http\",\n \"description\": \"Type of the HTTP destination.\",\n \"enum\": [\n \"http\"\n ],\n \"example\": \"http\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"endpoint\",\n \"auth\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Splunk HTTP Event Collector (HEC) destination.\",\n \"properties\": {\n \"access_token\": {\n \"description\": \"Access token of the Splunk HTTP Event Collector. This field is not returned by the API.\",\n \"example\": \"splunk_access_token\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"endpoint\": {\n \"description\": \"The destination for which logs will be forwarded to.\\nMust have HTTPS scheme and forwarding back to Datadog is not allowed.\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"Type of the Splunk HTTP Event Collector (HEC) destination.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"endpoint\",\n \"access_token\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Elasticsearch destination.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Basic access authentication.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The password of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-password\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"username\": {\n \"description\": \"The username of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-username\",\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"required\": [\n \"username\",\n \"password\"\n ],\n \"type\": \"object\"\n },\n \"endpoint\": {\n \"description\": \"The destination for which logs will be forwarded to.\\nMust have HTTPS scheme and forwarding back to Datadog is not allowed.\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n },\n \"index_name\": {\n \"description\": \"Name of the Elasticsearch index (must follow [Elasticsearch's criteria](https://www.elastic.co/guide/en/elasticsearch/reference/8.11/indices-create-index.html#indices-create-api-path-params)).\",\n \"example\": \"nginx-logs\",\n \"type\": \"string\"\n },\n \"index_rotation\": {\n \"description\": \"Date pattern with US locale and UTC timezone to be appended to the index name after adding `-`\\n(that is, `${index_name}-${indexPattern}`).\\nYou can customize the index rotation naming pattern by choosing one of these options:\\n- Hourly: `yyyy-MM-dd-HH` (as an example, it would render: `2022-10-19-09`)\\n- Daily: `yyyy-MM-dd` (as an example, it would render: `2022-10-19`)\\n- Weekly: `yyyy-'W'ww` (as an example, it would render: `2022-W42`)\\n- Monthly: `yyyy-MM` (as an example, it would render: `2022-10`)\\n\\nIf this field is missing or is blank, it means that the index name will always be the same\\n(that is, no rotation).\",\n \"example\": \"yyyy-MM-dd\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"elasticsearch\",\n \"description\": \"Type of the Elasticsearch destination.\",\n \"enum\": [\n \"elasticsearch\"\n ],\n \"example\": \"elasticsearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ELASTICSEARCH\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"endpoint\",\n \"auth\",\n \"index_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Microsoft Sentinel destination.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"Client ID from the Datadog Azure integration.\",\n \"example\": \"9a2f4d83-2b5e-429e-a35a-2b3c4182db71\",\n \"type\": \"string\"\n },\n \"data_collection_endpoint\": {\n \"description\": \"Azure data collection endpoint.\",\n \"example\": \"https://my-dce-5kyl.eastus-1.ingest.monitor.azure.com\",\n \"type\": \"string\"\n },\n \"data_collection_rule_id\": {\n \"description\": \"Azure data collection rule ID.\",\n \"example\": \"dcr-000a00a000a00000a000000aa000a0aa\",\n \"type\": \"string\"\n },\n \"stream_name\": {\n \"description\": \"Azure stream name.\",\n \"example\": \"Custom-MyTable\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"tenant_id\": {\n \"description\": \"Tenant ID from the Datadog Azure integration.\",\n \"example\": \"f3c9a8a1-4c2e-4d2e-b911-9f3c28c3c8b2\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"microsoft_sentinel\",\n \"description\": \"Type of the Microsoft Sentinel destination.\",\n \"enum\": [\n \"microsoft_sentinel\"\n ],\n \"example\": \"microsoft_sentinel\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MICROSOFT_SENTINEL\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"tenant_id\",\n \"client_id\",\n \"data_collection_endpoint\",\n \"data_collection_rule_id\",\n \"stream_name\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"The custom destination name.\",\n \"example\": \"Nginx logs\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"\",\n \"description\": \"The custom destination query and filter. Logs matching this query are forwarded to the destination.\",\n \"example\": \"source:nginx\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"forwarder_destination\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"custom_destination\",\n \"description\": \"The type of the resource. The value should always be `custom_destination`.\",\n \"enum\": [\n \"custom_destination\"\n ],\n \"example\": \"custom_destination\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_DESTINATION\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new custom destination.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomSecurityFramework.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomSecurityFramework.json new file mode 100644 index 00000000..a08aef5e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateCustomSecurityFramework.json @@ -0,0 +1,348 @@ +{ + "name": "CreateCustomSecurityFramework", + "fully_qualified_name": "DatadogApi.CreateCustomSecurityFramework@0.1.0", + "description": "Create a custom security framework in Datadog.\n\nThis tool is used to create a custom security framework in Datadog's cloud security management system. Call this tool when you need to define or customize security protocols and structures.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_framework_data", + "required": true, + "description": "A JSON object containing the type and attributes for custom frameworks, such as name, version, description, requirements, and type (must be 'custom_framework').", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Framework Description" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Handle" + }, + "icon_url": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Icon URL" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Name" + }, + "requirements": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "controls": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Control Name." + }, + "rules_id": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule IDs." + } + }, + "description": "Requirement Controls." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Requirement Name." + } + }, + "description": "Framework Requirements" + }, + "version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Version" + } + }, + "inner_properties": null, + "description": "Framework Data Attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_framework" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value must be `custom_framework`." + } + }, + "inner_properties": null, + "description": "Contains type and attributes for custom frameworks." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCustomFramework'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "custom_framework_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Framework Description" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Handle" + }, + "icon_url": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Icon URL" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Name" + }, + "requirements": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "controls": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Control Name." + }, + "rules_id": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule IDs." + } + }, + "description": "Requirement Controls." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Requirement Name." + } + }, + "description": "Framework Requirements" + }, + "version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Version" + } + }, + "inner_properties": null, + "description": "Framework Data Attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_framework" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value must be `custom_framework`." + } + }, + "inner_properties": null, + "description": "Contains type and attributes for custom frameworks." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object to create a custom framework.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Contains type and attributes for custom frameworks.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Framework Data Attributes.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Framework Description\",\n \"type\": \"string\"\n },\n \"handle\": {\n \"description\": \"Framework Handle\",\n \"example\": \"sec2\",\n \"type\": \"string\"\n },\n \"icon_url\": {\n \"description\": \"Framework Icon URL\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Framework Name\",\n \"example\": \"security-framework\",\n \"type\": \"string\"\n },\n \"requirements\": {\n \"description\": \"Framework Requirements\",\n \"items\": {\n \"description\": \"Framework Requirement.\",\n \"properties\": {\n \"controls\": {\n \"description\": \"Requirement Controls.\",\n \"items\": {\n \"description\": \"Framework Control.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Control Name.\",\n \"example\": \"A1.2\",\n \"type\": \"string\"\n },\n \"rules_id\": {\n \"description\": \"Rule IDs.\",\n \"example\": [\n \"[\\\"def-000-abc\\\"]\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"rules_id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Requirement Name.\",\n \"example\": \"criteria\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"controls\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"version\": {\n \"description\": \"Framework Version\",\n \"example\": \"2\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"handle\",\n \"version\",\n \"name\",\n \"requirements\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"custom_framework\",\n \"description\": \"The type of the resource. The value must be `custom_framework`.\",\n \"enum\": [\n \"custom_framework\"\n ],\n \"example\": \"custom_framework\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_FRAMEWORK\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogApiKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogApiKey.json new file mode 100644 index 00000000..2cf390a3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogApiKey.json @@ -0,0 +1,229 @@ +{ + "name": "CreateDatadogApiKey", + "fully_qualified_name": "DatadogApi.CreateDatadogApiKey@0.1.0", + "description": "Creates a new API key in Datadog.\n\nUse this tool to generate a new API key in Datadog. Ideal for managing authentication and access to Datadog services.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "api_key_name", + "required": true, + "description": "Name of the API key to be created in Datadog. This should be a descriptive and unique string identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the API key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "api_keys_resource_type", + "required": true, + "description": "Specify the resource type as 'api_keys'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "api_keys" + ], + "properties": null, + "inner_properties": null, + "description": "API Keys resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "apikey_category", + "required": false, + "description": "Specifies the category for the API key. This categorizes the key for organizational purposes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyCreateAttributes category." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.category" + }, + { + "name": "remote_config_read_enabled", + "required": false, + "description": "Indicates whether to enable read access to remote config for the new API key. Expects a boolean value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyCreateAttributes remote_config_read_enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.remote_config_read_enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateAPIKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/api_keys", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.category", + "tool_parameter_name": "apikey_category", + "description": "The APIKeyCreateAttributes category.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyCreateAttributes category." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "api_key_name", + "description": "Name of the API key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the API key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.remote_config_read_enabled", + "tool_parameter_name": "remote_config_read_enabled", + "description": "The APIKeyCreateAttributes remote_config_read_enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyCreateAttributes remote_config_read_enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "api_keys_resource_type", + "description": "API Keys resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "api_keys" + ], + "properties": null, + "inner_properties": null, + "description": "API Keys resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "api_keys", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to create an API key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object used to create an API key.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes used to create an API Key.\",\n \"properties\": {\n \"category\": {\n \"description\": \"The APIKeyCreateAttributes category.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the API key.\",\n \"example\": \"API Key for submitting metrics\",\n \"type\": \"string\"\n },\n \"remote_config_read_enabled\": {\n \"description\": \"The APIKeyCreateAttributes remote_config_read_enabled.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"api_keys\",\n \"description\": \"API Keys resource type.\",\n \"enum\": [\n \"api_keys\"\n ],\n \"example\": \"api_keys\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"API_KEYS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogGcpPrincipal.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogGcpPrincipal.json new file mode 100644 index 00000000..63b1ea89 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogGcpPrincipal.json @@ -0,0 +1,126 @@ +{ + "name": "CreateDatadogGcpPrincipal", + "fully_qualified_name": "DatadogApi.CreateDatadogGcpPrincipal@0.1.0", + "description": "Create a Datadog GCP principal.\n\nUse this tool to create a Google Cloud Platform (GCP) principal for integration with Datadog. It facilitates the setting up of GCP STS (Security Token Service) delegates needed for Datadog services.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "delegate_service_account_data", + "required": false, + "description": "JSON object containing details for creating a delegate service account within Datadog. Include necessary account parameters.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Create a delegate service account within Datadog." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'MakeGCPSTSDelegate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/gcp/sts_delegate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "delegate_service_account_data", + "description": "Create a delegate service account within Datadog.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Create a delegate service account within Datadog." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"example\": {},\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Create a delegate service account within Datadog.\",\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogRestrictionQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogRestrictionQuery.json new file mode 100644 index 00000000..5f3646b3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogRestrictionQuery.json @@ -0,0 +1,163 @@ +{ + "name": "CreateDatadogRestrictionQuery", + "fully_qualified_name": "DatadogApi.CreateDatadogRestrictionQuery@0.1.0", + "description": "Create a new restriction query in Datadog.\n\nThis tool creates a restriction query for your organization in Datadog. Use it to manage log access and configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "restriction_query", + "required": false, + "description": "A string representing the restriction query to manage log access and configurations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.restriction_query" + }, + { + "name": "restriction_query_resource_type", + "required": false, + "description": "Specifies the type of restriction query resource. Must be 'logs_restriction_queries'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_restriction_queries" + ], + "properties": null, + "inner_properties": null, + "description": "Restriction query resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateRestrictionQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.restriction_query", + "tool_parameter_name": "restriction_query", + "description": "The restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The restriction query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "restriction_query_resource_type", + "description": "Restriction query resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_restriction_queries" + ], + "properties": null, + "inner_properties": null, + "description": "Restriction query resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "logs_restriction_queries", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create a restriction query.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the creation of a restriction query.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the created restriction query.\",\n \"properties\": {\n \"restriction_query\": {\n \"description\": \"The restriction query.\",\n \"example\": \"env:sandbox\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"logs_restriction_queries\",\n \"description\": \"Restriction query resource type.\",\n \"enum\": [\n \"logs_restriction_queries\"\n ],\n \"example\": \"logs_restriction_queries\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS_RESTRICTION_QUERIES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogWorkflow.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogWorkflow.json new file mode 100644 index 00000000..e3ba4691 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDatadogWorkflow.json @@ -0,0 +1,1724 @@ +{ + "name": "CreateDatadogWorkflow", + "fully_qualified_name": "DatadogApi.CreateDatadogWorkflow@0.1.0", + "description": "Creates a new workflow in Datadog and returns its ID.\n\nThis tool is used to create a new workflow in Datadog, returning the workflow ID. It requires having a registered application key or configured permissions in the UI. This can be useful for automating processes and managing workflows effectively within the Datadog platform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_data", + "required": true, + "description": "JSON object containing detailed attributes for the Datadog workflow, including name, description, steps, connections, and other configuration aspects.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "createdAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was created." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the workflow." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the workflow." + }, + "published": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set the workflow to published or unpublished. Workflows in an unpublished state will only be executable via manual runs. Automatic triggers such as Schedule will not execute the workflow until it is published." + }, + "spec": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "annotations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `height`." + }, + "width": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `width`." + }, + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplay` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Annotation` `id`." + }, + "markdownTextAnnotation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "text": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `markdownTextAnnotation` `text`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationMarkdownTextAnnotation` object." + } + }, + "description": "A list of annotations used in the workflow. These are like sticky notes for your workflow!" + }, + "connectionEnvs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroups": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroupId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `connectionGroupId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `label`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `tags`." + } + }, + "description": "The `ConnectionEnv` `connectionGroups`." + }, + "connections": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `connectionId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `label`." + } + }, + "description": "The `ConnectionEnv` `connections`." + }, + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ConnectionEnvEnv` object." + } + }, + "description": "A list of connections or connection groups used in the workflow." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier used to trigger workflows automatically in Datadog." + }, + "inputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `InputSchemaParametersType` object." + } + }, + "description": "The `InputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of input parameters for the workflow. These can be used as dynamic runtime values in your workflow." + }, + "outputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `OutputSchemaParametersType` object." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `value`." + } + }, + "description": "The `OutputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of output parameters for the workflow." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of an action." + }, + "completionGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "completionCondition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "operand1": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand1`." + }, + "operand2": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand2`." + }, + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `CompletionConditionOperator` object." + } + }, + "inner_properties": null, + "description": "The definition of `CompletionCondition` object." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "inner_properties": null, + "description": "Used to create conditions before running subsequent actions." + }, + "connectionLabel": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of a connection defined in the spec." + }, + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplay` object." + }, + "errorHandlers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "fallbackStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ErrorHandler` `fallbackStepName`." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "description": "The `Step` `errorHandlers`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the step." + }, + "outboundEdges": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "branchName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `branchName`." + }, + "nextStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `nextStepName`." + } + }, + "description": "A list of subsequent actions to run." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `name`." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `value`." + } + }, + "description": "A list of inputs for an action." + }, + "readinessGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "thresholdType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ANY", + "ALL" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ReadinessGateThresholdType` object." + } + }, + "inner_properties": null, + "description": "Used to merge multiple branches into a single branch." + } + }, + "description": "A `Step` is a sub-component of a workflow. Each `Step` performs an action." + }, + "triggers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The list of triggers that activate this workflow. At least one trigger is required, and each trigger type may appear at most once." + } + }, + "inner_properties": null, + "description": "The spec defines what the workflow does." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags of the workflow." + }, + "updatedAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was last updated." + }, + "webhookSecret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If a Webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The workflow identifier" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "creator": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + }, + "owner": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the workflow." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateWorkflow'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "workflow_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "createdAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was created." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the workflow." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the workflow." + }, + "published": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set the workflow to published or unpublished. Workflows in an unpublished state will only be executable via manual runs. Automatic triggers such as Schedule will not execute the workflow until it is published." + }, + "spec": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "annotations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `height`." + }, + "width": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `width`." + }, + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplay` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Annotation` `id`." + }, + "markdownTextAnnotation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "text": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `markdownTextAnnotation` `text`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationMarkdownTextAnnotation` object." + } + }, + "description": "A list of annotations used in the workflow. These are like sticky notes for your workflow!" + }, + "connectionEnvs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroups": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroupId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `connectionGroupId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `label`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `tags`." + } + }, + "description": "The `ConnectionEnv` `connectionGroups`." + }, + "connections": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `connectionId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `label`." + } + }, + "description": "The `ConnectionEnv` `connections`." + }, + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ConnectionEnvEnv` object." + } + }, + "description": "A list of connections or connection groups used in the workflow." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier used to trigger workflows automatically in Datadog." + }, + "inputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `InputSchemaParametersType` object." + } + }, + "description": "The `InputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of input parameters for the workflow. These can be used as dynamic runtime values in your workflow." + }, + "outputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `OutputSchemaParametersType` object." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `value`." + } + }, + "description": "The `OutputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of output parameters for the workflow." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of an action." + }, + "completionGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "completionCondition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "operand1": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand1`." + }, + "operand2": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand2`." + }, + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `CompletionConditionOperator` object." + } + }, + "inner_properties": null, + "description": "The definition of `CompletionCondition` object." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "inner_properties": null, + "description": "Used to create conditions before running subsequent actions." + }, + "connectionLabel": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of a connection defined in the spec." + }, + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplay` object." + }, + "errorHandlers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "fallbackStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ErrorHandler` `fallbackStepName`." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "description": "The `Step` `errorHandlers`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the step." + }, + "outboundEdges": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "branchName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `branchName`." + }, + "nextStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `nextStepName`." + } + }, + "description": "A list of subsequent actions to run." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `name`." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `value`." + } + }, + "description": "A list of inputs for an action." + }, + "readinessGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "thresholdType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ANY", + "ALL" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ReadinessGateThresholdType` object." + } + }, + "inner_properties": null, + "description": "Used to merge multiple branches into a single branch." + } + }, + "description": "A `Step` is a sub-component of a workflow. Each `Step` performs an action." + }, + "triggers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The list of triggers that activate this workflow. At least one trigger is required, and each trigger type may appear at most once." + } + }, + "inner_properties": null, + "description": "The spec defines what the workflow does." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags of the workflow." + }, + "updatedAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was last updated." + }, + "webhookSecret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If a Webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The workflow identifier" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "creator": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + }, + "owner": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the workflow." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A request object for creating a new workflow.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"description\": \"A sample workflow.\",\n \"name\": \"Example Workflow\",\n \"published\": true,\n \"spec\": {\n \"annotations\": [\n {\n \"display\": {\n \"bounds\": {\n \"height\": 150,\n \"width\": 300,\n \"x\": -375,\n \"y\": -0.5\n }\n },\n \"id\": \"99999999-9999-9999-9999-999999999999\",\n \"markdownTextAnnotation\": {\n \"text\": \"Example annotation.\"\n }\n }\n ],\n \"connectionEnvs\": [\n {\n \"connections\": [\n {\n \"connectionId\": \"11111111-1111-1111-1111-111111111111\",\n \"label\": \"INTEGRATION_DATADOG\"\n }\n ],\n \"env\": \"default\"\n }\n ],\n \"handle\": \"my-handle\",\n \"inputSchema\": {\n \"parameters\": [\n {\n \"defaultValue\": \"default\",\n \"name\": \"input\",\n \"type\": \"STRING\"\n }\n ]\n },\n \"outputSchema\": {\n \"parameters\": [\n {\n \"name\": \"output\",\n \"type\": \"ARRAY_OBJECT\",\n \"value\": \"{{ Steps.Step1 }}\"\n }\n ]\n },\n \"steps\": [\n {\n \"actionId\": \"com.datadoghq.dd.monitor.listMonitors\",\n \"connectionLabel\": \"INTEGRATION_DATADOG\",\n \"name\": \"Step1\",\n \"outboundEdges\": [\n {\n \"branchName\": \"main\",\n \"nextStepName\": \"Step2\"\n }\n ],\n \"parameters\": [\n {\n \"name\": \"tags\",\n \"value\": \"service:monitoring\"\n }\n ]\n },\n {\n \"actionId\": \"com.datadoghq.core.noop\",\n \"name\": \"Step2\"\n }\n ],\n \"triggers\": [\n {\n \"monitorTrigger\": {\n \"rateLimit\": {\n \"count\": 1,\n \"interval\": \"3600s\"\n }\n },\n \"startStepNames\": [\n \"Step1\"\n ]\n },\n {\n \"githubWebhookTrigger\": {},\n \"startStepNames\": [\n \"Step1\"\n ]\n }\n ]\n },\n \"tags\": [\n \"team:infra\",\n \"service:monitoring\",\n \"foo:bar\"\n ]\n },\n \"type\": \"workflows\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the workflow.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `WorkflowDataAttributes` object.\",\n \"properties\": {\n \"createdAt\": {\n \"description\": \"When the workflow was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Description of the workflow.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the workflow.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"published\": {\n \"description\": \"Set the workflow to published or unpublished. Workflows in an unpublished state will only be executable via manual runs. Automatic triggers such as Schedule will not execute the workflow until it is published.\",\n \"type\": \"boolean\"\n },\n \"spec\": {\n \"description\": \"The spec defines what the workflow does.\",\n \"properties\": {\n \"annotations\": {\n \"description\": \"A list of annotations used in the workflow. These are like sticky notes for your workflow!\",\n \"items\": {\n \"description\": \"A list of annotations used in the workflow. These are like sticky notes for your workflow!\",\n \"properties\": {\n \"display\": {\n \"description\": \"The definition of `AnnotationDisplay` object.\",\n \"properties\": {\n \"bounds\": {\n \"description\": \"The definition of `AnnotationDisplayBounds` object.\",\n \"properties\": {\n \"height\": {\n \"description\": \"The `bounds` `height`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"width\": {\n \"description\": \"The `bounds` `width`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"x\": {\n \"description\": \"The `bounds` `x`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"y\": {\n \"description\": \"The `bounds` `y`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `Annotation` `id`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"markdownTextAnnotation\": {\n \"description\": \"The definition of `AnnotationMarkdownTextAnnotation` object.\",\n \"properties\": {\n \"text\": {\n \"description\": \"The `markdownTextAnnotation` `text`.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"id\",\n \"display\",\n \"markdownTextAnnotation\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"connectionEnvs\": {\n \"description\": \"A list of connections or connection groups used in the workflow.\",\n \"items\": {\n \"description\": \"A list of connections or connection groups used in the workflow.\",\n \"properties\": {\n \"connectionGroups\": {\n \"description\": \"The `ConnectionEnv` `connectionGroups`.\",\n \"items\": {\n \"description\": \"The definition of `ConnectionGroup` object.\",\n \"properties\": {\n \"connectionGroupId\": {\n \"description\": \"The `ConnectionGroup` `connectionGroupId`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `ConnectionGroup` `label`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The `ConnectionGroup` `tags`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"connectionGroupId\",\n \"label\",\n \"tags\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"connections\": {\n \"description\": \"The `ConnectionEnv` `connections`.\",\n \"items\": {\n \"description\": \"The definition of `Connection` object.\",\n \"properties\": {\n \"connectionId\": {\n \"description\": \"The `Connection` `connectionId`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `Connection` `label`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"connectionId\",\n \"label\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"The definition of `ConnectionEnvEnv` object.\",\n \"enum\": [\n \"default\"\n ],\n \"example\": \"default\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DEFAULT\"\n ]\n }\n },\n \"required\": [\n \"env\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"handle\": {\n \"description\": \"Unique identifier used to trigger workflows automatically in Datadog.\",\n \"type\": \"string\"\n },\n \"inputSchema\": {\n \"description\": \"A list of input parameters for the workflow. These can be used as dynamic runtime values in your workflow.\",\n \"properties\": {\n \"parameters\": {\n \"description\": \"The `InputSchema` `parameters`.\",\n \"items\": {\n \"description\": \"The definition of `InputSchemaParameters` object.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"The `InputSchemaParameters` `defaultValue`.\"\n },\n \"description\": {\n \"description\": \"The `InputSchemaParameters` `description`.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `InputSchemaParameters` `label`.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The `InputSchemaParameters` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `InputSchemaParametersType` object.\",\n \"enum\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ],\n \"example\": \"STRING\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"outputSchema\": {\n \"description\": \"A list of output parameters for the workflow.\",\n \"properties\": {\n \"parameters\": {\n \"description\": \"The `OutputSchema` `parameters`.\",\n \"items\": {\n \"description\": \"The definition of `OutputSchemaParameters` object.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"The `OutputSchemaParameters` `defaultValue`.\"\n },\n \"description\": {\n \"description\": \"The `OutputSchemaParameters` `description`.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `OutputSchemaParameters` `label`.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The `OutputSchemaParameters` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `OutputSchemaParametersType` object.\",\n \"enum\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ],\n \"example\": \"STRING\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ]\n },\n \"value\": {\n \"description\": \"The `OutputSchemaParameters` `value`.\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"steps\": {\n \"description\": \"A `Step` is a sub-component of a workflow. Each `Step` performs an action.\",\n \"items\": {\n \"description\": \"A Step is a sub-component of a workflow. Each Step performs an action.\",\n \"properties\": {\n \"actionId\": {\n \"description\": \"The unique identifier of an action.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"completionGate\": {\n \"description\": \"Used to create conditions before running subsequent actions.\",\n \"properties\": {\n \"completionCondition\": {\n \"description\": \"The definition of `CompletionCondition` object.\",\n \"properties\": {\n \"operand1\": {\n \"description\": \"The `CompletionCondition` `operand1`.\"\n },\n \"operand2\": {\n \"description\": \"The `CompletionCondition` `operand2`.\"\n },\n \"operator\": {\n \"description\": \"The definition of `CompletionConditionOperator` object.\",\n \"enum\": [\n \"OPERATOR_EQUAL\",\n \"OPERATOR_NOT_EQUAL\",\n \"OPERATOR_GREATER_THAN\",\n \"OPERATOR_LESS_THAN\",\n \"OPERATOR_GREATER_THAN_OR_EQUAL_TO\",\n \"OPERATOR_LESS_THAN_OR_EQUAL_TO\",\n \"OPERATOR_CONTAINS\",\n \"OPERATOR_DOES_NOT_CONTAIN\",\n \"OPERATOR_IS_NULL\",\n \"OPERATOR_IS_NOT_NULL\",\n \"OPERATOR_IS_EMPTY\",\n \"OPERATOR_IS_NOT_EMPTY\"\n ],\n \"example\": \"OPERATOR_EQUAL\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPERATOR_EQUAL\",\n \"OPERATOR_NOT_EQUAL\",\n \"OPERATOR_GREATER_THAN\",\n \"OPERATOR_LESS_THAN\",\n \"OPERATOR_GREATER_THAN_OR_EQUAL_TO\",\n \"OPERATOR_LESS_THAN_OR_EQUAL_TO\",\n \"OPERATOR_CONTAINS\",\n \"OPERATOR_DOES_NOT_CONTAIN\",\n \"OPERATOR_IS_NULL\",\n \"OPERATOR_IS_NOT_NULL\",\n \"OPERATOR_IS_EMPTY\",\n \"OPERATOR_IS_NOT_EMPTY\"\n ]\n }\n },\n \"required\": [\n \"operand1\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"retryStrategy\": {\n \"description\": \"The definition of `RetryStrategy` object.\",\n \"properties\": {\n \"kind\": {\n \"description\": \"The definition of `RetryStrategyKind` object.\",\n \"enum\": [\n \"RETRY_STRATEGY_LINEAR\"\n ],\n \"example\": \"RETRY_STRATEGY_LINEAR\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RETRY_STRATEGY_LINEAR\"\n ]\n },\n \"linear\": {\n \"description\": \"The definition of `RetryStrategyLinear` object.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"The `RetryStrategyLinear` `maxRetries`.\",\n \"example\": 0.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"maxRetries\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"completionCondition\",\n \"retryStrategy\"\n ],\n \"type\": \"object\"\n },\n \"connectionLabel\": {\n \"description\": \"The unique identifier of a connection defined in the spec.\",\n \"type\": \"string\"\n },\n \"display\": {\n \"description\": \"The definition of `StepDisplay` object.\",\n \"properties\": {\n \"bounds\": {\n \"description\": \"The definition of `StepDisplayBounds` object.\",\n \"properties\": {\n \"x\": {\n \"description\": \"The `bounds` `x`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"y\": {\n \"description\": \"The `bounds` `y`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"errorHandlers\": {\n \"description\": \"The `Step` `errorHandlers`.\",\n \"items\": {\n \"description\": \"Used to handle errors in an action.\",\n \"properties\": {\n \"fallbackStepName\": {\n \"description\": \"The `ErrorHandler` `fallbackStepName`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"retryStrategy\": {\n \"description\": \"The definition of `RetryStrategy` object.\",\n \"properties\": {\n \"kind\": {\n \"description\": \"The definition of `RetryStrategyKind` object.\",\n \"enum\": [\n \"RETRY_STRATEGY_LINEAR\"\n ],\n \"example\": \"RETRY_STRATEGY_LINEAR\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RETRY_STRATEGY_LINEAR\"\n ]\n },\n \"linear\": {\n \"description\": \"The definition of `RetryStrategyLinear` object.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"The `RetryStrategyLinear` `maxRetries`.\",\n \"example\": 0.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"maxRetries\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"retryStrategy\",\n \"fallbackStepName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the step.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"outboundEdges\": {\n \"description\": \"A list of subsequent actions to run.\",\n \"items\": {\n \"description\": \"The definition of `OutboundEdge` object.\",\n \"properties\": {\n \"branchName\": {\n \"description\": \"The `OutboundEdge` `branchName`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"nextStepName\": {\n \"description\": \"The `OutboundEdge` `nextStepName`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"nextStepName\",\n \"branchName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"description\": \"A list of inputs for an action.\",\n \"items\": {\n \"description\": \"The definition of `Parameter` object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The `Parameter` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `Parameter` `value`.\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessGate\": {\n \"description\": \"Used to merge multiple branches into a single branch.\",\n \"properties\": {\n \"thresholdType\": {\n \"description\": \"The definition of `ReadinessGateThresholdType` object.\",\n \"enum\": [\n \"ANY\",\n \"ALL\"\n ],\n \"example\": \"ANY\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ANY\",\n \"ALL\"\n ]\n }\n },\n \"required\": [\n \"thresholdType\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\",\n \"actionId\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"triggers\": {\n \"description\": \"The list of triggers that activate this workflow. At least one trigger is required, and each trigger type may appear at most once.\",\n \"items\": {\n \"description\": \"One of the triggers that can start the execution of a workflow.\",\n \"oneOf\": [\n {\n \"description\": \"Schema for an API-based trigger.\",\n \"properties\": {\n \"apiTrigger\": {\n \"description\": \"Trigger a workflow from an API request. The workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"apiTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for an App-based trigger.\",\n \"properties\": {\n \"appTrigger\": {\n \"description\": \"Trigger a workflow from an App.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"appTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Case-based trigger.\",\n \"properties\": {\n \"caseTrigger\": {\n \"description\": \"Trigger a workflow from a Case. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"caseTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Change Event-based trigger.\",\n \"properties\": {\n \"changeEventTrigger\": {\n \"description\": \"Trigger a workflow from a Change Event.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"changeEventTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Database Monitoring-based trigger.\",\n \"properties\": {\n \"databaseMonitoringTrigger\": {\n \"description\": \"Trigger a workflow from Database Monitoring.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"databaseMonitoringTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Datastore-based trigger.\",\n \"properties\": {\n \"datastoreTrigger\": {\n \"description\": \"Trigger a workflow from a Datastore. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"datastoreTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Dashboard-based trigger.\",\n \"properties\": {\n \"dashboardTrigger\": {\n \"description\": \"Trigger a workflow from a Dashboard.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"dashboardTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a GitHub webhook-based trigger.\",\n \"properties\": {\n \"githubWebhookTrigger\": {\n \"description\": \"Trigger a workflow from a GitHub webhook. To trigger a workflow from GitHub, you must set a `webhookSecret`. In your GitHub Webhook Settings, set the Payload URL to \\\"base_url\\\"/api/v2/workflows/\\\"workflow_id\\\"/webhook?orgId=\\\"org_id\\\", select application/json for the content type, and be highly recommend enabling SSL verification for security. The workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"githubWebhookTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for an Incident-based trigger.\",\n \"properties\": {\n \"incidentTrigger\": {\n \"description\": \"Trigger a workflow from an Incident. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"incidentTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Monitor-based trigger.\",\n \"properties\": {\n \"monitorTrigger\": {\n \"description\": \"Trigger a workflow from a Monitor. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"monitorTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Notebook-based trigger.\",\n \"properties\": {\n \"notebookTrigger\": {\n \"description\": \"Trigger a workflow from a Notebook.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"notebookTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Schedule-based trigger.\",\n \"properties\": {\n \"scheduleTrigger\": {\n \"description\": \"Trigger a workflow from a Schedule. The workflow must be published.\",\n \"properties\": {\n \"rruleExpression\": {\n \"description\": \"Recurrence rule expression for scheduling.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"rruleExpression\"\n ],\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"scheduleTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Security-based trigger.\",\n \"properties\": {\n \"securityTrigger\": {\n \"description\": \"Trigger a workflow from a Security Signal or Finding. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"securityTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Self Service-based trigger.\",\n \"properties\": {\n \"selfServiceTrigger\": {\n \"description\": \"Trigger a workflow from Self Service.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"selfServiceTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Slack-based trigger.\",\n \"properties\": {\n \"slackTrigger\": {\n \"description\": \"Trigger a workflow from Slack. The workflow must be published.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"slackTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Software Catalog-based trigger.\",\n \"properties\": {\n \"softwareCatalogTrigger\": {\n \"description\": \"Trigger a workflow from Software Catalog.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"softwareCatalogTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Workflow-based trigger.\",\n \"properties\": {\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"workflowTrigger\": {\n \"description\": \"Trigger a workflow from the Datadog UI. Only required if no other trigger exists.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"workflowTrigger\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags of the workflow.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"updatedAt\": {\n \"description\": \"When the workflow was last updated.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"webhookSecret\": {\n \"description\": \"If a Webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here.\",\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"required\": [\n \"name\",\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The workflow identifier\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"The definition of `WorkflowDataRelationships` object.\",\n \"properties\": {\n \"creator\": {\n \"description\": \"The definition of `WorkflowUserRelationship` object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `WorkflowUserRelationshipData` object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The user identifier\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `WorkflowUserRelationshipType` object.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"owner\": {\n \"description\": \"The definition of `WorkflowUserRelationship` object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `WorkflowUserRelationshipData` object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The user identifier\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `WorkflowUserRelationshipType` object.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"readOnly\": true,\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The definition of `WorkflowDataType` object.\",\n \"enum\": [\n \"workflows\"\n ],\n \"example\": \"workflows\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"WORKFLOWS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDataset.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDataset.json new file mode 100644 index 00000000..cc5ecfde --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateDataset.json @@ -0,0 +1,266 @@ +{ + "name": "CreateDataset", + "fully_qualified_name": "DatadogApi.CreateDataset@0.1.0", + "description": "Create a dataset with specified configurations.\n\nUse this tool to create a new dataset on Datadog with the desired configurations provided in the request.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dataset_payload", + "required": true, + "description": "JSON object containing dataset metadata and configurations, including name, principals, and product filters.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 dataset." + }, + "principals": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of access principals, formatted as `principal_type:id`. Principal can be 'team' or 'role'." + }, + "product_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the list of tag-based filters used to restrict access to telemetry data for a specific product.\nThese filters act as access control rules. Each filter must follow the tag query syntax used by\nDatadog (such as `@tag.key:value`), and only one tag or attribute may be used to define the access strategy\nper telemetry type." + }, + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product the dataset is for. Possible values are 'apm', 'rum',\n'metrics', 'logs', 'error_tracking', and 'cloud_cost'." + } + }, + "description": "List of product-specific filters." + } + }, + "inner_properties": null, + "description": "Dataset metadata and configurations." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "dataset" + ], + "properties": null, + "inner_properties": null, + "description": "Resource type, always set to `dataset`." + } + }, + "inner_properties": null, + "description": "**Datasets Object Constraints**\n- **Tag limit per dataset**:\n - Each restricted dataset supports a maximum of 10 key:value pairs per product.\n\n- **Tag key rules per telemetry type**:\n - Only one tag key or attribute may be used to define access within a single telemetry type.\n - The same or different tag key may be used across different telemetry types.\n\n- **Tag value uniqueness**:\n - Tag values must be unique within a single dataset.\n - A tag value used in one dataset cannot be reused in another dataset of the same telemetry type." + } + }, + "inner_properties": null, + "description": "Dataset payload" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateDataset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/datasets", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "dataset_payload", + "description": "Dataset payload", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 dataset." + }, + "principals": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of access principals, formatted as `principal_type:id`. Principal can be 'team' or 'role'." + }, + "product_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the list of tag-based filters used to restrict access to telemetry data for a specific product.\nThese filters act as access control rules. Each filter must follow the tag query syntax used by\nDatadog (such as `@tag.key:value`), and only one tag or attribute may be used to define the access strategy\nper telemetry type." + }, + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product the dataset is for. Possible values are 'apm', 'rum',\n'metrics', 'logs', 'error_tracking', and 'cloud_cost'." + } + }, + "description": "List of product-specific filters." + } + }, + "inner_properties": null, + "description": "Dataset metadata and configurations." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "dataset" + ], + "properties": null, + "inner_properties": null, + "description": "Resource type, always set to `dataset`." + } + }, + "inner_properties": null, + "description": "**Datasets Object Constraints**\n- **Tag limit per dataset**:\n - Each restricted dataset supports a maximum of 10 key:value pairs per product.\n\n- **Tag key rules per telemetry type**:\n - Only one tag key or attribute may be used to define access within a single telemetry type.\n - The same or different tag key may be used across different telemetry types.\n\n- **Tag value uniqueness**:\n - Tag values must be unique within a single dataset.\n - A tag value used in one dataset cannot be reused in another dataset of the same telemetry type." + } + }, + "inner_properties": null, + "description": "Dataset payload" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"name\": \"Test RUM Dataset\",\n \"principals\": [\n \"role:94172442-be03-11e9-a77a-3b7612558ac1\"\n ],\n \"product_filters\": [\n {\n \"filters\": [\n \"@application.id:application_123\"\n ],\n \"product\": \"rum\"\n }\n ]\n },\n \"type\": \"dataset\"\n }\n },\n \"schema\": {\n \"description\": \"Create request for a dataset.\",\n \"properties\": {\n \"data\": {\n \"description\": \"**Datasets Object Constraints**\\n- **Tag limit per dataset**:\\n - Each restricted dataset supports a maximum of 10 key:value pairs per product.\\n\\n- **Tag key rules per telemetry type**:\\n - Only one tag key or attribute may be used to define access within a single telemetry type.\\n - The same or different tag key may be used across different telemetry types.\\n\\n- **Tag value uniqueness**:\\n - Tag values must be unique within a single dataset.\\n - A tag value used in one dataset cannot be reused in another dataset of the same telemetry type.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Dataset metadata and configurations.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the dataset.\",\n \"example\": \"Security Audit Dataset\",\n \"type\": \"string\"\n },\n \"principals\": {\n \"description\": \"List of access principals, formatted as `principal_type:id`. Principal can be 'team' or 'role'.\",\n \"example\": [\n \"role:94172442-be03-11e9-a77a-3b7612558ac1\"\n ],\n \"items\": {\n \"example\": \"role:94172442-be03-11e9-a77a-3b7612558ac1\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"product_filters\": {\n \"description\": \"List of product-specific filters.\",\n \"items\": {\n \"description\": \"Product-specific filters for the dataset.\",\n \"properties\": {\n \"filters\": {\n \"description\": \"Defines the list of tag-based filters used to restrict access to telemetry data for a specific product.\\nThese filters act as access control rules. Each filter must follow the tag query syntax used by\\nDatadog (such as `@tag.key:value`), and only one tag or attribute may be used to define the access strategy\\nper telemetry type.\",\n \"example\": [\n \"@application.id:ABCD\"\n ],\n \"items\": {\n \"example\": \"@application.id:ABCD\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"product\": {\n \"description\": \"Name of the product the dataset is for. Possible values are 'apm', 'rum',\\n'metrics', 'logs', 'error_tracking', and 'cloud_cost'.\",\n \"example\": \"logs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"product\",\n \"filters\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"product_filters\",\n \"principals\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"dataset\",\n \"description\": \"Resource type, always set to `dataset`.\",\n \"enum\": [\n \"dataset\"\n ],\n \"example\": \"dataset\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATASET\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Dataset payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateFastlyAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateFastlyAccount.json new file mode 100644 index 00000000..761d636c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateFastlyAccount.json @@ -0,0 +1,266 @@ +{ + "name": "CreateFastlyAccount", + "fully_qualified_name": "DatadogApi.CreateFastlyAccount@0.1.0", + "description": "Create a new Fastly account through Datadog integration.\n\nUse this tool to create a new Fastly account using Datadog's integration service. Ideal for setting up Fastly accounts quickly and efficiently.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_creation_data", + "required": true, + "description": "JSON object containing the attributes for creating a Fastly account, including API key, account name, and associated services.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "api_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key for the Fastly account." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Fastly account." + }, + "services": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Fastly service" + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the Fastly service." + } + }, + "description": "A list of services belonging to the parent account." + } + }, + "inner_properties": null, + "description": "Attributes object for creating a Fastly account." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-accounts`." + } + }, + "inner_properties": null, + "description": "Data object for creating a Fastly account." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateFastlyAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "fastly_account_creation_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "api_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key for the Fastly account." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Fastly account." + }, + "services": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Fastly service" + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the Fastly service." + } + }, + "description": "A list of services belonging to the parent account." + } + }, + "inner_properties": null, + "description": "Attributes object for creating a Fastly account." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-accounts`." + } + }, + "inner_properties": null, + "description": "Data object for creating a Fastly account." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema when adding a Fastly account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for creating a Fastly account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for creating a Fastly account.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key for the Fastly account.\",\n \"example\": \"ABCDEFG123\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the Fastly account.\",\n \"example\": \"test-name\",\n \"type\": \"string\"\n },\n \"services\": {\n \"description\": \"A list of services belonging to the parent account.\",\n \"items\": {\n \"description\": \"The schema representation of a Fastly service.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the Fastly service\",\n \"example\": \"6abc7de6893AbcDe9fghIj\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of tags for the Fastly service.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"api_key\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fastly-accounts\",\n \"description\": \"The JSON:API type for this API. Should always be `fastly-accounts`.\",\n \"enum\": [\n \"fastly-accounts\"\n ],\n \"example\": \"fastly-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLY_ACCOUNTS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateFastlyService.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateFastlyService.json new file mode 100644 index 00000000..0a55d58b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateFastlyService.json @@ -0,0 +1,229 @@ +{ + "name": "CreateFastlyService", + "fully_qualified_name": "DatadogApi.CreateFastlyService@0.1.0", + "description": "Create a Fastly service for a specific account in Datadog.\n\nUse this tool to create a Fastly service associated with a given account within Datadog. Ideal when setting up or expanding Fastly integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "Provide the Fastly Account ID to create the service under.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "fastly_service_id", + "required": true, + "description": "The ID of the Fastly service to create. Provide a valid Fastly service ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Fastly service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "jsonapi_type_for_fastly_service", + "required": true, + "description": "The JSON:API type, always set to 'fastly-services', for creating a Fastly service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-services" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-services`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "fastly_service_tags", + "required": false, + "description": "A list of tags for the Fastly service to help categorize and organize the service.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the Fastly service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateFastlyService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "fastly_service_tags", + "description": "A list of tags for the Fastly service.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the Fastly service." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "fastly_service_id", + "description": "The ID of the Fastly service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Fastly service." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "jsonapi_type_for_fastly_service", + "description": "The JSON:API type for this API. Should always be `fastly-services`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-services" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-services`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "fastly-services", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema for Fastly service requests.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for Fastly service requests.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for Fastly service requests.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of tags for the Fastly service.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the Fastly service.\",\n \"example\": \"abc123\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"fastly-services\",\n \"description\": \"The JSON:API type for this API. Should always be `fastly-services`.\",\n \"enum\": [\n \"fastly-services\"\n ],\n \"example\": \"fastly-services\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLY_SERVICES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateGcpCostManagementAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateGcpCostManagementAccount.json new file mode 100644 index 00000000..c8e80464 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateGcpCostManagementAccount.json @@ -0,0 +1,328 @@ +{ + "name": "CreateGcpCostManagementAccount", + "fully_qualified_name": "DatadogApi.CreateGcpCostManagementAccount@0.1.0", + "description": "Create a cost management account for Google Cloud usage.\n\nThis tool creates a Cloud Cost Management account specifically for Google Cloud Usage Cost configurations. It should be called when a user wants to set up or initiate tracking and managing costs related to their Google Cloud resources.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "usage_cost_config_type", + "required": true, + "description": "Specifies the type of Google Cloud Usage Cost configuration post request. Use \"gcp_uc_config_post_request\" to indicate this type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_uc_config_post_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Google Cloud Usage Cost config post request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "google_cloud_billing_account_id", + "required": false, + "description": "The Google Cloud account ID for cost management.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Google Cloud account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.billing_account_id" + }, + { + "name": "gcp_bucket_name", + "required": false, + "description": "The name of the Google Cloud bucket where the Usage Cost exports are stored.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Google Cloud bucket name used to store the Usage Cost export." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.bucket_name" + }, + { + "name": "gcp_usage_cost_export_dataset_name", + "required": false, + "description": "The dataset name used for exporting the Google Cloud Usage Cost report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The export dataset name used for the Google Cloud Usage Cost report." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.export_dataset_name" + }, + { + "name": "google_cloud_export_prefix", + "required": false, + "description": "The export prefix for the Google Cloud Usage Cost report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The export prefix used for the Google Cloud Usage Cost report." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.export_prefix" + }, + { + "name": "gcp_usage_cost_report_name", + "required": false, + "description": "The name of the Google Cloud Usage Cost report to be used for cost management.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Google Cloud Usage Cost report." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.export_project_name" + }, + { + "name": "google_cloud_service_account_email", + "required": false, + "description": "The unique Google Cloud service account email required for the cost management setup.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique Google Cloud service account email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.service_account" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCostGCPUsageCostConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/gcp_uc_config", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.billing_account_id", + "tool_parameter_name": "google_cloud_billing_account_id", + "description": "The Google Cloud account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Google Cloud account ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.bucket_name", + "tool_parameter_name": "gcp_bucket_name", + "description": "The Google Cloud bucket name used to store the Usage Cost export.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Google Cloud bucket name used to store the Usage Cost export." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.export_dataset_name", + "tool_parameter_name": "gcp_usage_cost_export_dataset_name", + "description": "The export dataset name used for the Google Cloud Usage Cost report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The export dataset name used for the Google Cloud Usage Cost report." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.export_prefix", + "tool_parameter_name": "google_cloud_export_prefix", + "description": "The export prefix used for the Google Cloud Usage Cost report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The export prefix used for the Google Cloud Usage Cost report." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.export_project_name", + "tool_parameter_name": "gcp_usage_cost_report_name", + "description": "The name of the Google Cloud Usage Cost report.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Google Cloud Usage Cost report." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.service_account", + "tool_parameter_name": "google_cloud_service_account_email", + "description": "The unique Google Cloud service account email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique Google Cloud service account email." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "usage_cost_config_type", + "description": "Type of Google Cloud Usage Cost config post request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_uc_config_post_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Google Cloud Usage Cost config post request." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "gcp_uc_config_post_request", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Google Cloud Usage Cost config post request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Google Cloud Usage Cost config post data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for Google Cloud Usage Cost config post request.\",\n \"properties\": {\n \"billing_account_id\": {\n \"description\": \"The Google Cloud account ID.\",\n \"example\": \"123456_A123BC_12AB34\",\n \"type\": \"string\"\n },\n \"bucket_name\": {\n \"description\": \"The Google Cloud bucket name used to store the Usage Cost export.\",\n \"example\": \"dd-cost-bucket\",\n \"type\": \"string\"\n },\n \"export_dataset_name\": {\n \"description\": \"The export dataset name used for the Google Cloud Usage Cost report.\",\n \"example\": \"billing\",\n \"type\": \"string\"\n },\n \"export_prefix\": {\n \"description\": \"The export prefix used for the Google Cloud Usage Cost report.\",\n \"example\": \"datadog_cloud_cost_usage_export\",\n \"type\": \"string\"\n },\n \"export_project_name\": {\n \"description\": \"The name of the Google Cloud Usage Cost report.\",\n \"example\": \"dd-cloud-cost-report\",\n \"type\": \"string\"\n },\n \"service_account\": {\n \"description\": \"The unique Google Cloud service account email.\",\n \"example\": \"dd-ccm-gcp-integration@my-environment.iam.gserviceaccount.com\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"billing_account_id\",\n \"bucket_name\",\n \"export_project_name\",\n \"export_dataset_name\",\n \"service_account\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"gcp_uc_config_post_request\",\n \"description\": \"Type of Google Cloud Usage Cost config post request.\",\n \"enum\": [\n \"gcp_uc_config_post_request\"\n ],\n \"example\": \"gcp_usage_cost_config_post_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP_USAGE_COST_CONFIG_POST_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateGcpStsAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateGcpStsAccount.json new file mode 100644 index 00000000..56116978 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateGcpStsAccount.json @@ -0,0 +1,452 @@ +{ + "name": "CreateGcpStsAccount", + "fully_qualified_name": "DatadogApi.CreateGcpStsAccount@0.1.0", + "description": "Create a new GCP STS account entry in Datadog.\n\nUse this tool to create a new entry within Datadog for your STS-enabled Google Cloud Platform service account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "gcp_sts_account_details", + "required": true, + "description": "JSON object detailing GCP STS account attributes like account tags, client email, and configurations for security and monitoring.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to be associated with GCP metrics and service checks from your account." + }, + "automute": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Silence monitors for expected GCE instance shutdowns." + }, + "client_email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your service account email address." + }, + "cloud_run_revision_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags.\nOnly Cloud Run revision resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=cloud_run_revision`" + }, + "host_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the VM instances that are pulled into Datadog by using tags.\nOnly VM instance resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=gce_instance`" + }, + "is_cspm_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true." + }, + "is_per_project_quota_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog applies the `X-Goog-User-Project` header, attributing Google Cloud billing and quota usage to the project being monitored rather than the default service account project." + }, + "is_resource_change_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resource change data in your Google Cloud environment." + }, + "is_security_command_center_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account." + }, + "metric_namespace_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "disabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When disabled, Datadog does not collect metrics that are related to this GCP metric namespace." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the GCP metric namespace." + } + }, + "description": "Configurations for GCP metric namespaces." + }, + "monitored_resource_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the monitored resources that are pulled into Datadog by using tags.\nOnly monitored resources that apply to specified filters are imported into Datadog." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloud_function", + "cloud_run_revision", + "gce_instance" + ], + "properties": null, + "inner_properties": null, + "description": "The GCP monitored resource type. Only a subset of resource types are supported." + } + }, + "description": "Configurations for GCP monitored resources." + }, + "resource_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resources in your GCP environment." + } + }, + "inner_properties": null, + "description": "Attributes associated with your service account." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_service_account" + ], + "properties": null, + "inner_properties": null, + "description": "The type of account." + } + }, + "inner_properties": null, + "description": "Additional metadata on your generated service account." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateGCPSTSAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/gcp/accounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "gcp_sts_account_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to be associated with GCP metrics and service checks from your account." + }, + "automute": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Silence monitors for expected GCE instance shutdowns." + }, + "client_email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your service account email address." + }, + "cloud_run_revision_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags.\nOnly Cloud Run revision resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=cloud_run_revision`" + }, + "host_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the VM instances that are pulled into Datadog by using tags.\nOnly VM instance resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=gce_instance`" + }, + "is_cspm_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true." + }, + "is_per_project_quota_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog applies the `X-Goog-User-Project` header, attributing Google Cloud billing and quota usage to the project being monitored rather than the default service account project." + }, + "is_resource_change_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resource change data in your Google Cloud environment." + }, + "is_security_command_center_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account." + }, + "metric_namespace_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "disabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When disabled, Datadog does not collect metrics that are related to this GCP metric namespace." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the GCP metric namespace." + } + }, + "description": "Configurations for GCP metric namespaces." + }, + "monitored_resource_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the monitored resources that are pulled into Datadog by using tags.\nOnly monitored resources that apply to specified filters are imported into Datadog." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloud_function", + "cloud_run_revision", + "gce_instance" + ], + "properties": null, + "inner_properties": null, + "description": "The GCP monitored resource type. Only a subset of resource types are supported." + } + }, + "description": "Configurations for GCP monitored resources." + }, + "resource_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resources in your GCP environment." + } + }, + "inner_properties": null, + "description": "Attributes associated with your service account." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_service_account" + ], + "properties": null, + "inner_properties": null, + "description": "The type of account." + } + }, + "inner_properties": null, + "description": "Additional metadata on your generated service account." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Data on your newly generated service account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Additional metadata on your generated service account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes associated with your service account.\",\n \"properties\": {\n \"account_tags\": {\n \"description\": \"Tags to be associated with GCP metrics and service checks from your account.\",\n \"items\": {\n \"description\": \"Account Level Tag\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"automute\": {\n \"description\": \"Silence monitors for expected GCE instance shutdowns.\",\n \"type\": \"boolean\"\n },\n \"client_email\": {\n \"description\": \"Your service account email address.\",\n \"example\": \"datadog-service-account@test-project.iam.gserviceaccount.com\",\n \"type\": \"string\"\n },\n \"cloud_run_revision_filters\": {\n \"deprecated\": true,\n \"description\": \"List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags.\\nOnly Cloud Run revision resources that apply to specified filters are imported into Datadog.\\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=cloud_run_revision`\",\n \"example\": [\n \"$KEY:$VALUE\"\n ],\n \"items\": {\n \"description\": \"Cloud Run revision filters\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"host_filters\": {\n \"deprecated\": true,\n \"description\": \"List of filters to limit the VM instances that are pulled into Datadog by using tags.\\nOnly VM instance resources that apply to specified filters are imported into Datadog.\\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=gce_instance`\",\n \"example\": [\n \"$KEY:$VALUE\"\n ],\n \"items\": {\n \"description\": \"VM instance filters\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"is_cspm_enabled\": {\n \"description\": \"When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true.\",\n \"type\": \"boolean\"\n },\n \"is_per_project_quota_enabled\": {\n \"default\": false,\n \"description\": \"When enabled, Datadog applies the `X-Goog-User-Project` header, attributing Google Cloud billing and quota usage to the project being monitored rather than the default service account project.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"is_resource_change_collection_enabled\": {\n \"default\": false,\n \"description\": \"When enabled, Datadog scans for all resource change data in your Google Cloud environment.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"is_security_command_center_enabled\": {\n \"default\": false,\n \"description\": \"When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"metric_namespace_configs\": {\n \"description\": \"Configurations for GCP metric namespaces.\",\n \"example\": [\n {\n \"disabled\": true,\n \"id\": \"aiplatform\"\n }\n ],\n \"items\": {\n \"description\": \"Configuration for a GCP metric namespace.\",\n \"properties\": {\n \"disabled\": {\n \"default\": false,\n \"description\": \"When disabled, Datadog does not collect metrics that are related to this GCP metric namespace.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"The id of the GCP metric namespace.\",\n \"example\": \"aiplatform\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"monitored_resource_configs\": {\n \"description\": \"Configurations for GCP monitored resources.\",\n \"example\": [\n {\n \"filters\": [\n \"$KEY:$VALUE\"\n ],\n \"type\": \"gce_instance\"\n }\n ],\n \"items\": {\n \"description\": \"Configuration for a GCP monitored resource.\",\n \"properties\": {\n \"filters\": {\n \"description\": \"List of filters to limit the monitored resources that are pulled into Datadog by using tags.\\nOnly monitored resources that apply to specified filters are imported into Datadog.\",\n \"example\": [\n \"$KEY:$VALUE\"\n ],\n \"items\": {\n \"description\": \"A monitored resource filter\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The GCP monitored resource type. Only a subset of resource types are supported.\",\n \"enum\": [\n \"cloud_function\",\n \"cloud_run_revision\",\n \"gce_instance\"\n ],\n \"example\": \"gce_instance\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUD_FUNCTION\",\n \"CLOUD_RUN_REVISION\",\n \"GCE_INSTANCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resource_collection_enabled\": {\n \"description\": \"When enabled, Datadog scans for all resources in your GCP environment.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"gcp_service_account\",\n \"description\": \"The type of account.\",\n \"enum\": [\n \"gcp_service_account\"\n ],\n \"example\": \"gcp_service_account\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP_SERVICE_ACCOUNT\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncident.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncident.json new file mode 100644 index 00000000..76fe34cc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncident.json @@ -0,0 +1,436 @@ +{ + "name": "CreateIncident", + "fully_qualified_name": "DatadogApi.CreateIncident@0.1.0", + "description": "Create a new incident in Datadog.\n\nThis tool is used to create a new incident within Datadog's incident management system. Trigger this tool when there is a need to report or manage an incident requiring attention.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_payload", + "required": true, + "description": "A JSON object containing incident attributes like title, impact scope, and more. Include relationships and type as defined in the schema.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_impact_scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if `customer_impacted:\"true\"`. A summary of the impact customers experienced during the incident." + }, + "customer_impacted": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A flag indicating whether the incident caused customer impact." + }, + "fields": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A condensed view of the user-defined fields for which to create initial selections." + }, + "incident_type_uuid": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents an incident type. The default incident type will be used if this property is not provided." + }, + "initial_cells": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "An array of initial timeline cells to be placed at the beginning of the incident timeline." + }, + "is_test": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A flag indicating whether the incident is a test incident." + }, + "notification_handles": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notified handle." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The handle used for the notification. This includes an email address, Slack channel, or workflow." + } + }, + "description": "Notification handles that will be notified of the incident at creation." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the incident, which summarizes what happened." + } + }, + "inner_properties": null, + "description": "The incident's attributes for a create request." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "commander_user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "The relationships the incident will have with other resources once created." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incidents" + ], + "properties": null, + "inner_properties": null, + "description": "Incident resource type." + } + }, + "inner_properties": null, + "description": "Incident data for a create request." + } + }, + "inner_properties": null, + "description": "Incident payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateIncident'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "incident_payload", + "description": "Incident payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_impact_scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if `customer_impacted:\"true\"`. A summary of the impact customers experienced during the incident." + }, + "customer_impacted": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A flag indicating whether the incident caused customer impact." + }, + "fields": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A condensed view of the user-defined fields for which to create initial selections." + }, + "incident_type_uuid": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents an incident type. The default incident type will be used if this property is not provided." + }, + "initial_cells": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "An array of initial timeline cells to be placed at the beginning of the incident timeline." + }, + "is_test": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A flag indicating whether the incident is a test incident." + }, + "notification_handles": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notified handle." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The handle used for the notification. This includes an email address, Slack channel, or workflow." + } + }, + "description": "Notification handles that will be notified of the incident at creation." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the incident, which summarizes what happened." + } + }, + "inner_properties": null, + "description": "The incident's attributes for a create request." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "commander_user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "The relationships the incident will have with other resources once created." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incidents" + ], + "properties": null, + "inner_properties": null, + "description": "Incident resource type." + } + }, + "inner_properties": null, + "description": "Incident data for a create request." + } + }, + "inner_properties": null, + "description": "Incident payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for an incident.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The incident's attributes for a create request.\",\n \"properties\": {\n \"customer_impact_scope\": {\n \"description\": \"Required if `customer_impacted:\\\"true\\\"`. A summary of the impact customers experienced during the incident.\",\n \"example\": \"Example customer impact scope\",\n \"type\": \"string\"\n },\n \"customer_impacted\": {\n \"description\": \"A flag indicating whether the incident caused customer impact.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"fields\": {\n \"additionalProperties\": {\n \"description\": \"Dynamic fields for which selections can be made, with field names as keys.\",\n \"oneOf\": [\n {\n \"description\": \"A field with a single value selected.\",\n \"properties\": {\n \"type\": {\n \"default\": \"dropdown\",\n \"description\": \"Type of the single value field definitions.\",\n \"enum\": [\n \"dropdown\",\n \"textbox\"\n ],\n \"example\": \"dropdown\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DROPDOWN\",\n \"TEXTBOX\"\n ]\n },\n \"value\": {\n \"description\": \"The single value selected for this field.\",\n \"example\": \"SEV-1\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n {\n \"description\": \"A field with potentially multiple values selected.\",\n \"properties\": {\n \"type\": {\n \"default\": \"multiselect\",\n \"description\": \"Type of the multiple value field definitions.\",\n \"enum\": [\n \"multiselect\",\n \"textarray\",\n \"metrictag\",\n \"autocomplete\"\n ],\n \"example\": \"multiselect\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MULTISELECT\",\n \"TEXTARRAY\",\n \"METRICTAG\",\n \"AUTOCOMPLETE\"\n ]\n },\n \"value\": {\n \"description\": \"The multiple values selected for this field.\",\n \"example\": [\n \"1.0\",\n \"1.1\"\n ],\n \"items\": {\n \"description\": \"A value which has been selected for the parent field.\",\n \"example\": \"1.1\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n ]\n },\n \"description\": \"A condensed view of the user-defined fields for which to create initial selections.\",\n \"example\": {\n \"severity\": {\n \"type\": \"dropdown\",\n \"value\": \"SEV-5\"\n }\n },\n \"type\": \"object\"\n },\n \"incident_type_uuid\": {\n \"description\": \"A unique identifier that represents an incident type. The default incident type will be used if this property is not provided.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"initial_cells\": {\n \"description\": \"An array of initial timeline cells to be placed at the beginning of the incident timeline.\",\n \"items\": {\n \"description\": \"The timeline cell's attributes for a create request.\",\n \"oneOf\": [\n {\n \"description\": \"Timeline cell data for Markdown timeline cells for a create request.\",\n \"properties\": {\n \"cell_type\": {\n \"default\": \"markdown\",\n \"description\": \"Type of the Markdown timeline cell.\",\n \"enum\": [\n \"markdown\"\n ],\n \"example\": \"markdown\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MARKDOWN\"\n ]\n },\n \"content\": {\n \"description\": \"The Markdown timeline cell contents.\",\n \"properties\": {\n \"content\": {\n \"description\": \"The Markdown content of the cell.\",\n \"example\": \"An example timeline cell message.\",\n \"nullable\": false,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"important\": {\n \"default\": false,\n \"description\": \"A flag indicating whether the timeline cell is important and should be highlighted.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"content\",\n \"cell_type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"is_test\": {\n \"description\": \"A flag indicating whether the incident is a test incident.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"notification_handles\": {\n \"description\": \"Notification handles that will be notified of the incident at creation.\",\n \"example\": [\n {\n \"display_name\": \"Jane Doe\",\n \"handle\": \"@user@email.com\"\n },\n {\n \"display_name\": \"Slack Channel\",\n \"handle\": \"@slack-channel\"\n },\n {\n \"display_name\": \"Incident Workflow\",\n \"handle\": \"@workflow-from-incident\"\n }\n ],\n \"items\": {\n \"description\": \"A notification handle that will be notified at incident creation.\",\n \"properties\": {\n \"display_name\": {\n \"description\": \"The name of the notified handle.\",\n \"example\": \"Jane Doe\",\n \"type\": \"string\"\n },\n \"handle\": {\n \"description\": \"The handle used for the notification. This includes an email address, Slack channel, or workflow.\",\n \"example\": \"@test.user@test.com\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"title\": {\n \"description\": \"The title of the incident, which summarizes what happened.\",\n \"example\": \"A test incident title\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"customer_impacted\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"The relationships the incident will have with other resources once created.\",\n \"properties\": {\n \"commander_user\": {\n \"description\": \"Relationship to user.\",\n \"nullable\": true,\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"nullable\": true,\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"commander_user\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incidents\",\n \"description\": \"Incident resource type.\",\n \"enum\": [\n \"incidents\"\n ],\n \"example\": \"incidents\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENTS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentImpact.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentImpact.json new file mode 100644 index 00000000..c419ce6e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentImpact.json @@ -0,0 +1,314 @@ +{ + "name": "CreateIncidentImpact", + "fully_qualified_name": "DatadogApi.CreateIncidentImpact@0.1.0", + "description": "Create an impact for a specific incident.\n\nThis tool is used to create an impact for a specified incident. It should be called when there is a need to log or document the impact details of an ongoing or past incident.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) for the incident. This is required to log impact details for the specified incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_impact_payload", + "required": true, + "description": "A JSON object detailing the impact, including 'attributes' with 'description', 'start_at', 'end_at', 'fields', and 'type' as 'incident_impacts'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 impact." + }, + "end_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the impact ended." + }, + "fields": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An object mapping impact field names to field values." + }, + "start_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the impact started." + } + }, + "inner_properties": null, + "description": "The incident impact's attributes for a create request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_impacts" + ], + "properties": null, + "inner_properties": null, + "description": "Incident impact resource type." + } + }, + "inner_properties": null, + "description": "Incident impact data for a create request." + } + }, + "inner_properties": null, + "description": "Incident impact payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "included_resources", + "required": false, + "description": "List of related resources to include in the response, such as 'users' or 'details'.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which related resources should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateIncidentImpact'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/impacts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "included_resources", + "description": "Specifies which related resources should be included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which related resources should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_impact_payload", + "description": "Incident impact payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 impact." + }, + "end_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the impact ended." + }, + "fields": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An object mapping impact field names to field values." + }, + "start_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the impact started." + } + }, + "inner_properties": null, + "description": "The incident impact's attributes for a create request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_impacts" + ], + "properties": null, + "inner_properties": null, + "description": "Incident impact resource type." + } + }, + "inner_properties": null, + "description": "Incident impact data for a create request." + } + }, + "inner_properties": null, + "description": "Incident impact payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for an incident impact.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident impact data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The incident impact's attributes for a create request.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of the impact.\",\n \"example\": \"Service was unavailable for external users\",\n \"type\": \"string\"\n },\n \"end_at\": {\n \"description\": \"Timestamp when the impact ended.\",\n \"example\": \"2025-08-29T13:17:00Z\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fields\": {\n \"additionalProperties\": {},\n \"description\": \"An object mapping impact field names to field values.\",\n \"example\": {\n \"customers_impacted\": \"all\",\n \"products_impacted\": [\n \"shopping\",\n \"marketing\"\n ]\n },\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"start_at\": {\n \"description\": \"Timestamp when the impact started.\",\n \"example\": \"2025-08-28T13:17:00Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"description\",\n \"start_at\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incident_impacts\",\n \"description\": \"Incident impact resource type.\",\n \"enum\": [\n \"incident_impacts\"\n ],\n \"example\": \"incident_impacts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_IMPACTS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident impact payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentIntegration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentIntegration.json new file mode 100644 index 00000000..446ec2b3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentIntegration.json @@ -0,0 +1,313 @@ +{ + "name": "CreateIncidentIntegration", + "fully_qualified_name": "DatadogApi.CreateIncidentIntegration@0.1.0", + "description": "Create incident integration metadata for an incident.\n\nUse this tool to create integration metadata related to a specific incident in Datadog. It facilitates linking external integrations to an incident for enhanced tracking and management.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident to create integration metadata for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_integration_metadata", + "required": true, + "description": "JSON payload containing incident integration metadata. Must include attributes like created, modified, integration_type, metadata, status, and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this integration metadata is connected to." + }, + "integration_type": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the type of integration this metadata is for. 1 indicates Slack;\n8 indicates Jira." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Incident integration metadata's metadata attribute." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + }, + "status": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the status of this integration metadata. 0 indicates unknown;\n1 indicates pending; 2 indicates complete; 3 indicates manually created;\n4 indicates manually updated; 5 indicates failed." + } + }, + "inner_properties": null, + "description": "Incident integration metadata's attributes for a create request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_integrations" + ], + "properties": null, + "inner_properties": null, + "description": "Integration metadata resource type." + } + }, + "inner_properties": null, + "description": "Incident integration metadata data for a create request." + } + }, + "inner_properties": null, + "description": "Incident integration metadata payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateIncidentIntegration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_integration_metadata", + "description": "Incident integration metadata payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this integration metadata is connected to." + }, + "integration_type": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the type of integration this metadata is for. 1 indicates Slack;\n8 indicates Jira." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Incident integration metadata's metadata attribute." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + }, + "status": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the status of this integration metadata. 0 indicates unknown;\n1 indicates pending; 2 indicates complete; 3 indicates manually created;\n4 indicates manually updated; 5 indicates failed." + } + }, + "inner_properties": null, + "description": "Incident integration metadata's attributes for a create request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_integrations" + ], + "properties": null, + "inner_properties": null, + "description": "Integration metadata resource type." + } + }, + "inner_properties": null, + "description": "Incident integration metadata data for a create request." + } + }, + "inner_properties": null, + "description": "Incident integration metadata payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for an incident integration metadata.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident integration metadata data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Incident integration metadata's attributes for a create request.\",\n \"properties\": {\n \"created\": {\n \"description\": \"Timestamp when the incident todo was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"incident_id\": {\n \"description\": \"UUID of the incident this integration metadata is connected to.\",\n \"example\": \"00000000-aaaa-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"integration_type\": {\n \"description\": \"A number indicating the type of integration this metadata is for. 1 indicates Slack;\\n8 indicates Jira.\",\n \"example\": 1,\n \"format\": \"int32\",\n \"maximum\": 9,\n \"type\": \"integer\"\n },\n \"metadata\": {\n \"description\": \"Incident integration metadata's metadata attribute.\",\n \"oneOf\": [\n {\n \"description\": \"Incident integration metadata for the Slack integration.\",\n \"properties\": {\n \"channels\": {\n \"description\": \"Array of Slack channels in this integration metadata.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Item in the Slack integration metadata channel array.\",\n \"properties\": {\n \"channel_id\": {\n \"description\": \"Slack channel ID.\",\n \"example\": \"C0123456789\",\n \"type\": \"string\"\n },\n \"channel_name\": {\n \"description\": \"Name of the Slack channel.\",\n \"example\": \"#example-channel-name\",\n \"type\": \"string\"\n },\n \"redirect_url\": {\n \"description\": \"URL redirecting to the Slack channel.\",\n \"example\": \"https://slack.com/app_redirect?channel=C0123456789&team=T01234567\",\n \"type\": \"string\"\n },\n \"team_id\": {\n \"description\": \"Slack team ID.\",\n \"example\": \"T01234567\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel_id\",\n \"channel_name\",\n \"redirect_url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"channels\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Incident integration metadata for the Jira integration.\",\n \"properties\": {\n \"issues\": {\n \"description\": \"Array of Jira issues in this integration metadata.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Item in the Jira integration metadata issue array.\",\n \"properties\": {\n \"account\": {\n \"description\": \"URL of issue's Jira account.\",\n \"example\": \"https://example.atlassian.net\",\n \"type\": \"string\"\n },\n \"issue_key\": {\n \"description\": \"Jira issue's issue key.\",\n \"example\": \"PROJ-123\",\n \"type\": \"string\"\n },\n \"issuetype_id\": {\n \"description\": \"Jira issue's issue type.\",\n \"example\": \"1000\",\n \"type\": \"string\"\n },\n \"project_key\": {\n \"description\": \"Jira issue's project keys.\",\n \"example\": \"PROJ\",\n \"type\": \"string\"\n },\n \"redirect_url\": {\n \"description\": \"URL redirecting to the Jira issue.\",\n \"example\": \"https://example.atlassian.net/browse/PROJ-123\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"project_key\",\n \"account\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"issues\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Incident integration metadata for the Microsoft Teams integration.\",\n \"properties\": {\n \"teams\": {\n \"description\": \"Array of Microsoft Teams in this integration metadata.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Item in the Microsoft Teams integration metadata teams array.\",\n \"properties\": {\n \"ms_channel_id\": {\n \"description\": \"Microsoft Teams channel ID.\",\n \"example\": \"19:abc00abcdef00a0abcdef0abcdef0a@thread.tacv2\",\n \"type\": \"string\"\n },\n \"ms_channel_name\": {\n \"description\": \"Microsoft Teams channel name.\",\n \"example\": \"incident-0001-example\",\n \"type\": \"string\"\n },\n \"ms_tenant_id\": {\n \"description\": \"Microsoft Teams tenant ID.\",\n \"example\": \"00000000-abcd-0005-0000-000000000000\",\n \"type\": \"string\"\n },\n \"redirect_url\": {\n \"description\": \"URL redirecting to the Microsoft Teams channel.\",\n \"example\": \"https://teams.microsoft.com/l/channel/19%3Aabc00abcdef00a0abcdef0abcdef0a%40thread.tacv2/conversations?groupId=12345678-abcd-dcba-abcd-1234567890ab&tenantId=00000000-abcd-0005-0000-000000000000\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ms_tenant_id\",\n \"ms_channel_id\",\n \"ms_channel_name\",\n \"redirect_url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"teams\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"modified\": {\n \"description\": \"Timestamp when the incident todo was last modified.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"A number indicating the status of this integration metadata. 0 indicates unknown;\\n1 indicates pending; 2 indicates complete; 3 indicates manually created;\\n4 indicates manually updated; 5 indicates failed.\",\n \"format\": \"int32\",\n \"maximum\": 5,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"integration_type\",\n \"metadata\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incident_integrations\",\n \"description\": \"Integration metadata resource type.\",\n \"enum\": [\n \"incident_integrations\"\n ],\n \"example\": \"incident_integrations\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_INTEGRATIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident integration metadata payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentNotificationRule.json new file mode 100644 index 00000000..43bb13ad --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentNotificationRule.json @@ -0,0 +1,484 @@ +{ + "name": "CreateIncidentNotificationRule", + "fully_qualified_name": "DatadogApi.CreateIncidentNotificationRule@0.1.0", + "description": "Creates a new incident notification rule in Datadog.\n\nUse this tool to create and manage notification rules for incidents in Datadog. It should be called when there is a need to set up a new notification rule for monitoring incident alerts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "notification_rule_data", + "required": true, + "description": "JSON object containing attributes and relationships to create a notification rule, including conditions, handles, trigger, and visibility.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "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": "The incident field to evaluate" + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value(s) to compare against. Multiple values are `ORed` together." + } + }, + "description": "The conditions that trigger this notification rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the notification rule is enabled." + }, + "handles": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notification handles (targets) for this rule." + }, + "renotify_on": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of incident fields that trigger re-notification when changed." + }, + "trigger": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The trigger event for this notification rule." + }, + "visibility": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "organization", + "private" + ], + "properties": null, + "inner_properties": null, + "description": "The visibility of the notification rule." + } + }, + "inner_properties": null, + "description": "The attributes for creating a notification rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "incident_type": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + } + }, + "inner_properties": null, + "description": "Relationship to incident type object." + } + }, + "inner_properties": null, + "description": "Relationship to an incident type." + }, + "notification_template": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + } + }, + "inner_properties": null, + "description": "The notification template relationship data." + } + }, + "inner_properties": null, + "description": "A relationship reference to a notification template." + } + }, + "inner_properties": null, + "description": "The definition of `NotificationRuleCreateDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_notification_rules" + ], + "properties": null, + "inner_properties": null, + "description": "Notification rules resource type." + } + }, + "inner_properties": null, + "description": "Notification rule data for a create request." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateIncidentNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "notification_rule_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "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": "The incident field to evaluate" + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value(s) to compare against. Multiple values are `ORed` together." + } + }, + "description": "The conditions that trigger this notification rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the notification rule is enabled." + }, + "handles": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notification handles (targets) for this rule." + }, + "renotify_on": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of incident fields that trigger re-notification when changed." + }, + "trigger": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The trigger event for this notification rule." + }, + "visibility": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "organization", + "private" + ], + "properties": null, + "inner_properties": null, + "description": "The visibility of the notification rule." + } + }, + "inner_properties": null, + "description": "The attributes for creating a notification rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "incident_type": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + } + }, + "inner_properties": null, + "description": "Relationship to incident type object." + } + }, + "inner_properties": null, + "description": "Relationship to an incident type." + }, + "notification_template": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + } + }, + "inner_properties": null, + "description": "The notification template relationship data." + } + }, + "inner_properties": null, + "description": "A relationship reference to a notification template." + } + }, + "inner_properties": null, + "description": "The definition of `NotificationRuleCreateDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_notification_rules" + ], + "properties": null, + "inner_properties": null, + "description": "Notification rules resource type." + } + }, + "inner_properties": null, + "description": "Notification rule data for a create request." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for a notification rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Notification rule data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes for creating a notification rule.\",\n \"properties\": {\n \"conditions\": {\n \"description\": \"The conditions that trigger this notification rule.\",\n \"example\": [\n {\n \"field\": \"severity\",\n \"values\": [\n \"SEV-1\",\n \"SEV-2\"\n ]\n }\n ],\n \"items\": {\n \"description\": \"A condition that must be met to trigger the notification rule.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The incident field to evaluate\",\n \"example\": \"severity\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The value(s) to compare against. Multiple values are `ORed` together.\",\n \"example\": [\n \"SEV-1\",\n \"SEV-2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"field\",\n \"values\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"default\": false,\n \"description\": \"Whether the notification rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"handles\": {\n \"description\": \"The notification handles (targets) for this rule.\",\n \"example\": [\n \"@team-email@company.com\",\n \"@slack-channel\"\n ],\n \"items\": {\n \"description\": \"A notification handle (email, Slack channel, etc.).\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"renotify_on\": {\n \"description\": \"List of incident fields that trigger re-notification when changed.\",\n \"example\": [\n \"status\",\n \"severity\"\n ],\n \"items\": {\n \"description\": \"An incident field name.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"trigger\": {\n \"description\": \"The trigger event for this notification rule.\",\n \"example\": \"incident_created_trigger\",\n \"type\": \"string\"\n },\n \"visibility\": {\n \"description\": \"The visibility of the notification rule.\",\n \"enum\": [\n \"all\",\n \"organization\",\n \"private\"\n ],\n \"example\": \"organization\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALL\",\n \"ORGANIZATION\",\n \"PRIVATE\"\n ]\n }\n },\n \"required\": [\n \"conditions\",\n \"handles\",\n \"trigger\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"The definition of `NotificationRuleCreateDataRelationships` object.\",\n \"properties\": {\n \"incident_type\": {\n \"description\": \"Relationship to an incident type.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to incident type object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The incident type's ID.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"incident_types\",\n \"description\": \"Incident type resource type.\",\n \"enum\": [\n \"incident_types\"\n ],\n \"example\": \"incident_types\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_TYPES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n },\n \"notification_template\": {\n \"description\": \"A relationship reference to a notification template.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The notification template relationship data.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the notification template.\",\n \"example\": \"00000000-0000-0000-0000-000000000001\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Notification templates resource type.\",\n \"enum\": [\n \"notification_templates\"\n ],\n \"example\": \"notification_templates\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTIFICATION_TEMPLATES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Notification rules resource type.\",\n \"enum\": [\n \"incident_notification_rules\"\n ],\n \"example\": \"incident_notification_rules\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_NOTIFICATION_RULES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentNotificationTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentNotificationTemplate.json new file mode 100644 index 00000000..ee3fecaa --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentNotificationTemplate.json @@ -0,0 +1,332 @@ +{ + "name": "CreateIncidentNotificationTemplate", + "fully_qualified_name": "DatadogApi.CreateIncidentNotificationTemplate@0.1.0", + "description": "Creates a new incident notification template.\n\nUse this tool to create a new notification template for incidents. It should be called when there is a need to set up or customize notifications related to incident management.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "notification_template_category", + "required": true, + "description": "The category of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.category" + }, + { + "name": "notification_content_body", + "required": true, + "description": "The body content for the notification template, describing the detailed message of the notification.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The content body of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.content" + }, + { + "name": "notification_template_name", + "required": true, + "description": "The name for the notification template to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "notification_subject", + "required": true, + "description": "The subject line for the notification template. This sets the subject of the template being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject line of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.subject" + }, + { + "name": "resource_type_notification_template", + "required": true, + "description": "Specify the resource type for notification templates, which should be 'notification_templates'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "incident_type_id", + "required": false, + "description": "The ID of the incident type to associate with the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.incident_type.data.id" + }, + { + "name": "incident_type_resource_type", + "required": false, + "description": "The resource type for the incident, which should be 'incident_types'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.incident_type.data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateIncidentNotificationTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-templates", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.category", + "tool_parameter_name": "notification_template_category", + "description": "The category of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the notification template." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.content", + "tool_parameter_name": "notification_content_body", + "description": "The content body of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The content body of the notification template." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "notification_template_name", + "description": "The name of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notification template." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.subject", + "tool_parameter_name": "notification_subject", + "description": "The subject line of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject line of the notification template." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.incident_type.data.id", + "tool_parameter_name": "incident_type_id", + "description": "The incident type's ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.incident_type.data.type", + "tool_parameter_name": "incident_type_resource_type", + "description": "Incident type resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "incident_types", + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type_notification_template", + "description": "Notification templates resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for a notification template.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Notification template data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes for creating a notification template.\",\n \"properties\": {\n \"category\": {\n \"description\": \"The category of the notification template.\",\n \"example\": \"alert\",\n \"type\": \"string\"\n },\n \"content\": {\n \"description\": \"The content body of the notification template.\",\n \"example\": \"An incident has been declared.\\n\\nTitle: {{incident.title}}\\nSeverity: {{incident.severity}}\\nAffected Services: {{incident.services}}\\nStatus: {{incident.state}}\\n\\nPlease join the incident channel for updates.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the notification template.\",\n \"example\": \"Incident Alert Template\",\n \"type\": \"string\"\n },\n \"subject\": {\n \"description\": \"The subject line of the notification template.\",\n \"example\": \"{{incident.severity}} Incident: {{incident.title}}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"subject\",\n \"content\",\n \"category\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"The definition of `NotificationTemplateCreateDataRelationships` object.\",\n \"properties\": {\n \"incident_type\": {\n \"description\": \"Relationship to an incident type.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to incident type object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The incident type's ID.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"incident_types\",\n \"description\": \"Incident type resource type.\",\n \"enum\": [\n \"incident_types\"\n ],\n \"example\": \"incident_types\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_TYPES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Notification templates resource type.\",\n \"enum\": [\n \"notification_templates\"\n ],\n \"example\": \"notification_templates\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTIFICATION_TEMPLATES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentTodo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentTodo.json new file mode 100644 index 00000000..40a1294c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentTodo.json @@ -0,0 +1,329 @@ +{ + "name": "CreateIncidentTodo", + "fully_qualified_name": "DatadogApi.CreateIncidentTodo@0.1.0", + "description": "Create a task within an incident in Datadog.\n\nThis tool is used to add a to-do item to an incident in Datadog, helping manage and track tasks related to incident resolution.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The UUID of the incident for which the to-do is being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_todo_payload", + "required": true, + "description": "Incident todo payload containing attributes like assignees, timestamps, content, and incident ID.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "assignees": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Array of todo assignees." + }, + "completed": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo was completed." + }, + "content": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The follow-up task's content." + }, + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo should be completed by." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this todo is connected to." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + } + }, + "inner_properties": null, + "description": "Incident todo's attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_todos" + ], + "properties": null, + "inner_properties": null, + "description": "Todo resource type." + } + }, + "inner_properties": null, + "description": "Incident todo data for a create request." + } + }, + "inner_properties": null, + "description": "Incident todo payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateIncidentTodo'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_todo_payload", + "description": "Incident todo payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "assignees": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Array of todo assignees." + }, + "completed": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo was completed." + }, + "content": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The follow-up task's content." + }, + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo should be completed by." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this todo is connected to." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + } + }, + "inner_properties": null, + "description": "Incident todo's attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_todos" + ], + "properties": null, + "inner_properties": null, + "description": "Todo resource type." + } + }, + "inner_properties": null, + "description": "Incident todo data for a create request." + } + }, + "inner_properties": null, + "description": "Incident todo payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for an incident todo.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident todo data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Incident todo's attributes.\",\n \"properties\": {\n \"assignees\": {\n \"description\": \"Array of todo assignees.\",\n \"example\": [\n \"@test.user@test.com\"\n ],\n \"items\": {\n \"description\": \"A todo assignee.\",\n \"example\": \"@test.user@test.com\",\n \"oneOf\": [\n {\n \"description\": \"Assignee's @-handle.\",\n \"example\": \"@test.user@test.com\",\n \"type\": \"string\"\n },\n {\n \"description\": \"Anonymous assignee entity.\",\n \"properties\": {\n \"icon\": {\n \"description\": \"URL for assignee's icon.\",\n \"example\": \"https://a.slack-edge.com/80588/img/slackbot_48.png\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Anonymous assignee's ID.\",\n \"example\": \"USLACKBOT\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Assignee's name.\",\n \"example\": \"Slackbot\",\n \"type\": \"string\"\n },\n \"source\": {\n \"default\": \"slack\",\n \"description\": \"The source of the anonymous assignee.\",\n \"enum\": [\n \"slack\",\n \"microsoft_teams\"\n ],\n \"example\": \"slack\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SLACK\",\n \"MICROSOFT_TEAMS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"icon\",\n \"name\",\n \"source\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"completed\": {\n \"description\": \"Timestamp when the todo was completed.\",\n \"example\": \"2023-03-06T22:00:00.000000+00:00\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"content\": {\n \"description\": \"The follow-up task's content.\",\n \"example\": \"Restore lost data.\",\n \"type\": \"string\"\n },\n \"created\": {\n \"description\": \"Timestamp when the incident todo was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"due_date\": {\n \"description\": \"Timestamp when the todo should be completed by.\",\n \"example\": \"2023-07-10T05:00:00.000000+00:00\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"incident_id\": {\n \"description\": \"UUID of the incident this todo is connected to.\",\n \"example\": \"00000000-aaaa-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"modified\": {\n \"description\": \"Timestamp when the incident todo was last modified.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"content\",\n \"assignees\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incident_todos\",\n \"description\": \"Todo resource type.\",\n \"enum\": [\n \"incident_todos\"\n ],\n \"example\": \"incident_todos\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_TODOS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident todo payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentType.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentType.json new file mode 100644 index 00000000..13dabf0d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateIncidentType.json @@ -0,0 +1,394 @@ +{ + "name": "CreateIncidentType", + "fully_qualified_name": "DatadogApi.CreateIncidentType@0.1.0", + "description": "Create a new incident type in Datadog.\n\nThis tool is used to create a new incident type in Datadog, allowing users to define categories for managing incidents effectively.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_type_name", + "required": true, + "description": "The name of the incident type to be created in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the incident type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "incident_type_resource_type", + "required": true, + "description": "Specifies the incident type resource type. Must be 'incident_types'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "incident_creation_timestamp", + "required": false, + "description": "Timestamp indicating when the incident type was created. Format should be ISO 8601.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was created." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.createdAt" + }, + { + "name": "creator_user_id", + "required": false, + "description": "A unique ID representing the user who created the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that created the incident type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.createdBy" + }, + { + "name": "incident_type_description", + "required": false, + "description": "Text that describes the incident type. Provide a clear, concise explanation to aid in management and identification.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text that describes the incident type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "last_modified_user_id", + "required": false, + "description": "Unique identifier for the user who last modified the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that last modified the incident type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.lastModifiedBy" + }, + { + "name": "last_modified_timestamp", + "required": false, + "description": "Timestamp indicating when the incident type was last modified. Use ISO 8601 format, e.g., '2023-10-01T14:30:00Z'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was last modified." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.modifiedAt" + }, + { + "name": "incident_title_prefix", + "required": false, + "description": "The string prepended to the incident title throughout the Datadog app.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The string that will be prepended to the incident title across the Datadog app." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.prefix" + }, + { + "name": "set_as_default_incident_type", + "required": false, + "description": "Set to true to make this the default incident type if no type is specified during incident creation.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, this incident type will be used as the default incident type if a type is not specified during the creation of incident resources." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.is_default" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateIncidentType'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/types", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.createdAt", + "tool_parameter_name": "incident_creation_timestamp", + "description": "Timestamp when the incident type was created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was created." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.createdBy", + "tool_parameter_name": "creator_user_id", + "description": "A unique identifier that represents the user that created the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that created the incident type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "incident_type_description", + "description": "Text that describes the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text that describes the incident type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.is_default", + "tool_parameter_name": "set_as_default_incident_type", + "description": "If true, this incident type will be used as the default incident type if a type is not specified during the creation of incident resources.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, this incident type will be used as the default incident type if a type is not specified during the creation of incident resources." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + }, + { + "name": "data.attributes.lastModifiedBy", + "tool_parameter_name": "last_modified_user_id", + "description": "A unique identifier that represents the user that last modified the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that last modified the incident type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.modifiedAt", + "tool_parameter_name": "last_modified_timestamp", + "description": "Timestamp when the incident type was last modified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was last modified." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "incident_type_name", + "description": "The name of the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the incident type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.prefix", + "tool_parameter_name": "incident_title_prefix", + "description": "The string that will be prepended to the incident title across the Datadog app.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The string that will be prepended to the incident title across the Datadog app." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "incident_type_resource_type", + "description": "Incident type resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "incident_types", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for an incident type.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident type data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Incident type's attributes.\",\n \"properties\": {\n \"createdAt\": {\n \"description\": \"Timestamp when the incident type was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"createdBy\": {\n \"description\": \"A unique identifier that represents the user that created the incident type.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Text that describes the incident type.\",\n \"example\": \"Any incidents that harm (or have the potential to) the confidentiality, integrity, or availability of our data.\",\n \"type\": \"string\"\n },\n \"is_default\": {\n \"default\": false,\n \"description\": \"If true, this incident type will be used as the default incident type if a type is not specified during the creation of incident resources.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"lastModifiedBy\": {\n \"description\": \"A unique identifier that represents the user that last modified the incident type.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"modifiedAt\": {\n \"description\": \"Timestamp when the incident type was last modified.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the incident type.\",\n \"example\": \"Security Incident\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"description\": \"The string that will be prepended to the incident title across the Datadog app.\",\n \"example\": \"IR\",\n \"readOnly\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incident_types\",\n \"description\": \"Incident type resource type.\",\n \"enum\": [\n \"incident_types\"\n ],\n \"example\": \"incident_types\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_TYPES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident type payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateLogBasedMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateLogBasedMetric.json new file mode 100644 index 00000000..7b9ed5fe --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateLogBasedMetric.json @@ -0,0 +1,356 @@ +{ + "name": "CreateLogBasedMetric", + "fully_qualified_name": "DatadogApi.CreateLogBasedMetric@0.1.0", + "description": "Create a metric from your ingested logs.\n\nUse this tool to create a metric based on the logs ingested in your Datadog organization. It returns the log-based metric object when the request is successful.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "log_based_metric_definition", + "required": true, + "description": "Definition and properties of the log-based metric to be created, including compute rules, filters, and grouping rules.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The type of aggregation to use." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the log-based metric will aggregate on (only used if the aggregation type is a \"distribution\")." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the log-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + } + }, + "inner_properties": null, + "description": "The log-based metric filter. Logs matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the log-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The object describing the Datadog log-based metric to create." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be logs_metrics." + } + }, + "inner_properties": null, + "description": "The new log-based metric properties." + } + }, + "inner_properties": null, + "description": "The definition of the new log-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateLogsMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/metrics", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "log_based_metric_definition", + "description": "The definition of the new log-based metric.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The type of aggregation to use." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the log-based metric will aggregate on (only used if the aggregation type is a \"distribution\")." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the log-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + } + }, + "inner_properties": null, + "description": "The log-based metric filter. Logs matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the log-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The object describing the Datadog log-based metric to create." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be logs_metrics." + } + }, + "inner_properties": null, + "description": "The new log-based metric properties." + } + }, + "inner_properties": null, + "description": "The definition of the new log-based metric." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The new log-based metric body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new log-based metric properties.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing the Datadog log-based metric to create.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The compute rule to compute the log-based metric.\",\n \"properties\": {\n \"aggregation_type\": {\n \"description\": \"The type of aggregation to use.\",\n \"enum\": [\n \"count\",\n \"distribution\"\n ],\n \"example\": \"distribution\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"DISTRIBUTION\"\n ]\n },\n \"include_percentiles\": {\n \"description\": \"Toggle to include or exclude percentile aggregations for distribution metrics.\\nOnly present when the `aggregation_type` is `distribution`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"The path to the value the log-based metric will aggregate on (only used if the aggregation type is a \\\"distribution\\\").\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"aggregation_type\"\n ],\n \"type\": \"object\"\n },\n \"filter\": {\n \"description\": \"The log-based metric filter. Logs matching this filter will be aggregated in this metric.\",\n \"properties\": {\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the log search syntax.\",\n \"example\": \"service:web* AND @http.status_code:[200 TO 299]\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group by rule.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The path to the value the log-based metric will be aggregated over.\",\n \"example\": \"@http.status_code\",\n \"type\": \"string\"\n },\n \"tag_name\": {\n \"description\": \"Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.\",\n \"example\": \"status_code\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"compute\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The name of the log-based metric.\",\n \"example\": \"logs.page.load.count\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"logs_metrics\",\n \"description\": \"The type of the resource. The value should always be logs_metrics.\",\n \"enum\": [\n \"logs_metrics\"\n ],\n \"example\": \"logs_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS_METRICS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new log-based metric.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateLogsArchive.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateLogsArchive.json new file mode 100644 index 00000000..b12789e0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateLogsArchive.json @@ -0,0 +1,276 @@ +{ + "name": "CreateLogsArchive", + "fully_qualified_name": "DatadogApi.CreateLogsArchive@0.1.0", + "description": "Create an archive of logs in your organization.\n\nUse this tool to create a new archive for logs within your organization through Datadog. This is useful for organizing and storing logs for compliance or analysis purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_definition", + "required": true, + "description": "The JSON definition of the new logs archive, including attributes like name, destination, query, and rehydration options.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An archive's destination." + }, + "include_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To store the tags in the archive, set the value \"true\".\nIf it is set to \"false\", the tags will be deleted when the logs are sent to the archive." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive query/filter. Logs matching this query are included in the archive." + }, + "rehydration_max_scan_size_in_gb": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum scan size for rehydration from this archive." + }, + "rehydration_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An array of tags to add to rehydrated logs from an archive." + } + }, + "inner_properties": null, + "description": "The attributes associated with the archive." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be archives." + } + }, + "inner_properties": null, + "description": "The definition of an archive." + } + }, + "inner_properties": null, + "description": "The definition of the new archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateLogsArchive'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "archive_definition", + "description": "The definition of the new archive.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An archive's destination." + }, + "include_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To store the tags in the archive, set the value \"true\".\nIf it is set to \"false\", the tags will be deleted when the logs are sent to the archive." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive query/filter. Logs matching this query are included in the archive." + }, + "rehydration_max_scan_size_in_gb": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum scan size for rehydration from this archive." + }, + "rehydration_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An array of tags to add to rehydrated logs from an archive." + } + }, + "inner_properties": null, + "description": "The attributes associated with the archive." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be archives." + } + }, + "inner_properties": null, + "description": "The definition of an archive." + } + }, + "inner_properties": null, + "description": "The definition of the new archive." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The logs archive.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of an archive.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes associated with the archive.\",\n \"properties\": {\n \"destination\": {\n \"description\": \"An archive's destination.\",\n \"oneOf\": [\n {\n \"description\": \"The Azure archive destination.\",\n \"properties\": {\n \"container\": {\n \"description\": \"The container where the archive will be stored.\",\n \"example\": \"container-name\",\n \"type\": \"string\"\n },\n \"integration\": {\n \"description\": \"The Azure archive's integration destination.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"A client ID.\",\n \"example\": \"aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa\",\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"A tenant ID.\",\n \"example\": \"aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"tenant_id\",\n \"client_id\"\n ],\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"The archive path.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region where the archive will be stored.\",\n \"type\": \"string\"\n },\n \"storage_account\": {\n \"description\": \"The associated storage account.\",\n \"example\": \"account-name\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"azure\",\n \"description\": \"Type of the Azure archive destination.\",\n \"enum\": [\n \"azure\"\n ],\n \"example\": \"azure\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE\"\n ]\n }\n },\n \"required\": [\n \"storage_account\",\n \"container\",\n \"integration\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The GCS archive destination.\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The bucket where the archive will be stored.\",\n \"example\": \"bucket-name\",\n \"type\": \"string\"\n },\n \"integration\": {\n \"description\": \"The GCS archive's integration destination.\",\n \"properties\": {\n \"client_email\": {\n \"description\": \"A client email.\",\n \"example\": \"youremail@example.com\",\n \"type\": \"string\"\n },\n \"project_id\": {\n \"description\": \"A project ID.\",\n \"example\": \"project-id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_email\"\n ],\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"The archive path.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"gcs\",\n \"description\": \"Type of the GCS archive destination.\",\n \"enum\": [\n \"gcs\"\n ],\n \"example\": \"gcs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCS\"\n ]\n }\n },\n \"required\": [\n \"bucket\",\n \"integration\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The S3 archive destination.\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The bucket where the archive will be stored.\",\n \"example\": \"bucket-name\",\n \"type\": \"string\"\n },\n \"encryption\": {\n \"description\": \"The S3 encryption settings.\",\n \"properties\": {\n \"key\": {\n \"description\": \"An Amazon Resource Name (ARN) used to identify an AWS KMS key.\",\n \"example\": \"arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of S3 encryption for a destination.\",\n \"enum\": [\n \"NO_OVERRIDE\",\n \"SSE_S3\",\n \"SSE_KMS\"\n ],\n \"example\": \"SSE_S3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NO_OVERRIDE\",\n \"SSE_S3\",\n \"SSE_KMS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"integration\": {\n \"description\": \"The S3 Archive's integration destination.\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"The account ID for the integration.\",\n \"example\": \"123456789012\",\n \"type\": \"string\"\n },\n \"role_name\": {\n \"description\": \"The path of the integration.\",\n \"example\": \"role-name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role_name\",\n \"account_id\"\n ],\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"The archive path.\",\n \"type\": \"string\"\n },\n \"storage_class\": {\n \"default\": \"STANDARD\",\n \"description\": \"The storage class where the archive will be stored.\",\n \"enum\": [\n \"STANDARD\",\n \"STANDARD_IA\",\n \"ONEZONE_IA\",\n \"INTELLIGENT_TIERING\",\n \"GLACIER_IR\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"STANDARD_IA\",\n \"ONEZONE_IA\",\n \"INTELLIGENT_TIERING\",\n \"GLACIER_IR\"\n ]\n },\n \"type\": {\n \"default\": \"s3\",\n \"description\": \"Type of the S3 archive destination.\",\n \"enum\": [\n \"s3\"\n ],\n \"example\": \"s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"S3\"\n ]\n }\n },\n \"required\": [\n \"bucket\",\n \"integration\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"include_tags\": {\n \"default\": false,\n \"description\": \"To store the tags in the archive, set the value \\\"true\\\".\\nIf it is set to \\\"false\\\", the tags will be deleted when the logs are sent to the archive.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The archive name.\",\n \"example\": \"Nginx Archive\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The archive query/filter. Logs matching this query are included in the archive.\",\n \"example\": \"source:nginx\",\n \"type\": \"string\"\n },\n \"rehydration_max_scan_size_in_gb\": {\n \"description\": \"Maximum scan size for rehydration from this archive.\",\n \"example\": 100,\n \"format\": \"int64\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"rehydration_tags\": {\n \"description\": \"An array of tags to add to rehydrated logs from an archive.\",\n \"example\": [\n \"team:intake\",\n \"team:app\"\n ],\n \"items\": {\n \"description\": \"A given tag in the `:` format.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"query\",\n \"destination\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"archives\",\n \"description\": \"The type of the resource. The value should always be archives.\",\n \"example\": \"archives\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new archive.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMetricTagConfiguration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMetricTagConfiguration.json new file mode 100644 index 00000000..d9b04462 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMetricTagConfiguration.json @@ -0,0 +1,379 @@ +{ + "name": "CreateMetricTagConfiguration", + "fully_qualified_name": "DatadogApi.CreateMetricTagConfiguration@0.1.0", + "description": "Create queryable tag configurations for metrics.\n\nThis tool is used to create and define a list of queryable tag keys for an existing metric in Datadog, such as count, gauge, rate, or distribution metrics. It allows for optional percentile aggregations on distribution metrics. By setting the 'exclude_tags_mode' to true, users can switch from an allow-list to a deny-list mode, where defined tags are not queryable. This tool requires the `Manage Tags for Metrics` permission.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the existing metric for which the tag configuration is to be created. This is required to identify the specific metric in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + }, + { + "name": "metric_tag_configuration", + "required": true, + "description": "Defines the configuration for metric tags, including attributes like type, tags, exclusions, percentiles, and aggregations.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "space": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A space aggregation for use in query." + }, + "time": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "count", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A time aggregation for use in query." + } + }, + "description": "Deprecated. You no longer need to configure specific time and space aggregations for Metrics Without Limits." + }, + "exclude_tags_mode": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration will exclude the configured tags and include any other submitted tags.\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\nDefaults to false. Requires `tags` property." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include/exclude percentiles for a distribution metric.\nDefaults to false. Can only be applied to metrics that have a `metric_type` of `distribution`." + }, + "metric_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gauge", + "count", + "rate", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The metric's type." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tag keys that will be queryable for your metric." + } + }, + "inner_properties": null, + "description": "Object containing the definition of a metric tag configuration to be created." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric name for this resource." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "manage_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric tag configuration resource type." + } + }, + "inner_properties": null, + "description": "Object for a single metric to be configure tags on." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateTagConfiguration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "metric_tag_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "space": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A space aggregation for use in query." + }, + "time": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "count", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A time aggregation for use in query." + } + }, + "description": "Deprecated. You no longer need to configure specific time and space aggregations for Metrics Without Limits." + }, + "exclude_tags_mode": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration will exclude the configured tags and include any other submitted tags.\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\nDefaults to false. Requires `tags` property." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include/exclude percentiles for a distribution metric.\nDefaults to false. Can only be applied to metrics that have a `metric_type` of `distribution`." + }, + "metric_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gauge", + "count", + "rate", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The metric's type." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tag keys that will be queryable for your metric." + } + }, + "inner_properties": null, + "description": "Object containing the definition of a metric tag configuration to be created." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric name for this resource." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "manage_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric tag configuration resource type." + } + }, + "inner_properties": null, + "description": "Object for a single metric to be configure tags on." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the metric that you would like to configure tags for.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single metric to be configure tags on.\",\n \"example\": {\n \"attributes\": {\n \"include_percentiles\": false,\n \"metric_type\": \"distribution\",\n \"tags\": [\n \"app\",\n \"datacenter\"\n ]\n },\n \"id\": \"http.endpoint.request\",\n \"type\": \"manage_tags\"\n },\n \"properties\": {\n \"attributes\": {\n \"description\": \"Object containing the definition of a metric tag configuration to be created.\",\n \"properties\": {\n \"aggregations\": {\n \"description\": \"Deprecated. You no longer need to configure specific time and space aggregations for Metrics Without Limits.\",\n \"example\": [\n {\n \"space\": \"sum\",\n \"time\": \"sum\"\n },\n {\n \"space\": \"sum\",\n \"time\": \"count\"\n }\n ],\n \"items\": {\n \"description\": \"A time and space aggregation combination for use in query.\",\n \"example\": {\n \"space\": \"sum\",\n \"time\": \"sum\"\n },\n \"properties\": {\n \"space\": {\n \"description\": \"A space aggregation for use in query.\",\n \"enum\": [\n \"avg\",\n \"max\",\n \"min\",\n \"sum\"\n ],\n \"example\": \"sum\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AVG\",\n \"MAX\",\n \"MIN\",\n \"SUM\"\n ]\n },\n \"time\": {\n \"description\": \"A time aggregation for use in query.\",\n \"enum\": [\n \"avg\",\n \"count\",\n \"max\",\n \"min\",\n \"sum\"\n ],\n \"example\": \"sum\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AVG\",\n \"COUNT\",\n \"MAX\",\n \"MIN\",\n \"SUM\"\n ]\n }\n },\n \"required\": [\n \"time\",\n \"space\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"exclude_tags_mode\": {\n \"description\": \"When set to true, the configuration will exclude the configured tags and include any other submitted tags.\\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\\nDefaults to false. Requires `tags` property.\",\n \"type\": \"boolean\"\n },\n \"include_percentiles\": {\n \"description\": \"Toggle to include/exclude percentiles for a distribution metric.\\nDefaults to false. Can only be applied to metrics that have a `metric_type` of `distribution`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"metric_type\": {\n \"default\": \"gauge\",\n \"description\": \"The metric's type.\",\n \"enum\": [\n \"gauge\",\n \"count\",\n \"rate\",\n \"distribution\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GAUGE\",\n \"COUNT\",\n \"RATE\",\n \"DISTRIBUTION\"\n ]\n },\n \"tags\": {\n \"default\": [],\n \"description\": \"A list of tag keys that will be queryable for your metric.\",\n \"example\": [\n \"app\",\n \"datacenter\"\n ],\n \"items\": {\n \"description\": \"Tag keys to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"tags\",\n \"metric_type\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The metric name for this resource.\",\n \"example\": \"test.metric.latency\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"manage_tags\",\n \"description\": \"The metric tag configuration resource type.\",\n \"enum\": [\n \"manage_tags\"\n ],\n \"example\": \"manage_tags\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MANAGE_TAGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorConfigPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorConfigPolicy.json new file mode 100644 index 00000000..31a52142 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorConfigPolicy.json @@ -0,0 +1,220 @@ +{ + "name": "CreateMonitorConfigPolicy", + "fully_qualified_name": "DatadogApi.CreateMonitorConfigPolicy@0.1.0", + "description": "Create a new monitor configuration policy in Datadog.\n\nUse this tool to create monitor configuration policies within Datadog, specifying the desired configurations and parameters.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_config_policy_request", + "required": true, + "description": "JSON object defining the monitor configuration policy, including policy attributes and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "policy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Configuration for the policy." + }, + "policy_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tag" + ], + "properties": null, + "inner_properties": null, + "description": "The monitor configuration policy type." + } + }, + "inner_properties": null, + "description": "Policy and policy type for a monitor configuration policy." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-config-policy" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor configuration policy resource type." + } + }, + "inner_properties": null, + "description": "A monitor configuration policy data." + } + }, + "inner_properties": null, + "description": "Create a monitor configuration policy request body." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateMonitorConfigPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/policy", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "monitor_config_policy_request", + "description": "Create a monitor configuration policy request body.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "policy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Configuration for the policy." + }, + "policy_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tag" + ], + "properties": null, + "inner_properties": null, + "description": "The monitor configuration policy type." + } + }, + "inner_properties": null, + "description": "Policy and policy type for a monitor configuration policy." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-config-policy" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor configuration policy resource type." + } + }, + "inner_properties": null, + "description": "A monitor configuration policy data." + } + }, + "inner_properties": null, + "description": "Create a monitor configuration policy request body." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating a monitor configuration policy.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A monitor configuration policy data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Policy and policy type for a monitor configuration policy.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"Configuration for the policy.\",\n \"oneOf\": [\n {\n \"description\": \"Tag attributes of a monitor configuration policy.\",\n \"properties\": {\n \"tag_key\": {\n \"description\": \"The key of the tag.\",\n \"example\": \"datacenter\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"tag_key_required\": {\n \"description\": \"If a tag key is required for monitor creation.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"valid_tag_values\": {\n \"description\": \"Valid values for the tag.\",\n \"example\": [\n \"prod\",\n \"staging\"\n ],\n \"items\": {\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"tag_key\",\n \"tag_key_required\",\n \"valid_tag_values\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"policy_type\": {\n \"default\": \"tag\",\n \"description\": \"The monitor configuration policy type.\",\n \"enum\": [\n \"tag\"\n ],\n \"example\": \"tag\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TAG\"\n ]\n }\n },\n \"required\": [\n \"policy_type\",\n \"policy\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"monitor-config-policy\",\n \"description\": \"Monitor configuration policy resource type.\",\n \"enum\": [\n \"monitor-config-policy\"\n ],\n \"example\": \"monitor-config-policy\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_CONFIG_POLICY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Create a monitor configuration policy request body.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorNotificationRule.json new file mode 100644 index 00000000..db60a349 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorNotificationRule.json @@ -0,0 +1,316 @@ +{ + "name": "CreateMonitorNotificationRule", + "fully_qualified_name": "DatadogApi.CreateMonitorNotificationRule@0.1.0", + "description": "Creates a monitor notification rule in Datadog.\n\nUse this tool to set up a notification rule for a specific monitor in Datadog. This allows for alerting based on monitor condition changes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_notification_rule_details", + "required": true, + "description": "JSON object detailing the monitor notification rule, including attributes like recipients, conditions, and filters.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditional_recipients": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the monitor applied." + } + }, + "description": "Conditions of the notification rule." + }, + "fallback_recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Use conditional recipients to define different recipients for different situations." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter used to associate the notification rule with monitors." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the monitor notification rule." + }, + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Attributes of the monitor notification rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-notification-rule" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor notification rule resource type." + } + }, + "inner_properties": null, + "description": "Object to create a monitor notification rule." + } + }, + "inner_properties": null, + "description": "Request body to create a monitor notification rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateMonitorNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/notification_rule", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "monitor_notification_rule_details", + "description": "Request body to create a monitor notification rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditional_recipients": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the monitor applied." + } + }, + "description": "Conditions of the notification rule." + }, + "fallback_recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Use conditional recipients to define different recipients for different situations." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter used to associate the notification rule with monitors." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the monitor notification rule." + }, + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Attributes of the monitor notification rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-notification-rule" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor notification rule resource type." + } + }, + "inner_properties": null, + "description": "Object to create a monitor notification rule." + } + }, + "inner_properties": null, + "description": "Request body to create a monitor notification rule." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating a monitor notification rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object to create a monitor notification rule.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": false,\n \"description\": \"Attributes of the monitor notification rule.\",\n \"properties\": {\n \"conditional_recipients\": {\n \"description\": \"Use conditional recipients to define different recipients for different situations.\",\n \"properties\": {\n \"conditions\": {\n \"description\": \"Conditions of the notification rule.\",\n \"items\": {\n \"description\": \"Conditions for `conditional_recipients`.\",\n \"properties\": {\n \"recipients\": {\n \"description\": \"A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'.\",\n \"example\": [\n \"slack-test-channel\",\n \"jira-test\"\n ],\n \"items\": {\n \"description\": \"individual recipient.\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n },\n \"scope\": {\n \"description\": \"The scope to which the monitor applied.\",\n \"example\": \"transition_type:alert\",\n \"maxLength\": 3000,\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"scope\",\n \"recipients\"\n ],\n \"type\": \"object\"\n },\n \"maxItems\": 10,\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"fallback_recipients\": {\n \"description\": \"A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'.\",\n \"example\": [\n \"slack-test-channel\",\n \"jira-test\"\n ],\n \"items\": {\n \"description\": \"individual recipient.\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n }\n },\n \"required\": [\n \"conditions\"\n ],\n \"type\": \"object\"\n },\n \"filter\": {\n \"description\": \"Filter used to associate the notification rule with monitors.\",\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"Filter monitors by tags. Monitors must match all tags.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of monitor tags.\",\n \"example\": [\n \"team:product\",\n \"host:abc\"\n ],\n \"items\": {\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n }\n },\n \"required\": [\n \"tags\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"The name of the monitor notification rule.\",\n \"example\": \"A notification rule name\",\n \"maxLength\": 1000,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"recipients\": {\n \"description\": \"A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'.\",\n \"example\": [\n \"slack-test-channel\",\n \"jira-test\"\n ],\n \"items\": {\n \"description\": \"individual recipient.\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"monitor-notification-rule\",\n \"description\": \"Monitor notification rule resource type.\",\n \"enum\": [\n \"monitor-notification-rule\"\n ],\n \"example\": \"monitor-notification-rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_NOTIFICATION_RULE\"\n ]\n }\n },\n \"required\": [\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Request body to create a monitor notification rule.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorUserTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorUserTemplate.json new file mode 100644 index 00000000..609b800c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateMonitorUserTemplate.json @@ -0,0 +1,330 @@ +{ + "name": "CreateMonitorUserTemplate", + "fully_qualified_name": "DatadogApi.CreateMonitorUserTemplate@0.1.0", + "description": "Create a new monitor user template in Datadog.\n\nThis tool should be called to create a new user template for monitoring within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_user_template_data", + "required": true, + "description": "JSON containing attributes like description, monitor definition, tags, template variables, and title for the monitor user template.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateMonitorUserTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/template", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "monitor_user_template_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating a monitor user template.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Monitor user template data.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": false,\n \"description\": \"Attributes for a monitor user template.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A brief description of the monitor user template.\",\n \"example\": \"This is a template for monitoring user activity.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"monitor_definition\": {\n \"additionalProperties\": {},\n \"description\": \"A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).\",\n \"example\": {\n \"message\": \"You may need to add web hosts if this is consistently high.\",\n \"name\": \"Bytes received on host0\",\n \"query\": \"avg(last_5m):sum:system.net.bytes_rcvd{host:host0} > 100\",\n \"type\": \"query alert\"\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"The definition of `MonitorUserTemplateTags` object.\",\n \"example\": [\n \"product:Our Custom App\",\n \"integration:Azure\"\n ],\n \"items\": {\n \"description\": \"Tags associated with the monitor user template. Must be key value. Only 'product' and 'integration' keys are\\nallowed. The value is the name of the category to display the template under. Integrations can be filtered out in the UI.\\n(Review note: This modeling of 'categories' is subject to change.)\",\n \"example\": \"us-east1\",\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"template_variables\": {\n \"description\": \"The definition of `MonitorUserTemplateTemplateVariables` object.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"List of objects representing template variables on the monitor which can have selectable values.\",\n \"properties\": {\n \"available_values\": {\n \"description\": \"Available values for the variable.\",\n \"example\": [\n \"value1\",\n \"value2\"\n ],\n \"items\": {\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"defaults\": {\n \"description\": \"Default values of the template variable.\",\n \"example\": [\n \"defaultValue\"\n ],\n \"items\": {\n \"minLength\": 0,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the template variable.\",\n \"example\": \"regionName\",\n \"type\": \"string\"\n },\n \"tag_key\": {\n \"description\": \"The tag key associated with the variable. This works the same as dashboard template variables.\",\n \"example\": \"datacenter\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"title\": {\n \"description\": \"The title of the monitor user template.\",\n \"example\": \"Postgres CPU Monitor\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"monitor_definition\",\n \"tags\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"monitor-user-template\",\n \"description\": \"Monitor user template resource type.\",\n \"enum\": [\n \"monitor-user-template\"\n ],\n \"example\": \"monitor-user-template\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_USER_TEMPLATE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewApp.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewApp.json new file mode 100644 index 00000000..e52a16b4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewApp.json @@ -0,0 +1,722 @@ +{ + "name": "CreateNewApp", + "fully_qualified_name": "DatadogApi.CreateNewApp@0.1.0", + "description": "Create a new app and return its ID using Datadog.\n\nUse this tool to create a new app in Datadog. Ensure you have a registered application key or configured permissions in the UI before calling this tool.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_definition", + "required": true, + "description": "JSON object defining the app's name, description, components, and other attributes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "components": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the grid component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this grid component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "backgroundColor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The background color of the grid." + }, + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the UI component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this UI component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The child components of the UI component." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "properties": null, + "inner_properties": null, + "description": "The UI component type." + } + }, + "description": "The child components of the grid." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a grid component." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "grid" + ], + "properties": null, + "inner_properties": null, + "description": "The grid component type." + } + }, + "description": "The UI components that make up the app." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description for the app." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the app." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "An array of queries, such as external actions and state variables, that the app uses." + }, + "rootInstanceName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the app, which can be used to filter apps." + } + }, + "inner_properties": null, + "description": "App definition attributes such as name, description, and components." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "appDefinitions" + ], + "properties": null, + "inner_properties": null, + "description": "The app definition type." + } + }, + "inner_properties": null, + "description": "The data object containing the app definition." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateApp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "app_definition", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "components": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the grid component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this grid component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "backgroundColor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The background color of the grid." + }, + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the UI component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this UI component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The child components of the UI component." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "properties": null, + "inner_properties": null, + "description": "The UI component type." + } + }, + "description": "The child components of the grid." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a grid component." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "grid" + ], + "properties": null, + "inner_properties": null, + "description": "The grid component type." + } + }, + "description": "The UI components that make up the app." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description for the app." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the app." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "An array of queries, such as external actions and state variables, that the app uses." + }, + "rootInstanceName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the root component of the app. This must be a `grid` component that contains all other components." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the app, which can be used to filter apps." + } + }, + "inner_properties": null, + "description": "App definition attributes such as name, description, and components." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "appDefinitions" + ], + "properties": null, + "inner_properties": null, + "description": "The app definition type." + } + }, + "inner_properties": null, + "description": "The data object containing the app definition." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A request object for creating a new app.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"components\": [\n {\n \"events\": [],\n \"name\": \"grid0\",\n \"properties\": {\n \"children\": [\n {\n \"events\": [],\n \"name\": \"gridCell0\",\n \"properties\": {\n \"children\": [\n {\n \"events\": [],\n \"name\": \"calloutValue0\",\n \"properties\": {\n \"isDisabled\": false,\n \"isLoading\": false,\n \"isVisible\": true,\n \"label\": \"CPU Usage\",\n \"size\": \"sm\",\n \"style\": \"vivid_yellow\",\n \"unit\": \"kB\",\n \"value\": \"42\"\n },\n \"type\": \"calloutValue\"\n }\n ],\n \"isVisible\": \"true\",\n \"layout\": {\n \"default\": {\n \"height\": 8,\n \"width\": 2,\n \"x\": 0,\n \"y\": 0\n }\n }\n },\n \"type\": \"gridCell\"\n }\n ]\n },\n \"type\": \"grid\"\n }\n ],\n \"description\": \"This is a simple example app\",\n \"name\": \"Example App\",\n \"queries\": [],\n \"rootInstanceName\": \"grid0\"\n },\n \"type\": \"appDefinitions\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The data object containing the app definition.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"App definition attributes such as name, description, and components.\",\n \"properties\": {\n \"components\": {\n \"description\": \"The UI components that make up the app.\",\n \"items\": {\n \"description\": \"A grid component. The grid component is the root canvas for an app and contains all other components.\",\n \"properties\": {\n \"events\": {\n \"description\": \"Events to listen for on the grid component.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An event on a UI component that triggers a response or action in an app.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The triggering action for the event.\",\n \"enum\": [\n \"pageChange\",\n \"tableRowClick\",\n \"_tableRowButtonClick\",\n \"change\",\n \"submit\",\n \"click\",\n \"toggleOpen\",\n \"close\",\n \"open\",\n \"executionFinished\"\n ],\n \"example\": \"click\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAGECHANGE\",\n \"TABLEROWCLICK\",\n \"TABLEROWBUTTONCLICK\",\n \"CHANGE\",\n \"SUBMIT\",\n \"CLICK\",\n \"TOGGLEOPEN\",\n \"CLOSE\",\n \"OPEN\",\n \"EXECUTIONFINISHED\"\n ]\n },\n \"type\": {\n \"description\": \"The response to the event.\",\n \"enum\": [\n \"custom\",\n \"setComponentState\",\n \"triggerQuery\",\n \"openModal\",\n \"closeModal\",\n \"openUrl\",\n \"downloadFile\",\n \"setStateVariableValue\"\n ],\n \"example\": \"triggerQuery\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\",\n \"SETCOMPONENTSTATE\",\n \"TRIGGERQUERY\",\n \"OPENMODAL\",\n \"CLOSEMODAL\",\n \"OPENURL\",\n \"DOWNLOADFILE\",\n \"SETSTATEVARIABLEVALUE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this grid component. This name is also visible in the app editor.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"Properties of a grid component.\",\n \"properties\": {\n \"backgroundColor\": {\n \"default\": \"default\",\n \"description\": \"The background color of the grid.\",\n \"type\": \"string\"\n },\n \"children\": {\n \"description\": \"The child components of the grid.\",\n \"items\": {\n \"description\": \"[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)\",\n \"properties\": {\n \"events\": {\n \"description\": \"Events to listen for on the UI component.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An event on a UI component that triggers a response or action in an app.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The triggering action for the event.\",\n \"enum\": [\n \"pageChange\",\n \"tableRowClick\",\n \"_tableRowButtonClick\",\n \"change\",\n \"submit\",\n \"click\",\n \"toggleOpen\",\n \"close\",\n \"open\",\n \"executionFinished\"\n ],\n \"example\": \"click\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAGECHANGE\",\n \"TABLEROWCLICK\",\n \"TABLEROWBUTTONCLICK\",\n \"CHANGE\",\n \"SUBMIT\",\n \"CLICK\",\n \"TOGGLEOPEN\",\n \"CLOSE\",\n \"OPEN\",\n \"EXECUTIONFINISHED\"\n ]\n },\n \"type\": {\n \"description\": \"The response to the event.\",\n \"enum\": [\n \"custom\",\n \"setComponentState\",\n \"triggerQuery\",\n \"openModal\",\n \"closeModal\",\n \"openUrl\",\n \"downloadFile\",\n \"setStateVariableValue\"\n ],\n \"example\": \"triggerQuery\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\",\n \"SETCOMPONENTSTATE\",\n \"TRIGGERQUERY\",\n \"OPENMODAL\",\n \"CLOSEMODAL\",\n \"OPENURL\",\n \"DOWNLOADFILE\",\n \"SETSTATEVARIABLEVALUE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this UI component. This name is also visible in the app editor.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"additionalProperties\": {},\n \"description\": \"Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.\",\n \"properties\": {\n \"children\": {\n \"description\": \"The child components of the UI component.\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Component\",\n \"has_circular_reference\": true\n },\n \"type\": \"array\"\n },\n \"isVisible\": {\n \"description\": \"Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The UI component type.\",\n \"enum\": [\n \"table\",\n \"textInput\",\n \"textArea\",\n \"button\",\n \"text\",\n \"select\",\n \"modal\",\n \"schemaForm\",\n \"checkbox\",\n \"tabs\",\n \"vegaChart\",\n \"radioButtons\",\n \"numberInput\",\n \"fileInput\",\n \"jsonInput\",\n \"gridCell\",\n \"dateRangePicker\",\n \"search\",\n \"container\",\n \"calloutValue\"\n ],\n \"example\": \"text\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TABLE\",\n \"TEXTINPUT\",\n \"TEXTAREA\",\n \"BUTTON\",\n \"TEXT\",\n \"SELECT\",\n \"MODAL\",\n \"SCHEMAFORM\",\n \"CHECKBOX\",\n \"TABS\",\n \"VEGACHART\",\n \"RADIOBUTTONS\",\n \"NUMBERINPUT\",\n \"FILEINPUT\",\n \"JSONINPUT\",\n \"GRIDCELL\",\n \"DATERANGEPICKER\",\n \"SEARCH\",\n \"CONTAINER\",\n \"CALLOUTVALUE\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"isVisible\": {\n \"description\": \"Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"default\": true,\n \"type\": \"boolean\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"grid\",\n \"description\": \"The grid component type.\",\n \"enum\": [\n \"grid\"\n ],\n \"example\": \"grid\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GRID\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"A human-readable description for the app.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the app.\",\n \"type\": \"string\"\n },\n \"queries\": {\n \"description\": \"An array of queries, such as external actions and state variables, that the app uses.\",\n \"items\": {\n \"description\": \"A data query used by an app. This can take the form of an external action, a data transformation, or a state variable.\",\n \"oneOf\": [\n {\n \"description\": \"An action query. This query type is used to trigger an action, such as sending a HTTP request.\",\n \"properties\": {\n \"events\": {\n \"description\": \"Events to listen for downstream of the action query.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An event on a UI component that triggers a response or action in an app.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The triggering action for the event.\",\n \"enum\": [\n \"pageChange\",\n \"tableRowClick\",\n \"_tableRowButtonClick\",\n \"change\",\n \"submit\",\n \"click\",\n \"toggleOpen\",\n \"close\",\n \"open\",\n \"executionFinished\"\n ],\n \"example\": \"click\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAGECHANGE\",\n \"TABLEROWCLICK\",\n \"TABLEROWBUTTONCLICK\",\n \"CHANGE\",\n \"SUBMIT\",\n \"CLICK\",\n \"TOGGLEOPEN\",\n \"CLOSE\",\n \"OPEN\",\n \"EXECUTIONFINISHED\"\n ]\n },\n \"type\": {\n \"description\": \"The response to the event.\",\n \"enum\": [\n \"custom\",\n \"setComponentState\",\n \"triggerQuery\",\n \"openModal\",\n \"closeModal\",\n \"openUrl\",\n \"downloadFile\",\n \"setStateVariableValue\"\n ],\n \"example\": \"triggerQuery\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\",\n \"SETCOMPONENTSTATE\",\n \"TRIGGERQUERY\",\n \"OPENMODAL\",\n \"CLOSEMODAL\",\n \"OPENURL\",\n \"DOWNLOADFILE\",\n \"SETSTATEVARIABLEVALUE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The ID of the action query.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this action query. This name is also used to access the query's result throughout the app.\",\n \"example\": \"fetchPendingOrders\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"The properties of the action query.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Whether to run this query. If specified, the query will only run if this condition evaluates to `true` in JavaScript and all other conditions are also met.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"debounceInMs\": {\n \"description\": \"The minimum time in milliseconds that must pass before the query can be triggered again. This is useful for preventing accidental double-clicks from triggering the query multiple times.\",\n \"oneOf\": [\n {\n \"example\": 310.5,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a number.\",\n \"example\": \"${1000}\",\n \"type\": \"string\"\n }\n ]\n },\n \"mockedOutputs\": {\n \"description\": \"The mocked outputs of the action query. This is useful for testing the app without actually running the action.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"description\": \"The mocked outputs of the action query.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether to enable the mocked outputs for testing.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"outputs\": {\n \"description\": \"The mocked outputs of the action query, serialized as JSON.\",\n \"example\": \"{\\\"status\\\": \\\"success\\\"}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"enabled\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"onlyTriggerManually\": {\n \"description\": \"Determines when this query is executed. If set to `false`, the query will run when the app loads and whenever any query arguments change. If set to `true`, the query will only run when manually triggered from elsewhere in the app.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"outputs\": {\n \"description\": \"The post-query transformation function, which is a JavaScript function that changes the query's `.outputs` property after the query's execution.\",\n \"example\": \"${((outputs) => {return outputs.body.data})(self.rawOutputs)}\",\n \"type\": \"string\"\n },\n \"pollingIntervalInMs\": {\n \"description\": \"If specified, the app will poll the query at the specified interval in milliseconds. The minimum polling interval is 15 seconds. The query will only poll when the app's browser tab is active.\",\n \"oneOf\": [\n {\n \"example\": 30000.0,\n \"format\": \"double\",\n \"minimum\": 15000.0,\n \"type\": \"number\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a number.\",\n \"example\": \"${15000}\",\n \"type\": \"string\"\n }\n ]\n },\n \"requiresConfirmation\": {\n \"description\": \"Whether to prompt the user to confirm this query before it runs.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"showToastOnError\": {\n \"description\": \"Whether to display a toast to the user when the query returns an error.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"spec\": {\n \"description\": \"The definition of the action query.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"description\": \"The action query spec object.\",\n \"properties\": {\n \"connectionGroup\": {\n \"description\": \"The connection group to use for an action query.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the connection group.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The tags of the connection group.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionId\": {\n \"description\": \"The ID of the custom connection to use for this action query.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"type\": \"string\"\n },\n \"fqn\": {\n \"description\": \"The fully qualified name of the action type.\",\n \"example\": \"com.datadoghq.http.request\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"The inputs to the action query. These are the values that are passed to the action when it is triggered.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"additionalProperties\": {},\n \"description\": \"The inputs to the action query. See the [Actions Catalog](https://docs.datadoghq.com/actions/actions_catalog/) for more detail on each action and its inputs.\",\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"fqn\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"action\",\n \"description\": \"The action query type.\",\n \"enum\": [\n \"action\"\n ],\n \"example\": \"action\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ACTION\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"A data transformer, which is custom JavaScript code that executes and transforms data when its inputs change.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the data transformer.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this data transformer. This name is also used to access the transformer's result throughout the app.\",\n \"example\": \"combineTwoOrders\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"The properties of the data transformer.\",\n \"properties\": {\n \"outputs\": {\n \"description\": \"A JavaScript function that returns the transformed data.\",\n \"example\": \"${(() => {return {\\n allItems: [...fetchOrder1.outputs.items, ...fetchOrder2.outputs.items],\\n}})()}\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"dataTransform\",\n \"description\": \"The data transform type.\",\n \"enum\": [\n \"dataTransform\"\n ],\n \"example\": \"dataTransform\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATATRANSFORM\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"A variable, which can be set and read by other components in the app.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the state variable.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this state variable. This name is also used to access the variable's value throughout the app.\",\n \"example\": \"ordersToSubmit\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"The properties of the state variable.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"The default value of the state variable.\",\n \"example\": \"${['order_3145', 'order_4920']}\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"stateVariable\",\n \"description\": \"The state variable type.\",\n \"enum\": [\n \"stateVariable\"\n ],\n \"example\": \"stateVariable\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STATEVARIABLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"rootInstanceName\": {\n \"description\": \"The name of the root component of the app. This must be a `grid` component that contains all other components.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of tags for the app, which can be used to filter apps.\",\n \"example\": [\n \"service:webshop-backend\",\n \"team:webshop\"\n ],\n \"items\": {\n \"description\": \"An individual tag for the app.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"appDefinitions\",\n \"description\": \"The app definition type.\",\n \"enum\": [\n \"appDefinitions\"\n ],\n \"example\": \"appDefinitions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPDEFINITIONS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewDatastore.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewDatastore.json new file mode 100644 index 00000000..677bace1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewDatastore.json @@ -0,0 +1,342 @@ +{ + "name": "CreateNewDatastore", + "fully_qualified_name": "DatadogApi.CreateNewDatastore@0.1.0", + "description": "Creates a new datastore in Datadog.\n\nUse this tool to create a new datastore within the Datadog platform. It should be called when a new storage resource needs to be initialized or added to the Datadog system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_description", + "required": false, + "description": "A human-readable description about the datastore.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description about the datastore." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "datastore_display_name", + "required": false, + "description": "The display name for the new datastore. This should be a human-readable and descriptive name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The display name for the new datastore." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "organization_access_level", + "required": false, + "description": "The access level for the datastore within the organization. Options: 'contributor', 'viewer', or 'manager'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "contributor", + "viewer", + "manager" + ], + "properties": null, + "inner_properties": null, + "description": "The organization access level for the datastore. For example, 'contributor'." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.org_access" + }, + { + "name": "primary_key_column_name", + "required": false, + "description": "The name of the primary key column for this datastore. Must follow PostgreSQL naming conventions and not exceed 63 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the primary key column for this datastore. Primary column names:\n - Must abide by both [PostgreSQL naming conventions](https://www.postgresql.org/docs/7.0/syntax525.htm)\n - Cannot exceed 63 characters" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.primary_column_name" + }, + { + "name": "primary_key_generation_strategy", + "required": false, + "description": "Set to `uuid` for automatic primary key generation when new items are added. Default is `none`, requiring manual key assignment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "uuid" + ], + "properties": null, + "inner_properties": null, + "description": "Can be set to `uuid` to automatically generate primary keys when new items are added. Default value is `none`, which requires you to supply a primary key for each new item." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.primary_key_generation_strategy" + }, + { + "name": "datastore_id", + "required": false, + "description": "Optional ID for the new datastore. If not provided, a default one will be generated automatically.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional ID for the new datastore. If not provided, one will be generated automatically." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "datastore_resource_type", + "required": false, + "description": "Specifies the resource type for the datastore. Valid value is 'datastores'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "datastores" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastores." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateDatastore'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.description", + "tool_parameter_name": "datastore_description", + "description": "A human-readable description about the datastore.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description about the datastore." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "datastore_display_name", + "description": "The display name for the new datastore.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The display name for the new datastore." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.org_access", + "tool_parameter_name": "organization_access_level", + "description": "The organization access level for the datastore. For example, 'contributor'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "contributor", + "viewer", + "manager" + ], + "properties": null, + "inner_properties": null, + "description": "The organization access level for the datastore. For example, 'contributor'." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.primary_column_name", + "tool_parameter_name": "primary_key_column_name", + "description": "The name of the primary key column for this datastore. Primary column names:\n - Must abide by both [PostgreSQL naming conventions](https://www.postgresql.org/docs/7.0/syntax525.htm)\n - Cannot exceed 63 characters", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the primary key column for this datastore. Primary column names:\n - Must abide by both [PostgreSQL naming conventions](https://www.postgresql.org/docs/7.0/syntax525.htm)\n - Cannot exceed 63 characters" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.primary_key_generation_strategy", + "tool_parameter_name": "primary_key_generation_strategy", + "description": "Can be set to `uuid` to automatically generate primary keys when new items are added. Default value is `none`, which requires you to supply a primary key for each new item.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "uuid" + ], + "properties": null, + "inner_properties": null, + "description": "Can be set to `uuid` to automatically generate primary keys when new items are added. Default value is `none`, which requires you to supply a primary key for each new item." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "datastore_id", + "description": "Optional ID for the new datastore. If not provided, one will be generated automatically.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional ID for the new datastore. If not provided, one will be generated automatically." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "datastore_resource_type", + "description": "The resource type for datastores.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "datastores" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastores." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "datastores", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to create a new datastore with specified configuration and metadata.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data wrapper containing the configuration needed to create a new datastore.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Configuration and metadata to create a new datastore.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A human-readable description about the datastore.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The display name for the new datastore.\",\n \"example\": \"datastore-name\",\n \"type\": \"string\"\n },\n \"org_access\": {\n \"description\": \"The organization access level for the datastore. For example, 'contributor'.\",\n \"enum\": [\n \"contributor\",\n \"viewer\",\n \"manager\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONTRIBUTOR\",\n \"VIEWER\",\n \"MANAGER\"\n ]\n },\n \"primary_column_name\": {\n \"description\": \"The name of the primary key column for this datastore. Primary column names:\\n - Must abide by both [PostgreSQL naming conventions](https://www.postgresql.org/docs/7.0/syntax525.htm)\\n - Cannot exceed 63 characters\",\n \"example\": \"\",\n \"maxLength\": 63,\n \"type\": \"string\"\n },\n \"primary_key_generation_strategy\": {\n \"description\": \"Can be set to `uuid` to automatically generate primary keys when new items are added. Default value is `none`, which requires you to supply a primary key for each new item.\",\n \"enum\": [\n \"none\",\n \"uuid\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NONE\",\n \"UUID\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"primary_column_name\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Optional ID for the new datastore. If not provided, one will be generated automatically.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"datastores\",\n \"description\": \"The resource type for datastores.\",\n \"enum\": [\n \"datastores\"\n ],\n \"example\": \"datastores\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATASTORES\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewTeam.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewTeam.json new file mode 100644 index 00000000..02319314 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateNewTeam.json @@ -0,0 +1,386 @@ +{ + "name": "CreateNewTeam", + "fully_qualified_name": "DatadogApi.CreateNewTeam@0.1.0", + "description": "Create a new team and add specified members.\n\nThis tool creates a new team and adds specified user IDs to it. Use it when you need to establish a team and assign users to it in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_creation_data", + "required": true, + "description": "JSON object containing team attributes (name, handle, description, avatar, banner) and relationships (user IDs to be added).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "avatar": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unicode representation of the avatar for the team, limited to a single grapheme" + }, + "banner": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Banner selection for the team" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form markdown description/content for the team's homepage" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team's identifier" + }, + "hidden_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of hidden modules for the team" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the team" + }, + "visible_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of visible modules for the team" + } + }, + "inner_properties": null, + "description": "Team creation attributes" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "users": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "description": "Relationships to user objects." + } + }, + "inner_properties": null, + "description": "Relationship to users." + } + }, + "inner_properties": null, + "description": "Relationships formed with the team on creation" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team" + ], + "properties": null, + "inner_properties": null, + "description": "Team type" + } + }, + "inner_properties": null, + "description": "Team create" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "team_creation_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "avatar": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unicode representation of the avatar for the team, limited to a single grapheme" + }, + "banner": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Banner selection for the team" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form markdown description/content for the team's homepage" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team's identifier" + }, + "hidden_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of hidden modules for the team" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the team" + }, + "visible_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of visible modules for the team" + } + }, + "inner_properties": null, + "description": "Team creation attributes" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "users": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "description": "Relationships to user objects." + } + }, + "inner_properties": null, + "description": "Relationship to users." + } + }, + "inner_properties": null, + "description": "Relationships formed with the team on creation" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team" + ], + "properties": null, + "inner_properties": null, + "description": "Team type" + } + }, + "inner_properties": null, + "description": "Team create" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to create a team\",\n \"properties\": {\n \"data\": {\n \"description\": \"Team create\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team creation attributes\",\n \"properties\": {\n \"avatar\": {\n \"description\": \"Unicode representation of the avatar for the team, limited to a single grapheme\",\n \"example\": \"\\ud83e\\udd51\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"banner\": {\n \"description\": \"Banner selection for the team\",\n \"format\": \"int64\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"description\": {\n \"description\": \"Free-form markdown description/content for the team's homepage\",\n \"type\": \"string\"\n },\n \"handle\": {\n \"description\": \"The team's identifier\",\n \"example\": \"example-team\",\n \"maxLength\": 195,\n \"type\": \"string\"\n },\n \"hidden_modules\": {\n \"description\": \"Collection of hidden modules for the team\",\n \"items\": {\n \"description\": \"String identifier of the module\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the team\",\n \"example\": \"Example Team\",\n \"maxLength\": 200,\n \"type\": \"string\"\n },\n \"visible_modules\": {\n \"description\": \"Collection of visible modules for the team\",\n \"items\": {\n \"description\": \"String identifier of the module\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"handle\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships formed with the team on creation\",\n \"properties\": {\n \"users\": {\n \"description\": \"Relationship to users.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationships to user objects.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Relationship to user object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-2345-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"team\",\n \"description\": \"Team type\",\n \"enum\": [\n \"team\"\n ],\n \"example\": \"team\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOktaAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOktaAccount.json new file mode 100644 index 00000000..a0483959 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOktaAccount.json @@ -0,0 +1,361 @@ +{ + "name": "CreateOktaAccount", + "fully_qualified_name": "DatadogApi.CreateOktaAccount@0.1.0", + "description": "Create an Okta account via Datadog integration.\n\nUse this tool to create a new Okta account through Datadog's API integration. This is useful when setting up user accounts for Okta within the Datadog platform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "okta_auth_method", + "required": true, + "description": "Specify the authorization method for the Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The authorization method for an Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.auth_method" + }, + { + "name": "okta_account_domain", + "required": true, + "description": "The domain of the Okta account to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain of the Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.domain" + }, + { + "name": "okta_account_name", + "required": true, + "description": "The name of the Okta account to be created via Datadog API integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "okta_account_type", + "required": true, + "description": "Specifies the type of account for the Okta account. The value should be 'okta-accounts'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "okta-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "Account type for an Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "okta_api_key", + "required": false, + "description": "The API key for the Okta account integration. This key is used for authenticating the account with Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.api_key" + }, + { + "name": "okta_client_id", + "required": false, + "description": "The Client ID for the Okta app integration, necessary for the account setup.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Client ID of an Okta app integration." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.client_id" + }, + { + "name": "client_secret", + "required": false, + "description": "The client secret associated with the Okta app integration. This is required for authentication.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client secret of an Okta app integration." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.client_secret" + }, + { + "name": "okta_account_id", + "required": false, + "description": "The ID of the Okta account, which is a UUID hash of the account name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Okta account, a UUID hash of the account name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateOktaAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/okta/accounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.api_key", + "tool_parameter_name": "okta_api_key", + "description": "The API key of the Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Okta account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.auth_method", + "tool_parameter_name": "okta_auth_method", + "description": "The authorization method for an Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The authorization method for an Okta account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.client_id", + "tool_parameter_name": "okta_client_id", + "description": "The Client ID of an Okta app integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Client ID of an Okta app integration." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.client_secret", + "tool_parameter_name": "client_secret", + "description": "The client secret of an Okta app integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client secret of an Okta app integration." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.domain", + "tool_parameter_name": "okta_account_domain", + "description": "The domain of the Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain of the Okta account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "okta_account_name", + "description": "The name of the Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Okta account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "okta_account_id", + "description": "The ID of the Okta account, a UUID hash of the account name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Okta account, a UUID hash of the account name." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "okta_account_type", + "description": "Account type for an Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "okta-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "Account type for an Okta account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "okta-accounts", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object for an Okta account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Schema for an Okta account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for an Okta account.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key of the Okta account.\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"auth_method\": {\n \"description\": \"The authorization method for an Okta account.\",\n \"example\": \"oauth\",\n \"type\": \"string\"\n },\n \"client_id\": {\n \"description\": \"The Client ID of an Okta app integration.\",\n \"type\": \"string\"\n },\n \"client_secret\": {\n \"description\": \"The client secret of an Okta app integration.\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"domain\": {\n \"description\": \"The domain of the Okta account.\",\n \"example\": \"https://example.okta.com/\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the Okta account.\",\n \"example\": \"Okta-Prod\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"auth_method\",\n \"domain\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the Okta account, a UUID hash of the account name.\",\n \"example\": \"f749daaf-682e-4208-a38d-c9b43162c609\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"okta-accounts\",\n \"description\": \"Account type for an Okta account.\",\n \"enum\": [\n \"okta-accounts\"\n ],\n \"example\": \"okta-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OKTA_ACCOUNTS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOnCallEscalationPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOnCallEscalationPolicy.json new file mode 100644 index 00000000..9fd92b47 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOnCallEscalationPolicy.json @@ -0,0 +1,469 @@ +{ + "name": "CreateOnCallEscalationPolicy", + "fully_qualified_name": "DatadogApi.CreateOnCallEscalationPolicy@0.1.0", + "description": "Create a new On-Call escalation policy in Datadog.\n\nThis tool is used to create a new On-Call escalation policy in Datadog. Call this tool when you need to set up or adjust escalation protocols within your team for handling alerts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "escalation_policy_details", + "required": true, + "description": "JSON object containing details for creating the escalation policy, including attributes, relationships, and resource type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Specifies the name for the new escalation policy." + }, + "resolve_page_on_policy_end": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the page is automatically resolved when the policy ends." + }, + "retries": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies how many times the escalation sequence is retried if there is no response." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "assignment": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default", + "round-robin" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies how this escalation step will assign targets (example `default` or `round-robin`)." + }, + "escalate_after_seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines how many seconds to wait before escalating to the next step." + }, + "targets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier for this target." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users", + "schedules", + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the type of escalation target (example `users`, `schedules`, or `teams`)." + } + }, + "description": "Specifies the collection of escalation targets for this step." + } + }, + "description": "A list of escalation steps, each defining assignment, escalation timeout, and targets for the new policy." + } + }, + "inner_properties": null, + "description": "Defines the attributes for creating an escalation policy, including its description, name, resolution behavior, retries, and steps." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Represents relationships in an escalation policy creation request, including references to teams." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policies" + ], + "properties": null, + "inner_properties": null, + "description": "Indicates that the resource is of type `policies`." + } + }, + "inner_properties": null, + "description": "Represents the data for creating an escalation policy, including its attributes, relationships, and resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of included relationships to return. Allowed values: teams, steps, steps.targets.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateOnCallEscalationPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/escalation-policies", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "escalation_policy_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Specifies the name for the new escalation policy." + }, + "resolve_page_on_policy_end": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the page is automatically resolved when the policy ends." + }, + "retries": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies how many times the escalation sequence is retried if there is no response." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "assignment": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default", + "round-robin" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies how this escalation step will assign targets (example `default` or `round-robin`)." + }, + "escalate_after_seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines how many seconds to wait before escalating to the next step." + }, + "targets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier for this target." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users", + "schedules", + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the type of escalation target (example `users`, `schedules`, or `teams`)." + } + }, + "description": "Specifies the collection of escalation targets for this step." + } + }, + "description": "A list of escalation steps, each defining assignment, escalation timeout, and targets for the new policy." + } + }, + "inner_properties": null, + "description": "Defines the attributes for creating an escalation policy, including its description, name, resolution behavior, retries, and steps." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Represents relationships in an escalation policy creation request, including references to teams." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policies" + ], + "properties": null, + "inner_properties": null, + "description": "Indicates that the resource is of type `policies`." + } + }, + "inner_properties": null, + "description": "Represents the data for creating an escalation policy, including its attributes, relationships, and resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Represents a request to create a new escalation policy, including the policy data.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"name\": \"Escalation Policy 1\",\n \"resolve_page_on_policy_end\": true,\n \"retries\": 2,\n \"steps\": [\n {\n \"assignment\": \"default\",\n \"escalate_after_seconds\": 3600,\n \"targets\": [\n {\n \"id\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"users\"\n },\n {\n \"id\": \"00000000-aba2-0000-0000-000000000000\",\n \"type\": \"schedules\"\n },\n {\n \"id\": \"00000000-aba3-0000-0000-000000000000\",\n \"type\": \"teams\"\n }\n ]\n },\n {\n \"assignment\": \"round-robin\",\n \"escalate_after_seconds\": 3600,\n \"targets\": [\n {\n \"id\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"users\"\n },\n {\n \"id\": \"00000000-abb1-0000-0000-000000000000\",\n \"type\": \"users\"\n }\n ]\n }\n ]\n },\n \"relationships\": {\n \"teams\": {\n \"data\": [\n {\n \"id\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"teams\"\n }\n ]\n }\n },\n \"type\": \"policies\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Represents the data for creating an escalation policy, including its attributes, relationships, and resource type.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Defines the attributes for creating an escalation policy, including its description, name, resolution behavior, retries, and steps.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Specifies the name for the new escalation policy.\",\n \"example\": \"On-Call Escalation Policy\",\n \"type\": \"string\"\n },\n \"resolve_page_on_policy_end\": {\n \"description\": \"Indicates whether the page is automatically resolved when the policy ends.\",\n \"type\": \"boolean\"\n },\n \"retries\": {\n \"description\": \"Specifies how many times the escalation sequence is retried if there is no response.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"steps\": {\n \"description\": \"A list of escalation steps, each defining assignment, escalation timeout, and targets for the new policy.\",\n \"items\": {\n \"description\": \"Defines a single escalation step within an escalation policy creation request. Contains assignment strategy, escalation timeout, and a list of targets.\",\n \"properties\": {\n \"assignment\": {\n \"description\": \"Specifies how this escalation step will assign targets (example `default` or `round-robin`).\",\n \"enum\": [\n \"default\",\n \"round-robin\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DEFAULT\",\n \"ROUND_ROBIN\"\n ]\n },\n \"escalate_after_seconds\": {\n \"description\": \"Defines how many seconds to wait before escalating to the next step.\",\n \"example\": 3600,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"targets\": {\n \"description\": \"Specifies the collection of escalation targets for this step.\",\n \"example\": [\n \"users\"\n ],\n \"items\": {\n \"description\": \"Defines a single escalation target within a step for an escalation policy creation request. Contains `id` and `type`.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Specifies the unique identifier for this target.\",\n \"example\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Specifies the type of escalation target (example `users`, `schedules`, or `teams`).\",\n \"enum\": [\n \"users\",\n \"schedules\",\n \"teams\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\",\n \"SCHEDULES\",\n \"TEAMS\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"targets\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"steps\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Represents relationships in an escalation policy creation request, including references to teams.\",\n \"properties\": {\n \"teams\": {\n \"description\": \"Associates teams with this schedule in a data structure.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An array of team references for this schedule.\",\n \"items\": {\n \"description\": \"Relates a team to this schedule, identified by `id` and `type` (must be `teams`).\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the team in this relationship.\",\n \"example\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"teams\",\n \"description\": \"Teams resource type.\",\n \"enum\": [\n \"teams\"\n ],\n \"example\": \"teams\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAMS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"policies\",\n \"description\": \"Indicates that the resource is of type `policies`.\",\n \"enum\": [\n \"policies\"\n ],\n \"example\": \"policies\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"POLICIES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOnCallSchedule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOnCallSchedule.json new file mode 100644 index 00000000..a550bdf0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOnCallSchedule.json @@ -0,0 +1,637 @@ +{ + "name": "CreateOnCallSchedule", + "fully_qualified_name": "DatadogApi.CreateOnCallSchedule@0.1.0", + "description": "Create a new on-call schedule in Datadog.\n\nThis tool is used to create a new on-call schedule in Datadog. It should be called when there is a need to set up a schedule for on-call duties, allowing teams to manage availability and response times. The tool returns a confirmation of the schedule created along with its details.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "schedule_data", + "required": true, + "description": "JSON object containing details for creating an on-call schedule, including attributes like name, layers, and time zone, and relationships like associated teams.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time when this layer becomes active (in ISO 8601)." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time after which this layer no longer applies (in ISO 8601)." + }, + "interval": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "days": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of days in each rotation cycle." + }, + "seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any additional seconds for the rotation cycle (up to 30 days)." + } + }, + "inner_properties": null, + "description": "Defines how often the rotation repeats, using a combination of days and optional seconds. Should be at least 1 hour." + }, + "members": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user's ID." + } + }, + "inner_properties": null, + "description": "Identifies the user participating in this layer as a single object with an `id`." + } + }, + "description": "A list of members who participate in this layer's rotation." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of this layer." + }, + "restrictions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "end_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the ending time for this restriction." + }, + "start_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "start_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the starting time for this restriction." + } + }, + "description": "Zero or more time-based restrictions (for example, only weekdays, during business hours)." + }, + "rotation_start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time when the rotation for this layer starts (in ISO 8601)." + } + }, + "description": "The layers of On-Call coverage that define rotation intervals and restrictions." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable name for the new schedule." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time zone in which the schedule is defined." + } + }, + "inner_properties": null, + "description": "Describes the main attributes for creating a new schedule, including name, layers, and time zone." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Gathers relationship objects for the schedule creation request, including the teams to associate." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "schedules" + ], + "properties": null, + "inner_properties": null, + "description": "Schedules resource type." + } + }, + "inner_properties": null, + "description": "The core data wrapper for creating a schedule, encompassing attributes, relationships, and the resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to return with the schedule. Options: `teams`, `layers`, `layers.members`, `layers.members.user`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateOnCallSchedule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/schedules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "schedule_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time when this layer becomes active (in ISO 8601)." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time after which this layer no longer applies (in ISO 8601)." + }, + "interval": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "days": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of days in each rotation cycle." + }, + "seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any additional seconds for the rotation cycle (up to 30 days)." + } + }, + "inner_properties": null, + "description": "Defines how often the rotation repeats, using a combination of days and optional seconds. Should be at least 1 hour." + }, + "members": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user's ID." + } + }, + "inner_properties": null, + "description": "Identifies the user participating in this layer as a single object with an `id`." + } + }, + "description": "A list of members who participate in this layer's rotation." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of this layer." + }, + "restrictions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "end_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the ending time for this restriction." + }, + "start_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "start_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the starting time for this restriction." + } + }, + "description": "Zero or more time-based restrictions (for example, only weekdays, during business hours)." + }, + "rotation_start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time when the rotation for this layer starts (in ISO 8601)." + } + }, + "description": "The layers of On-Call coverage that define rotation intervals and restrictions." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable name for the new schedule." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time zone in which the schedule is defined." + } + }, + "inner_properties": null, + "description": "Describes the main attributes for creating a new schedule, including name, layers, and time zone." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Gathers relationship objects for the schedule creation request, including the teams to associate." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "schedules" + ], + "properties": null, + "inner_properties": null, + "description": "Schedules resource type." + } + }, + "inner_properties": null, + "description": "The core data wrapper for creating a schedule, encompassing attributes, relationships, and the resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The top-level request body for schedule creation, wrapping a `data` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"layers\": [\n {\n \"effective_date\": \"2025-02-03T05:00:00Z\",\n \"end_date\": \"2025-12-31T00:00:00Z\",\n \"interval\": {\n \"days\": 1\n },\n \"members\": [\n {\n \"user\": {\n \"id\": \"00000000-aba1-0000-0000-000000000000\"\n }\n }\n ],\n \"name\": \"Layer 1\",\n \"restrictions\": [\n {\n \"end_day\": \"friday\",\n \"end_time\": \"17:00:00\",\n \"start_day\": \"monday\",\n \"start_time\": \"09:00:00\"\n }\n ],\n \"rotation_start\": \"2025-02-01T00:00:00Z\"\n }\n ],\n \"name\": \"On-Call Schedule\",\n \"time_zone\": \"America/New_York\"\n },\n \"relationships\": {\n \"teams\": {\n \"data\": [\n {\n \"id\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"teams\"\n }\n ]\n }\n },\n \"type\": \"schedules\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The core data wrapper for creating a schedule, encompassing attributes, relationships, and the resource type.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Describes the main attributes for creating a new schedule, including name, layers, and time zone.\",\n \"properties\": {\n \"layers\": {\n \"description\": \"The layers of On-Call coverage that define rotation intervals and restrictions.\",\n \"items\": {\n \"description\": \"Describes a schedule layer, including rotation intervals, members, restrictions, and timeline settings.\",\n \"properties\": {\n \"effective_date\": {\n \"description\": \"The date/time when this layer becomes active (in ISO 8601).\",\n \"example\": \"2025-01-01T00:00:00Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"end_date\": {\n \"description\": \"The date/time after which this layer no longer applies (in ISO 8601).\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"interval\": {\n \"description\": \"Defines how often the rotation repeats, using a combination of days and optional seconds. Should be at least 1 hour.\",\n \"properties\": {\n \"days\": {\n \"description\": \"The number of days in each rotation cycle.\",\n \"example\": 1,\n \"format\": \"int32\",\n \"maximum\": 400,\n \"type\": \"integer\"\n },\n \"seconds\": {\n \"description\": \"Any additional seconds for the rotation cycle (up to 30 days).\",\n \"example\": 300,\n \"format\": \"int64\",\n \"maximum\": 2592000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"members\": {\n \"description\": \"A list of members who participate in this layer's rotation.\",\n \"items\": {\n \"description\": \"Defines a single member within a schedule layer, including the reference to the underlying user.\",\n \"properties\": {\n \"user\": {\n \"description\": \"Identifies the user participating in this layer as a single object with an `id`.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The user's ID.\",\n \"example\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of this layer.\",\n \"example\": \"Primary On-Call Layer\",\n \"type\": \"string\"\n },\n \"restrictions\": {\n \"description\": \"Zero or more time-based restrictions (for example, only weekdays, during business hours).\",\n \"items\": {\n \"description\": \"Defines a single time restriction rule with start and end times and the applicable weekdays.\",\n \"properties\": {\n \"end_day\": {\n \"description\": \"A day of the week.\",\n \"enum\": [\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ]\n },\n \"end_time\": {\n \"description\": \"Specifies the ending time for this restriction.\",\n \"type\": \"string\"\n },\n \"start_day\": {\n \"description\": \"A day of the week.\",\n \"enum\": [\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ]\n },\n \"start_time\": {\n \"description\": \"Specifies the starting time for this restriction.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"rotation_start\": {\n \"description\": \"The date/time when the rotation for this layer starts (in ISO 8601).\",\n \"example\": \"2025-01-01T00:00:00Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"interval\",\n \"rotation_start\",\n \"effective_date\",\n \"members\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"A human-readable name for the new schedule.\",\n \"example\": \"Team A On-Call\",\n \"type\": \"string\"\n },\n \"time_zone\": {\n \"description\": \"The time zone in which the schedule is defined.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"time_zone\",\n \"layers\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Gathers relationship objects for the schedule creation request, including the teams to associate.\",\n \"properties\": {\n \"teams\": {\n \"description\": \"Associates teams with this schedule in a data structure.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An array of team references for this schedule.\",\n \"items\": {\n \"description\": \"Relates a team to this schedule, identified by `id` and `type` (must be `teams`).\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the team in this relationship.\",\n \"example\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"teams\",\n \"description\": \"Teams resource type.\",\n \"enum\": [\n \"teams\"\n ],\n \"example\": \"teams\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAMS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"schedules\",\n \"description\": \"Schedules resource type.\",\n \"enum\": [\n \"schedules\"\n ],\n \"example\": \"schedules\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SCHEDULES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOpsgenieService.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOpsgenieService.json new file mode 100644 index 00000000..3160df90 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOpsgenieService.json @@ -0,0 +1,270 @@ +{ + "name": "CreateOpsgenieService", + "fully_qualified_name": "DatadogApi.CreateOpsgenieService@0.1.0", + "description": "Create a new Opsgenie service in Datadog integration.\n\nThis tool is used to create a new service object within the Opsgenie integration on Datadog. It should be called when you need to set up or add a new Opsgenie service to monitor and manage incidents or alerts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "opsgenie_service_name", + "required": true, + "description": "The name for the Opsgenie service to be created in the Datadog integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for the Opsgenie service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "opsgenie_api_key", + "required": true, + "description": "The API key required to authenticate your Opsgenie service within Datadog. This key must be a valid string associated with your Opsgenie account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Opsgenie API key for your Opsgenie service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.opsgenie_api_key" + }, + { + "name": "opsgenie_service_region", + "required": true, + "description": "The region for the Opsgenie service. Choose from 'us', 'eu', or 'custom'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "us", + "eu", + "custom" + ], + "properties": null, + "inner_properties": null, + "description": "The region for the Opsgenie service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.region" + }, + { + "name": "opsgenie_service_resource_type", + "required": true, + "description": "Specify the Opsgenie service resource type, which must be 'opsgenie-service'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "opsgenie-service" + ], + "properties": null, + "inner_properties": null, + "description": "Opsgenie service resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "custom_region_url", + "required": false, + "description": "The custom URL for a specific Opsgenie region. Used to connect to a custom region.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom URL for a custom region." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.custom_url" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateOpsgenieService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/opsgenie/services", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.custom_url", + "tool_parameter_name": "custom_region_url", + "description": "The custom URL for a custom region.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom URL for a custom region." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "opsgenie_service_name", + "description": "The name for the Opsgenie service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for the Opsgenie service." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.opsgenie_api_key", + "tool_parameter_name": "opsgenie_api_key", + "description": "The Opsgenie API key for your Opsgenie service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Opsgenie API key for your Opsgenie service." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.region", + "tool_parameter_name": "opsgenie_service_region", + "description": "The region for the Opsgenie service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "us", + "eu", + "custom" + ], + "properties": null, + "inner_properties": null, + "description": "The region for the Opsgenie service." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "opsgenie_service_resource_type", + "description": "Opsgenie service resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "opsgenie-service" + ], + "properties": null, + "inner_properties": null, + "description": "Opsgenie service resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "opsgenie-service", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create request for an Opsgenie service.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Opsgenie service data for a create request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The Opsgenie service attributes for a create request.\",\n \"properties\": {\n \"custom_url\": {\n \"description\": \"The custom URL for a custom region.\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name for the Opsgenie service.\",\n \"example\": \"fake-opsgenie-service-name\",\n \"maxLength\": 100,\n \"type\": \"string\"\n },\n \"opsgenie_api_key\": {\n \"description\": \"The Opsgenie API key for your Opsgenie service.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region for the Opsgenie service.\",\n \"enum\": [\n \"us\",\n \"eu\",\n \"custom\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\",\n \"CUSTOM\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"opsgenie_api_key\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"opsgenie-service\",\n \"description\": \"Opsgenie service resource type.\",\n \"enum\": [\n \"opsgenie-service\"\n ],\n \"example\": \"opsgenie-service\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPSGENIE_SERVICE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Opsgenie service payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrUpdateServiceDefinitions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrUpdateServiceDefinitions.json new file mode 100644 index 00000000..41bb3044 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrUpdateServiceDefinitions.json @@ -0,0 +1,126 @@ +{ + "name": "CreateOrUpdateServiceDefinitions", + "fully_qualified_name": "DatadogApi.CreateOrUpdateServiceDefinitions@0.1.0", + "description": "Create or update service definitions in Datadog.\n\nUse this tool to create a new service definition or update an existing one in the Datadog Service Catalog. Call this when needing to manage service details within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_definition_yaml_json", + "required": true, + "description": "Provide the service definition in YAML or JSON format for creating or updating a service in Datadog.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Service Definition YAML/JSON." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateOrUpdateServiceDefinitions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/services/definitions", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "service_definition_yaml_json", + "description": "Service Definition YAML/JSON.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Service Definition YAML/JSON." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create service definitions request.\",\n \"oneOf\": [\n {\n \"description\": \"Service definition v2.2 for providing service metadata and integrations.\",\n \"properties\": {\n \"application\": {\n \"description\": \"Identifier for a group of related services serving a product feature, which the service is a part of.\",\n \"example\": \"my-app\",\n \"type\": \"string\"\n },\n \"ci-pipeline-fingerprints\": {\n \"description\": \"A set of CI fingerprints.\",\n \"example\": [\n \"j88xdEy0J5lc\",\n \"eZ7LMljCk8vo\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"contacts\": {\n \"description\": \"A list of contacts related to the services.\",\n \"items\": {\n \"description\": \"Service owner's contacts information.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://teams.microsoft.com/myteam\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact Name.\",\n \"example\": \"My team channel\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type. Datadog recognizes the following types: `email`, `slack`, and `microsoft-teams`.\",\n \"example\": \"slack\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"dd-service\": {\n \"description\": \"Unique identifier of the service. Must be unique across all services and is used to match with a service in Datadog.\",\n \"example\": \"my-service\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"A short description of the service.\",\n \"example\": \"My service description\",\n \"type\": \"string\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Extensions to v2.2 schema.\",\n \"example\": {\n \"myorg/extension\": \"extensionValue\"\n },\n \"type\": \"object\"\n },\n \"integrations\": {\n \"description\": \"Third party integrations that Datadog supports.\",\n \"properties\": {\n \"opsgenie\": {\n \"description\": \"Opsgenie integration for the service.\",\n \"properties\": {\n \"region\": {\n \"description\": \"Opsgenie instance region.\",\n \"enum\": [\n \"US\",\n \"EU\"\n ],\n \"example\": \"US\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\"\n ]\n },\n \"service-url\": {\n \"description\": \"Opsgenie service url.\",\n \"example\": \"https://my-org.opsgenie.com/service/123e4567-e89b-12d3-a456-426614174000\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"service-url\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"description\": \"PagerDuty integration for the service.\",\n \"properties\": {\n \"service-url\": {\n \"description\": \"PagerDuty service url.\",\n \"example\": \"https://my-org.pagerduty.com/service-directory/PMyService\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"languages\": {\n \"description\": \"The service's programming language. Datadog recognizes the following languages: `dotnet`, `go`, `java`, `js`, `php`, `python`, `ruby`, and `c++`.\",\n \"example\": [\n \"dotnet\",\n \"go\",\n \"java\",\n \"js\",\n \"php\",\n \"python\",\n \"ruby\",\n \"c++\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"lifecycle\": {\n \"description\": \"The current life cycle phase of the service.\",\n \"example\": \"sandbox\",\n \"type\": \"string\"\n },\n \"links\": {\n \"description\": \"A list of links related to the services.\",\n \"items\": {\n \"description\": \"Service's external links.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"Runbook\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Link provider.\",\n \"example\": \"Github\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Link type. Datadog recognizes the following types: `runbook`, `doc`, `repo`, `dashboard`, and `other`.\",\n \"example\": \"runbook\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://my-runbook\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schema-version\": {\n \"default\": \"v2.2\",\n \"description\": \"Schema version being used.\",\n \"enum\": [\n \"v2.2\"\n ],\n \"example\": \"v2.2\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V2_2\"\n ]\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"my:tag\",\n \"service:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"team\": {\n \"description\": \"Team that owns the service. It is used to locate a team defined in Datadog Teams if it exists.\",\n \"example\": \"my-team\",\n \"type\": \"string\"\n },\n \"tier\": {\n \"description\": \"Importance of the service.\",\n \"example\": \"High\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of service.\",\n \"example\": \"web\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"schema-version\",\n \"dd-service\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Service definition v2.1 for providing service metadata and integrations.\",\n \"properties\": {\n \"application\": {\n \"description\": \"Identifier for a group of related services serving a product feature, which the service is a part of.\",\n \"example\": \"my-app\",\n \"type\": \"string\"\n },\n \"contacts\": {\n \"description\": \"A list of contacts related to the services.\",\n \"items\": {\n \"description\": \"Service owner's contacts information.\",\n \"oneOf\": [\n {\n \"description\": \"Service owner's email.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"contact@datadoghq.com\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact email.\",\n \"example\": \"Team Email\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"enum\": [\n \"email\"\n ],\n \"example\": \"email\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EMAIL\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Service owner's Slack channel.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Slack Channel.\",\n \"example\": \"https://yourcompany.slack.com/archives/channel123\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact Slack.\",\n \"example\": \"Team Slack\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"enum\": [\n \"slack\"\n ],\n \"example\": \"slack\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SLACK\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Service owner's Microsoft Teams.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://teams.microsoft.com/myteam\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact Microsoft Teams.\",\n \"example\": \"My team channel\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"enum\": [\n \"microsoft-teams\"\n ],\n \"example\": \"microsoft-teams\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MICROSOFT_TEAMS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"dd-service\": {\n \"description\": \"Unique identifier of the service. Must be unique across all services and is used to match with a service in Datadog.\",\n \"example\": \"my-service\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"A short description of the service.\",\n \"example\": \"My service description\",\n \"type\": \"string\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Extensions to v2.1 schema.\",\n \"example\": {\n \"myorg/extension\": \"extensionValue\"\n },\n \"type\": \"object\"\n },\n \"integrations\": {\n \"description\": \"Third party integrations that Datadog supports.\",\n \"properties\": {\n \"opsgenie\": {\n \"description\": \"Opsgenie integration for the service.\",\n \"properties\": {\n \"region\": {\n \"description\": \"Opsgenie instance region.\",\n \"enum\": [\n \"US\",\n \"EU\"\n ],\n \"example\": \"US\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\"\n ]\n },\n \"service-url\": {\n \"description\": \"Opsgenie service url.\",\n \"example\": \"https://my-org.opsgenie.com/service/123e4567-e89b-12d3-a456-426614174000\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"service-url\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"description\": \"PagerDuty integration for the service.\",\n \"properties\": {\n \"service-url\": {\n \"description\": \"PagerDuty service url.\",\n \"example\": \"https://my-org.pagerduty.com/service-directory/PMyService\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"lifecycle\": {\n \"description\": \"The current life cycle phase of the service.\",\n \"example\": \"sandbox\",\n \"type\": \"string\"\n },\n \"links\": {\n \"description\": \"A list of links related to the services.\",\n \"items\": {\n \"description\": \"Service's external links.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"Runbook\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Link provider.\",\n \"example\": \"Github\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Link type.\",\n \"enum\": [\n \"doc\",\n \"repo\",\n \"runbook\",\n \"dashboard\",\n \"other\"\n ],\n \"example\": \"runbook\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DOC\",\n \"REPO\",\n \"RUNBOOK\",\n \"DASHBOARD\",\n \"OTHER\"\n ]\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://my-runbook\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schema-version\": {\n \"default\": \"v2.1\",\n \"description\": \"Schema version being used.\",\n \"enum\": [\n \"v2.1\"\n ],\n \"example\": \"v2.1\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V2_1\"\n ]\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"my:tag\",\n \"service:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"team\": {\n \"description\": \"Team that owns the service. It is used to locate a team defined in Datadog Teams if it exists.\",\n \"example\": \"my-team\",\n \"type\": \"string\"\n },\n \"tier\": {\n \"description\": \"Importance of the service.\",\n \"example\": \"High\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"schema-version\",\n \"dd-service\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Service definition V2 for providing service metadata and integrations.\",\n \"properties\": {\n \"contacts\": {\n \"description\": \"A list of contacts related to the services.\",\n \"items\": {\n \"description\": \"Service owner's contacts information.\",\n \"oneOf\": [\n {\n \"description\": \"Service owner's email.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"contact@datadoghq.com\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact email.\",\n \"example\": \"Team Email\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"enum\": [\n \"email\"\n ],\n \"example\": \"email\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EMAIL\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Service owner's Slack channel.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Slack Channel.\",\n \"example\": \"https://yourcompany.slack.com/archives/channel123\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact Slack.\",\n \"example\": \"Team Slack\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"enum\": [\n \"slack\"\n ],\n \"example\": \"slack\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SLACK\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Service owner's Microsoft Teams.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://teams.microsoft.com/myteam\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact Microsoft Teams.\",\n \"example\": \"My team channel\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"enum\": [\n \"microsoft-teams\"\n ],\n \"example\": \"microsoft-teams\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MICROSOFT_TEAMS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"dd-service\": {\n \"description\": \"Unique identifier of the service. Must be unique across all services and is used to match with a service in Datadog.\",\n \"example\": \"my-service\",\n \"type\": \"string\"\n },\n \"dd-team\": {\n \"description\": \"Experimental feature. A Team handle that matches a Team in the Datadog Teams product.\",\n \"example\": \"my-team\",\n \"type\": \"string\"\n },\n \"docs\": {\n \"description\": \"A list of documentation related to the services.\",\n \"items\": {\n \"description\": \"Service documents.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Document name.\",\n \"example\": \"Architecture\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Document provider.\",\n \"example\": \"google drive\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Document URL.\",\n \"example\": \"https://gdrive/mydoc\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Extensions to V2 schema.\",\n \"example\": {\n \"myorg/extension\": \"extensionValue\"\n },\n \"type\": \"object\"\n },\n \"integrations\": {\n \"description\": \"Third party integrations that Datadog supports.\",\n \"properties\": {\n \"opsgenie\": {\n \"description\": \"Opsgenie integration for the service.\",\n \"properties\": {\n \"region\": {\n \"description\": \"Opsgenie instance region.\",\n \"enum\": [\n \"US\",\n \"EU\"\n ],\n \"example\": \"US\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\"\n ]\n },\n \"service-url\": {\n \"description\": \"Opsgenie service url.\",\n \"example\": \"https://my-org.opsgenie.com/service/123e4567-e89b-12d3-a456-426614174000\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"service-url\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"description\": \"PagerDuty service URL for the service.\",\n \"example\": \"https://my-org.pagerduty.com/service-directory/PMyService\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"links\": {\n \"description\": \"A list of links related to the services.\",\n \"items\": {\n \"description\": \"Service's external links.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"Runbook\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Link type.\",\n \"enum\": [\n \"doc\",\n \"wiki\",\n \"runbook\",\n \"url\",\n \"repo\",\n \"dashboard\",\n \"oncall\",\n \"code\",\n \"link\"\n ],\n \"example\": \"runbook\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DOC\",\n \"WIKI\",\n \"RUNBOOK\",\n \"URL\",\n \"REPO\",\n \"DASHBOARD\",\n \"ONCALL\",\n \"CODE\",\n \"LINK\"\n ]\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://my-runbook\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"repos\": {\n \"description\": \"A list of code repositories related to the services.\",\n \"items\": {\n \"description\": \"Service code repositories.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Repository name.\",\n \"example\": \"Source Code\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Repository provider.\",\n \"example\": \"GitHub\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Repository URL.\",\n \"example\": \"https://github.com/DataDog/schema\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schema-version\": {\n \"default\": \"v2\",\n \"description\": \"Schema version being used.\",\n \"enum\": [\n \"v2\"\n ],\n \"example\": \"v2\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V2\"\n ]\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"my:tag\",\n \"service:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"team\": {\n \"description\": \"Team that owns the service.\",\n \"example\": \"my-team\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"schema-version\",\n \"dd-service\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Service Definition in raw JSON/YAML representation.\",\n \"example\": \"---\\nschema-version: v2\\ndd-service: my-service\",\n \"type\": \"string\"\n }\n ]\n }\n }\n },\n \"description\": \"Service Definition YAML/JSON.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrgConnection.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrgConnection.json new file mode 100644 index 00000000..89636491 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrgConnection.json @@ -0,0 +1,266 @@ +{ + "name": "CreateOrgConnection", + "fully_qualified_name": "DatadogApi.CreateOrgConnection@0.1.0", + "description": "Creates a new organization connection in Datadog.\n\nUse this tool to create a connection between the current organization and a target organization within Datadog. Ideal for linking organizational resources and sharing data across teams.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "connection_types", + "required": true, + "description": "List of connection types to establish between the organizations.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of connection types to establish." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.connection_types" + }, + { + "name": "organization_connection_type", + "required": true, + "description": "Specify the type of the organization connection. Must be 'org_connection'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "org_connection" + ], + "properties": null, + "inner_properties": null, + "description": "Org connection type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "target_org_uuid", + "required": false, + "description": "The UUID of the target organization to connect to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Org UUID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.sink_org.data.id" + }, + { + "name": "target_org_name", + "required": false, + "description": "The name of the target organization to connect with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Org name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.sink_org.data.name" + }, + { + "name": "organization_relationship_type", + "required": false, + "description": "Specifies the type of the organization relationship. Must be 'orgs'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "orgs" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the organization relationship." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.sink_org.data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateOrgConnections'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/org_connections", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.connection_types", + "tool_parameter_name": "connection_types", + "description": "List of connection types to establish.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of connection types to establish." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.sink_org.data.id", + "tool_parameter_name": "target_org_uuid", + "description": "Org UUID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Org UUID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.sink_org.data.name", + "tool_parameter_name": "target_org_name", + "description": "Org name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Org name." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.sink_org.data.type", + "tool_parameter_name": "organization_relationship_type", + "description": "The type of the organization relationship.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "orgs" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the organization relationship." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "organization_connection_type", + "description": "Org connection type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "org_connection" + ], + "properties": null, + "inner_properties": null, + "description": "Org connection type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to create an org connection.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Org connection creation data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for creating an org connection.\",\n \"properties\": {\n \"connection_types\": {\n \"description\": \"List of connection types to establish.\",\n \"example\": [\n \"logs\"\n ],\n \"items\": {\n \"description\": \"Available connection types between organizations.\",\n \"enum\": [\n \"logs\",\n \"metrics\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"METRICS\"\n ]\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"connection_types\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships for org connection creation.\",\n \"properties\": {\n \"sink_org\": {\n \"description\": \"Org relationship.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `OrgConnectionOrgRelationshipData` object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Org UUID.\",\n \"example\": \"f9ec96b0-8c8a-4b0a-9b0a-1b2c3d4e5f6a\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Org name.\",\n \"example\": \"Example Org\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the organization relationship.\",\n \"enum\": [\n \"orgs\"\n ],\n \"example\": \"orgs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ORGS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"sink_org\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Org connection type.\",\n \"enum\": [\n \"org_connection\"\n ],\n \"example\": \"org_connection\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ORG_CONNECTION\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\",\n \"relationships\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrganizationUser.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrganizationUser.json new file mode 100644 index 00000000..09dec096 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateOrganizationUser.json @@ -0,0 +1,322 @@ +{ + "name": "CreateOrganizationUser", + "fully_qualified_name": "DatadogApi.CreateOrganizationUser@0.1.0", + "description": "Create a user for your organization in Datadog.\n\nThis tool allows you to create a new user for your organization in Datadog. Use it when you need to add a team member to your Datadog account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "new_user_details", + "required": true, + "description": "Details of the user to be created, including attributes like email, name, title, and relationships specifying user roles.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the user." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the user." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the user." + } + }, + "inner_properties": null, + "description": "Attributes of the created user." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "roles": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "description": "An array containing type and the unique identifier of a role." + } + }, + "inner_properties": null, + "description": "Relationship to roles." + } + }, + "inner_properties": null, + "description": "Relationships of the user object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Object to create a user." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateUser'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "new_user_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the user." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the user." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the user." + } + }, + "inner_properties": null, + "description": "Attributes of the created user." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "roles": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "description": "An array containing type and the unique identifier of a role." + } + }, + "inner_properties": null, + "description": "Relationship to roles." + } + }, + "inner_properties": null, + "description": "Relationships of the user object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Object to create a user." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create a user.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object to create a user.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the created user.\",\n \"properties\": {\n \"email\": {\n \"description\": \"The email of the user.\",\n \"example\": \"jane.doe@example.com\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the user.\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"The title of the user.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"email\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships of the user object.\",\n \"properties\": {\n \"roles\": {\n \"description\": \"Relationship to roles.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An array containing type and the unique identifier of a role.\",\n \"items\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreatePipeline.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreatePipeline.json new file mode 100644 index 00000000..21e56b44 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreatePipeline.json @@ -0,0 +1,262 @@ +{ + "name": "CreatePipeline", + "fully_qualified_name": "DatadogApi.CreatePipeline@0.1.0", + "description": "Create a new pipeline in Datadog's system.\n\nUse this tool to create a new pipeline within the Datadog service. It should be called when a user needs to set up or initialize a new data pipeline in their Datadog environment.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "pipeline_configuration", + "required": true, + "description": "JSON object defining the pipeline's name, type, and components such as sources, processors, and destinations. Must include 'type' set to 'pipelines'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destinations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of destination components where processed logs are sent." + }, + "processors": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of processors that transform or enrich log data." + }, + "sources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of configured data sources for the pipeline." + } + }, + "inner_properties": null, + "description": "Specifies the pipeline's configuration, including its sources, processors, and destinations." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the pipeline." + } + }, + "inner_properties": null, + "description": "Defines the pipeline\u2019s name and its components (sources, processors, and destinations)." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type identifier. For pipeline resources, this should always be set to `pipelines`." + } + }, + "inner_properties": null, + "description": "Contains the the pipeline configuration." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreatePipeline'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "pipeline_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destinations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of destination components where processed logs are sent." + }, + "processors": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of processors that transform or enrich log data." + }, + "sources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of configured data sources for the pipeline." + } + }, + "inner_properties": null, + "description": "Specifies the pipeline's configuration, including its sources, processors, and destinations." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the pipeline." + } + }, + "inner_properties": null, + "description": "Defines the pipeline\u2019s name and its components (sources, processors, and destinations)." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type identifier. For pipeline resources, this should always be set to `pipelines`." + } + }, + "inner_properties": null, + "description": "Contains the the pipeline configuration." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Input schema representing an observability pipeline configuration. Used in create and validate requests.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Contains the the pipeline configuration.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Defines the pipeline\\u2019s name and its components (sources, processors, and destinations).\",\n \"properties\": {\n \"config\": {\n \"description\": \"Specifies the pipeline's configuration, including its sources, processors, and destinations.\",\n \"properties\": {\n \"destinations\": {\n \"description\": \"A list of destination components where processed logs are sent.\",\n \"example\": [\n {\n \"id\": \"datadog-logs-destination\",\n \"inputs\": [\n \"filter-processor\"\n ],\n \"type\": \"datadog_logs\"\n }\n ],\n \"items\": {\n \"description\": \"A destination for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `datadog_logs` destination forwards logs to Datadog Log Management.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"datadog-logs-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"datadog_logs\",\n \"description\": \"The destination type. The value should always be `datadog_logs`.\",\n \"enum\": [\n \"datadog_logs\"\n ],\n \"example\": \"datadog_logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_LOGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_s3` destination sends your logs in Datadog-rehydratable format to an Amazon S3 bucket for archiving.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"S3 bucket name.\",\n \"example\": \"error-logs\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"amazon-s3-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_prefix\": {\n \"description\": \"Optional prefix for object keys.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"AWS region of the S3 bucket.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"storage_class\": {\n \"description\": \"S3 storage class.\",\n \"enum\": [\n \"STANDARD\",\n \"REDUCED_REDUNDANCY\",\n \"INTELLIGENT_TIERING\",\n \"STANDARD_IA\",\n \"EXPRESS_ONEZONE\",\n \"ONEZONE_IA\",\n \"GLACIER\",\n \"GLACIER_IR\",\n \"DEEP_ARCHIVE\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"REDUCED_REDUNDANCY\",\n \"INTELLIGENT_TIERING\",\n \"STANDARD_IA\",\n \"EXPRESS_ONEZONE\",\n \"ONEZONE_IA\",\n \"GLACIER\",\n \"GLACIER_IR\",\n \"DEEP_ARCHIVE\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_s3\",\n \"description\": \"The destination type. Always `amazon_s3`.\",\n \"enum\": [\n \"amazon_s3\"\n ],\n \"example\": \"amazon_s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_S3\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"region\",\n \"storage_class\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_cloud_storage` destination stores logs in a Google Cloud Storage (GCS) bucket.\\nIt requires a bucket name, GCP authentication, and metadata fields.\",\n \"properties\": {\n \"acl\": {\n \"description\": \"Access control list setting for objects written to the bucket.\",\n \"enum\": [\n \"private\",\n \"project-private\",\n \"public-read\",\n \"authenticated-read\",\n \"bucket-owner-read\",\n \"bucket-owner-full-control\"\n ],\n \"example\": \"private\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PRIVATE\",\n \"PROJECTNOT_PRIVATE\",\n \"PUBLICNOT_READ\",\n \"AUTHENTICATEDNOT_READ\",\n \"BUCKETNOT_OWNERNOT_READ\",\n \"BUCKETNOT_OWNERNOT_FULLNOT_CONTROL\"\n ]\n },\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"Name of the GCS bucket.\",\n \"example\": \"error-logs\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"gcs-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_prefix\": {\n \"description\": \"Optional prefix for object keys within the GCS bucket.\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Custom metadata to attach to each object uploaded to the GCS bucket.\",\n \"items\": {\n \"description\": \"A custom metadata entry.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The metadata key.\",\n \"example\": \"environment\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The metadata value.\",\n \"example\": \"production\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"storage_class\": {\n \"description\": \"Storage class used for objects stored in GCS.\",\n \"enum\": [\n \"STANDARD\",\n \"NEARLINE\",\n \"COLDLINE\",\n \"ARCHIVE\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"NEARLINE\",\n \"COLDLINE\",\n \"ARCHIVE\"\n ]\n },\n \"type\": {\n \"default\": \"google_cloud_storage\",\n \"description\": \"The destination type. Always `google_cloud_storage`.\",\n \"enum\": [\n \"google_cloud_storage\"\n ],\n \"example\": \"google_cloud_storage\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_CLOUD_STORAGE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"auth\",\n \"storage_class\",\n \"acl\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_hec` destination forwards logs to Splunk using the HTTP Event Collector (HEC).\",\n \"properties\": {\n \"auto_extract_timestamp\": {\n \"description\": \"If `true`, Splunk tries to extract timestamps from incoming log events.\\nIf `false`, Splunk assigns the time the event was received.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-hec-destination\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Optional name of the Splunk index where logs are written.\",\n \"example\": \"main\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourcetype\": {\n \"description\": \"The Splunk sourcetype to assign to log events.\",\n \"example\": \"custom_sourcetype\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"The destination type. Always `splunk_hec`.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sumo_logic` destination forwards logs to Sumo Logic.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"The output encoding format.\",\n \"enum\": [\n \"json\",\n \"raw_message\",\n \"logfmt\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\",\n \"LOGFMT\"\n ]\n },\n \"header_custom_fields\": {\n \"description\": \"A list of custom headers to include in the request to Sumo Logic.\",\n \"items\": {\n \"description\": \"Single key-value pair used as a custom log header for Sumo Logic.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\",\n \"example\": \"X-Sumo-Category\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value.\",\n \"example\": \"my-app-logs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"header_host_name\": {\n \"description\": \"Optional override for the host name header.\",\n \"example\": \"host-123\",\n \"type\": \"string\"\n },\n \"header_source_category\": {\n \"description\": \"Optional override for the source category header.\",\n \"example\": \"source-category\",\n \"type\": \"string\"\n },\n \"header_source_name\": {\n \"description\": \"Optional override for the source name header.\",\n \"example\": \"source-name\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sumo-logic-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"sumo_logic\",\n \"description\": \"The destination type. The value should always be `sumo_logic`.\",\n \"enum\": [\n \"sumo_logic\"\n ],\n \"example\": \"sumo_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUMO_LOGIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `elasticsearch` destination writes logs to an Elasticsearch cluster.\",\n \"properties\": {\n \"api_version\": {\n \"description\": \"The Elasticsearch API version to use. Set to `auto` to auto-detect.\",\n \"enum\": [\n \"auto\",\n \"v6\",\n \"v7\",\n \"v8\"\n ],\n \"example\": \"auto\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AUTO\",\n \"V6\",\n \"V7\",\n \"V8\"\n ]\n },\n \"bulk_index\": {\n \"description\": \"The index to write logs to in Elasticsearch.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"elasticsearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"elasticsearch\",\n \"description\": \"The destination type. The value should always be `elasticsearch`.\",\n \"enum\": [\n \"elasticsearch\"\n ],\n \"example\": \"elasticsearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ELASTICSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rsyslog` destination forwards logs to an external `rsyslog` server over TCP or UDP using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"rsyslog-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keepalive\": {\n \"description\": \"Optional socket keepalive duration in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rsyslog\",\n \"description\": \"The destination type. The value should always be `rsyslog`.\",\n \"enum\": [\n \"rsyslog\"\n ],\n \"example\": \"rsyslog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RSYSLOG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `syslog_ng` destination forwards logs to an external `syslog-ng` server over TCP or UDP using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"syslog-ng-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keepalive\": {\n \"description\": \"Optional socket keepalive duration in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"syslog_ng\",\n \"description\": \"The destination type. The value should always be `syslog_ng`.\",\n \"enum\": [\n \"syslog_ng\"\n ],\n \"example\": \"syslog_ng\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SYSLOG_NG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `azure_storage` destination forwards logs to an Azure Blob Storage container.\",\n \"properties\": {\n \"blob_prefix\": {\n \"description\": \"Optional prefix for blobs written to the container.\",\n \"example\": \"logs/\",\n \"type\": \"string\"\n },\n \"container_name\": {\n \"description\": \"The name of the Azure Blob Storage container to store logs in.\",\n \"example\": \"my-log-container\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"azure-storage-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"processor-id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"azure_storage\",\n \"description\": \"The destination type. The value should always be `azure_storage`.\",\n \"enum\": [\n \"azure_storage\"\n ],\n \"example\": \"azure_storage\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE_STORAGE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"container_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `microsoft_sentinel` destination forwards logs to Microsoft Sentinel.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"Azure AD client ID used for authentication.\",\n \"example\": \"a1b2c3d4-5678-90ab-cdef-1234567890ab\",\n \"type\": \"string\"\n },\n \"dcr_immutable_id\": {\n \"description\": \"The immutable ID of the Data Collection Rule (DCR).\",\n \"example\": \"dcr-uuid-1234\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sentinel-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"table\": {\n \"description\": \"The name of the Log Analytics table where logs are sent.\",\n \"example\": \"CustomLogsTable\",\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"Azure AD tenant ID.\",\n \"example\": \"abcdef12-3456-7890-abcd-ef1234567890\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"microsoft_sentinel\",\n \"description\": \"The destination type. The value should always be `microsoft_sentinel`.\",\n \"enum\": [\n \"microsoft_sentinel\"\n ],\n \"example\": \"microsoft_sentinel\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MICROSOFT_SENTINEL\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"client_id\",\n \"tenant_id\",\n \"dcr_immutable_id\",\n \"table\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_chronicle` destination sends logs to Google Chronicle.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"customer_id\": {\n \"description\": \"The Google Chronicle customer ID.\",\n \"example\": \"abcdefg123456789\",\n \"type\": \"string\"\n },\n \"encoding\": {\n \"description\": \"The encoding format for the logs sent to Chronicle.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"google-chronicle-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"log_type\": {\n \"description\": \"The log type metadata associated with the Chronicle destination.\",\n \"example\": \"nginx_logs\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"google_chronicle\",\n \"description\": \"The destination type. The value should always be `google_chronicle`.\",\n \"enum\": [\n \"google_chronicle\"\n ],\n \"example\": \"google_chronicle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_CHRONICLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"auth\",\n \"customer_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `new_relic` destination sends logs to the New Relic platform.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"new-relic-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"The New Relic region.\",\n \"enum\": [\n \"us\",\n \"eu\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\"\n ]\n },\n \"type\": {\n \"default\": \"new_relic\",\n \"description\": \"The destination type. The value should always be `new_relic`.\",\n \"enum\": [\n \"new_relic\"\n ],\n \"example\": \"new_relic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEW_RELIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sentinel_one` destination sends logs to SentinelOne.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sentinelone-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"The SentinelOne region to send logs to.\",\n \"enum\": [\n \"us\",\n \"eu\",\n \"ca\",\n \"data_set_us\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\",\n \"CA\",\n \"DATA_SET_US\"\n ]\n },\n \"type\": {\n \"default\": \"sentinel_one\",\n \"description\": \"The destination type. The value should always be `sentinel_one`.\",\n \"enum\": [\n \"sentinel_one\"\n ],\n \"example\": \"sentinel_one\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENTINEL_ONE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `opensearch` destination writes logs to an OpenSearch cluster.\",\n \"properties\": {\n \"bulk_index\": {\n \"description\": \"The index to write logs to.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"opensearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"opensearch\",\n \"description\": \"The destination type. The value should always be `opensearch`.\",\n \"enum\": [\n \"opensearch\"\n ],\n \"example\": \"opensearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPENSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_opensearch` destination writes logs to Amazon OpenSearch.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Authentication settings for the Amazon OpenSearch destination.\\nThe `strategy` field determines whether basic or AWS-based authentication is used.\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The ARN of the role to assume (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"aws_region\": {\n \"description\": \"AWS region\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"External ID for the assumed role (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"Session name for the assumed role (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The authentication strategy to use.\",\n \"enum\": [\n \"basic\",\n \"aws\"\n ],\n \"example\": \"aws\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\",\n \"AWS\"\n ]\n }\n },\n \"required\": [\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n \"bulk_index\": {\n \"description\": \"The index to write logs to.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"elasticsearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"amazon_opensearch\",\n \"description\": \"The destination type. The value should always be `amazon_opensearch`.\",\n \"enum\": [\n \"amazon_opensearch\"\n ],\n \"example\": \"amazon_opensearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_OPENSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"auth\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `socket` destination sends logs over TCP or UDP to a remote server.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"framing\": {\n \"description\": \"Framing method configuration.\",\n \"oneOf\": [\n {\n \"description\": \"Each log event is delimited by a newline character.\",\n \"properties\": {\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingNewlineDelimitedMethod` object.\",\n \"enum\": [\n \"newline_delimited\"\n ],\n \"example\": \"newline_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEWLINE_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Event data is not delimited at all.\",\n \"properties\": {\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingBytesMethod` object.\",\n \"enum\": [\n \"bytes\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Each log event is separated using the specified delimiter character.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"A single ASCII character used as a delimiter.\",\n \"example\": \"|\",\n \"maxLength\": 1,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingCharacterDelimitedMethod` object.\",\n \"enum\": [\n \"character_delimited\"\n ],\n \"example\": \"character_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHARACTER_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\",\n \"delimiter\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"socket-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"Protocol used to send logs.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"socket\",\n \"description\": \"The destination type. The value should always be `socket`.\",\n \"enum\": [\n \"socket\"\n ],\n \"example\": \"socket\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SOCKET\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\",\n \"framing\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_security_lake` destination sends your logs to Amazon Security Lake.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"Name of the Amazon S3 bucket in Security Lake (3-63 characters).\",\n \"example\": \"security-lake-bucket\",\n \"type\": \"string\"\n },\n \"custom_source_name\": {\n \"description\": \"Custom source name for the logs in Security Lake.\",\n \"example\": \"my-custom-source\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"amazon-security-lake-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"AWS region of the S3 bucket.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_security_lake\",\n \"description\": \"The destination type. Always `amazon_security_lake`.\",\n \"enum\": [\n \"amazon_security_lake\"\n ],\n \"example\": \"amazon_security_lake\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_SECURITY_LAKE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"region\",\n \"custom_source_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `crowdstrike_next_gen_siem` destination forwards logs to CrowdStrike Next Gen SIEM.\",\n \"properties\": {\n \"compression\": {\n \"description\": \"Compression configuration for log events.\",\n \"properties\": {\n \"algorithm\": {\n \"description\": \"Compression algorithm for log events.\",\n \"enum\": [\n \"gzip\",\n \"zlib\"\n ],\n \"example\": \"gzip\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GZIP\",\n \"ZLIB\"\n ]\n },\n \"level\": {\n \"description\": \"Compression level.\",\n \"example\": 6,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"algorithm\"\n ],\n \"type\": \"object\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"crowdstrike-ngsiem-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"crowdstrike_next_gen_siem\",\n \"description\": \"The destination type. The value should always be `crowdstrike_next_gen_siem`.\",\n \"enum\": [\n \"crowdstrike_next_gen_siem\"\n ],\n \"example\": \"crowdstrike_next_gen_siem\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CROWDSTRIKE_NEXT_GEN_SIEM\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_pubsub` destination publishes logs to a Google Cloud Pub/Sub topic.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"google-pubsub-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"project\": {\n \"description\": \"The GCP project ID that owns the Pub/Sub topic.\",\n \"example\": \"my-gcp-project\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"topic\": {\n \"description\": \"The Pub/Sub topic name to publish logs to.\",\n \"example\": \"logs-subscription\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"google_pubsub\",\n \"description\": \"The destination type. The value should always be `google_pubsub`.\",\n \"enum\": [\n \"google_pubsub\"\n ],\n \"example\": \"google_pubsub\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_PUBSUB\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\",\n \"project\",\n \"topic\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"processors\": {\n \"description\": \"A list of processors that transform or enrich log data.\",\n \"example\": [\n {\n \"id\": \"filter-processor\",\n \"include\": \"service:my-service\",\n \"inputs\": [\n \"datadog-agent-source\"\n ],\n \"type\": \"filter\"\n }\n ],\n \"items\": {\n \"description\": \"A processor for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `filter` processor allows conditional processing of logs based on a Datadog search query. Logs that match the `include` query are passed through; others are discarded.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"filter-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs should pass through the filter. Logs that match this query continue to downstream components; others are dropped.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"filter\",\n \"description\": \"The processor type. The value should always be `filter`.\",\n \"enum\": [\n \"filter\"\n ],\n \"example\": \"filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FILTER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `parse_json` processor extracts JSON from a specified field and flattens it into the event. This is useful when logs contain embedded JSON as a string.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The name of the log field that contains a JSON string.\",\n \"example\": \"message\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"parse-json-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"parse_json\",\n \"description\": \"The processor type. The value should always be `parse_json`.\",\n \"enum\": [\n \"parse_json\"\n ],\n \"example\": \"parse_json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARSE_JSON\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"field\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Quota Processor measures logging traffic for logs that match a specified filter. When the configured daily quota is met, the processor can drop or alert.\",\n \"properties\": {\n \"drop_events\": {\n \"description\": \"If set to `true`, logs that matched the quota filter and sent after the quota has been met are dropped; only logs that did not match the filter query continue through the pipeline.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"quota-processor\",\n \"type\": \"string\"\n },\n \"ignore_when_missing_partitions\": {\n \"description\": \"If `true`, the processor skips quota checks when partition fields are missing from the logs.\",\n \"type\": \"boolean\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"description\": \"The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events.\",\n \"properties\": {\n \"enforce\": {\n \"description\": \"Unit for quota enforcement in bytes for data size or events for count.\",\n \"enum\": [\n \"bytes\",\n \"events\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\",\n \"EVENTS\"\n ]\n },\n \"limit\": {\n \"description\": \"The limit for quota enforcement.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"enforce\",\n \"limit\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the quota.\",\n \"example\": \"MyQuota\",\n \"type\": \"string\"\n },\n \"overflow_action\": {\n \"description\": \"The action to take when the quota is exceeded. Options:\\n- `drop`: Drop the event.\\n- `no_action`: Let the event pass through.\\n- `overflow_routing`: Route to an overflow destination.\",\n \"enum\": [\n \"drop\",\n \"no_action\",\n \"overflow_routing\"\n ],\n \"example\": \"drop\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DROP\",\n \"NO_ACTION\",\n \"OVERFLOW_ROUTING\"\n ]\n },\n \"overrides\": {\n \"description\": \"A list of alternate quota rules that apply to specific sets of events, identified by matching field values. Each override can define a custom limit.\",\n \"items\": {\n \"description\": \"Defines a custom quota limit that applies to specific log events based on matching field values.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of field matchers used to apply a specific override. If an event matches all listed key-value pairs, the corresponding override limit is enforced.\",\n \"items\": {\n \"description\": \"Represents a static key-value pair used in various processors.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"field_name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The field value.\",\n \"example\": \"field_value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"description\": \"The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events.\",\n \"properties\": {\n \"enforce\": {\n \"description\": \"Unit for quota enforcement in bytes for data size or events for count.\",\n \"enum\": [\n \"bytes\",\n \"events\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\",\n \"EVENTS\"\n ]\n },\n \"limit\": {\n \"description\": \"The limit for quota enforcement.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"enforce\",\n \"limit\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"fields\",\n \"limit\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"partition_fields\": {\n \"description\": \"A list of fields used to segment log traffic for quota enforcement. Quotas are tracked independently by unique combinations of these field values.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"quota\",\n \"description\": \"The processor type. The value should always be `quota`.\",\n \"enum\": [\n \"quota\"\n ],\n \"example\": \"quota\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"QUOTA\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"name\",\n \"drop_events\",\n \"limit\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `add_fields` processor adds static key-value fields to logs.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of static fields (key-value pairs) that is added to each log event processed by this component.\",\n \"items\": {\n \"description\": \"Represents a static key-value pair used in various processors.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"field_name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The field value.\",\n \"example\": \"field_value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"add-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"add_fields\",\n \"description\": \"The processor type. The value should always be `add_fields`.\",\n \"enum\": [\n \"add_fields\"\n ],\n \"example\": \"add_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADD_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `remove_fields` processor deletes specified fields from logs.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of field names to be removed from each log event.\",\n \"example\": [\n \"field1\",\n \"field2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"remove-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"The `PipelineRemoveFieldsProcessor` `inputs`.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"remove_fields\",\n \"description\": \"The processor type. The value should always be `remove_fields`.\",\n \"enum\": [\n \"remove_fields\"\n ],\n \"example\": \"remove_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REMOVE_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rename_fields` processor changes field names.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of rename rules specifying which fields to rename in the event, what to rename them to, and whether to preserve the original fields.\",\n \"items\": {\n \"description\": \"Defines how to rename a field in log events.\",\n \"properties\": {\n \"destination\": {\n \"description\": \"The field name to assign the renamed value to.\",\n \"example\": \"destination_field\",\n \"type\": \"string\"\n },\n \"preserve_source\": {\n \"description\": \"Indicates whether the original field, that is received from the source, should be kept (`true`) or removed (`false`) after renaming.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"source\": {\n \"description\": \"The original field name in the log event that should be renamed.\",\n \"example\": \"source_field\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\",\n \"destination\",\n \"preserve_source\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"rename-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"rename_fields\",\n \"description\": \"The processor type. The value should always be `rename_fields`.\",\n \"enum\": [\n \"rename_fields\"\n ],\n \"example\": \"rename_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RENAME_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `generate_datadog_metrics` processor creates custom metrics from logs and sends them to Datadog.\\nMetrics can be counters, gauges, or distributions and optionally grouped by log fields.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline.\",\n \"example\": \"generate-metrics-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this processor.\",\n \"example\": [\n \"source-id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metrics\": {\n \"description\": \"Configuration for generating individual metrics.\",\n \"items\": {\n \"description\": \"Defines a log-based custom metric, including its name, type, filter, value computation strategy,\\nand optional grouping fields.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"Optional fields used to group the metric series.\",\n \"example\": [\n \"service\",\n \"env\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"include\": {\n \"description\": \"Datadog filter query to match logs for metric generation.\",\n \"example\": \"service:billing\",\n \"type\": \"string\"\n },\n \"metric_type\": {\n \"description\": \"Type of metric to create.\",\n \"enum\": [\n \"count\",\n \"gauge\",\n \"distribution\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"GAUGE\",\n \"DISTRIBUTION\"\n ]\n },\n \"name\": {\n \"description\": \"Name of the custom metric to be created.\",\n \"example\": \"logs.processed\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Specifies how the value of the generated metric is computed.\",\n \"oneOf\": [\n {\n \"description\": \"Strategy that increments a generated metric by one for each matching event.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Increments the metric by 1 for each matching event.\",\n \"enum\": [\n \"increment_by_one\"\n ],\n \"example\": \"increment_by_one\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCREMENT_BY_ONE\"\n ]\n }\n },\n \"required\": [\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Strategy that increments a generated metric based on the value of a log field.\",\n \"properties\": {\n \"field\": {\n \"description\": \"Name of the log field containing the numeric value to increment the metric by.\",\n \"example\": \"errors\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"Uses a numeric field in the log event as the metric increment.\",\n \"enum\": [\n \"increment_by_field\"\n ],\n \"example\": \"increment_by_field\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCREMENT_BY_FIELD\"\n ]\n }\n },\n \"required\": [\n \"strategy\",\n \"field\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"name\",\n \"include\",\n \"metric_type\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"generate_datadog_metrics\",\n \"description\": \"The processor type. Always `generate_datadog_metrics`.\",\n \"enum\": [\n \"generate_datadog_metrics\"\n ],\n \"example\": \"generate_datadog_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GENERATE_DATADOG_METRICS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"include\",\n \"metrics\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sample` processor allows probabilistic sampling of logs at a fixed rate.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"sample-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"percentage\": {\n \"description\": \"The percentage of logs to sample.\",\n \"example\": 10.0,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"rate\": {\n \"description\": \"Number of events to sample (1 in N).\",\n \"example\": 10,\n \"format\": \"int64\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"sample\",\n \"description\": \"The processor type. The value should always be `sample`.\",\n \"enum\": [\n \"sample\"\n ],\n \"example\": \"sample\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SAMPLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `parse_grok` processor extracts structured fields from unstructured log messages using Grok patterns.\",\n \"properties\": {\n \"disable_library_rules\": {\n \"default\": false,\n \"description\": \"If set to `true`, disables the default Grok rules provided by Datadog.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this processor.\",\n \"example\": \"parse-grok-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rules\": {\n \"description\": \"The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied.\",\n \"items\": {\n \"description\": \"A Grok parsing rule used in the `parse_grok` processor. Each rule defines how to extract structured fields\\nfrom a specific log field using Grok patterns.\",\n \"properties\": {\n \"match_rules\": {\n \"description\": \"A list of Grok parsing rules that define how to extract fields from the source field.\\nEach rule must contain a name and a valid Grok pattern.\",\n \"example\": [\n {\n \"name\": \"MyParsingRule\",\n \"rule\": \"%{word:user} connected on %{date(\\\"MM/dd/yyyy\\\"):date}\"\n }\n ],\n \"items\": {\n \"description\": \"Defines a Grok parsing rule, which extracts structured fields from log content using named Grok patterns.\\nEach rule must have a unique name and a valid Datadog Grok pattern that will be applied to the source field.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"MyParsingRule\",\n \"type\": \"string\"\n },\n \"rule\": {\n \"description\": \"The definition of the Grok rule.\",\n \"example\": \"%{word:user} connected on %{date(\\\"MM/dd/yyyy\\\"):date}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"source\": {\n \"description\": \"The name of the field in the log event to apply the Grok rules to.\",\n \"example\": \"message\",\n \"type\": \"string\"\n },\n \"support_rules\": {\n \"description\": \"A list of Grok helper rules that can be referenced by the parsing rules.\",\n \"example\": [\n {\n \"name\": \"user\",\n \"rule\": \"%{word:user.name}\"\n }\n ],\n \"items\": {\n \"description\": \"The Grok helper rule referenced in the parsing rules.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the Grok helper rule.\",\n \"example\": \"user\",\n \"type\": \"string\"\n },\n \"rule\": {\n \"description\": \"The definition of the Grok helper rule.\",\n \"example\": \" %{word:user.name}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"source\",\n \"match_rules\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"parse_grok\",\n \"description\": \"The processor type. The value should always be `parse_grok`.\",\n \"enum\": [\n \"parse_grok\"\n ],\n \"example\": \"parse_grok\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARSE_GROK\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sensitive_data_scanner` processor detects and optionally redacts sensitive data in log events.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"sensitive-scanner\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"source:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rules\": {\n \"description\": \"A list of rules for identifying and acting on sensitive data patterns.\",\n \"items\": {\n \"description\": \"Defines a rule for detecting sensitive data, including matching pattern, scope, and the action to take.\",\n \"properties\": {\n \"keyword_options\": {\n \"description\": \"Configuration for keywords used to reinforce sensitive data pattern detection.\",\n \"properties\": {\n \"keywords\": {\n \"description\": \"A list of keywords to match near the sensitive pattern.\",\n \"example\": [\n \"ssn\",\n \"card\",\n \"account\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"proximity\": {\n \"description\": \"Maximum number of tokens between a keyword and a sensitive value match.\",\n \"example\": 5,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"keywords\",\n \"proximity\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"A name identifying the rule.\",\n \"example\": \"Redact Credit Card Numbers\",\n \"type\": \"string\"\n },\n \"on_match\": {\n \"description\": \"Defines what action to take when sensitive data is matched.\",\n \"oneOf\": [\n {\n \"description\": \"Configuration for completely redacting matched sensitive data.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that completely replaces the matched sensitive data with a fixed replacement string to remove all visibility.\",\n \"enum\": [\n \"redact\"\n ],\n \"example\": \"redact\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDACT\"\n ]\n },\n \"options\": {\n \"description\": \"Configuration for fully redacting sensitive data.\",\n \"properties\": {\n \"replace\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionRedactOptions` `replace`.\",\n \"example\": \"***\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"replace\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Configuration for hashing matched sensitive values.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that replaces the matched sensitive data with a hashed representation, preserving structure while securing content.\",\n \"enum\": [\n \"hash\"\n ],\n \"example\": \"hash\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HASH\"\n ]\n },\n \"options\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionHash` `options`.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Configuration for partially redacting matched sensitive data.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that redacts part of the sensitive data while preserving a configurable number of characters, typically used for masking purposes (e.g., show last 4 digits of a credit card).\",\n \"enum\": [\n \"partial_redact\"\n ],\n \"example\": \"partial_redact\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARTIAL_REDACT\"\n ]\n },\n \"options\": {\n \"description\": \"Controls how partial redaction is applied, including character count and direction.\",\n \"properties\": {\n \"characters\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionPartialRedactOptions` `characters`.\",\n \"example\": 4,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"direction\": {\n \"description\": \"Indicates whether to redact characters from the first or last part of the matched value.\",\n \"enum\": [\n \"first\",\n \"last\"\n ],\n \"example\": \"last\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FIRST\",\n \"LAST\"\n ]\n }\n },\n \"required\": [\n \"characters\",\n \"direction\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\",\n \"options\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"pattern\": {\n \"description\": \"Pattern detection configuration for identifying sensitive data using either a custom regex or a library reference.\",\n \"oneOf\": [\n {\n \"description\": \"Defines a custom regex-based pattern for identifying sensitive data in logs.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Options for defining a custom regex pattern.\",\n \"properties\": {\n \"rule\": {\n \"description\": \"A regular expression used to detect sensitive values. Must be a valid regex.\",\n \"example\": \"\\\\b\\\\d{16}\\\\b\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Indicates a custom regular expression is used for matching.\",\n \"enum\": [\n \"custom\"\n ],\n \"example\": \"custom\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Specifies a pattern from Datadog\\u2019s sensitive data detection library to match known sensitive data types.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Options for selecting a predefined library pattern and enabling keyword support.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Identifier for a predefined pattern from the sensitive data scanner pattern library.\",\n \"example\": \"credit_card\",\n \"type\": \"string\"\n },\n \"use_recommended_keywords\": {\n \"description\": \"Whether to augment the pattern with recommended keywords (optional).\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Indicates that a predefined library pattern is used.\",\n \"enum\": [\n \"library\"\n ],\n \"example\": \"library\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LIBRARY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"options\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"scope\": {\n \"description\": \"Determines which parts of the log the pattern-matching rule should be applied to.\",\n \"oneOf\": [\n {\n \"description\": \"Includes only specific fields for sensitive data scanning.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Fields to which the scope rule applies.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` `fields`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\"\n ],\n \"type\": \"object\"\n },\n \"target\": {\n \"description\": \"Applies the rule only to included fields.\",\n \"enum\": [\n \"include\"\n ],\n \"example\": \"include\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCLUDE\"\n ]\n }\n },\n \"required\": [\n \"target\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Excludes specific fields from sensitive data scanning.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Fields to which the scope rule applies.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` `fields`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\"\n ],\n \"type\": \"object\"\n },\n \"target\": {\n \"description\": \"Excludes specific fields from processing.\",\n \"enum\": [\n \"exclude\"\n ],\n \"example\": \"exclude\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EXCLUDE\"\n ]\n }\n },\n \"required\": [\n \"target\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Applies scanning across all available fields.\",\n \"properties\": {\n \"target\": {\n \"description\": \"Applies the rule to all fields.\",\n \"enum\": [\n \"all\"\n ],\n \"example\": \"all\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALL\"\n ]\n }\n },\n \"required\": [\n \"target\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"tags\": {\n \"description\": \"Tags assigned to this rule for filtering and classification.\",\n \"example\": [\n \"pii\",\n \"ccn\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"tags\",\n \"pattern\",\n \"scope\",\n \"on_match\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner\",\n \"description\": \"The processor type. The value should always be `sensitive_data_scanner`.\",\n \"enum\": [\n \"sensitive_data_scanner\"\n ],\n \"example\": \"sensitive_data_scanner\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `ocsf_mapper` processor transforms logs into the OCSF schema using a predefined mapping configuration.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline.\",\n \"example\": \"ocsf-mapper-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this processor.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mappings\": {\n \"description\": \"A list of mapping rules to convert events to the OCSF format.\",\n \"items\": {\n \"description\": \"Defines how specific events are transformed to OCSF using a mapping configuration.\",\n \"properties\": {\n \"include\": {\n \"description\": \"A Datadog search query used to select the logs that this mapping should apply to.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"mapping\": {\n \"description\": \"Defines a single mapping rule for transforming logs into the OCSF schema.\",\n \"oneOf\": [\n {\n \"description\": \"Predefined library mappings for common log formats.\",\n \"enum\": [\n \"CloudTrail Account Change\",\n \"GCP Cloud Audit CreateBucket\",\n \"GCP Cloud Audit CreateSink\",\n \"GCP Cloud Audit SetIamPolicy\",\n \"GCP Cloud Audit UpdateSink\",\n \"Github Audit Log API Activity\",\n \"Google Workspace Admin Audit addPrivilege\",\n \"Microsoft 365 Defender Incident\",\n \"Microsoft 365 Defender UserLoggedIn\",\n \"Okta System Log Authentication\",\n \"Palo Alto Networks Firewall Traffic\"\n ],\n \"example\": \"CloudTrail Account Change\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDTRAIL_ACCOUNT_CHANGE\",\n \"GCP_CLOUD_AUDIT_CREATEBUCKET\",\n \"GCP_CLOUD_AUDIT_CREATESINK\",\n \"GCP_CLOUD_AUDIT_SETIAMPOLICY\",\n \"GCP_CLOUD_AUDIT_UPDATESINK\",\n \"GITHUB_AUDIT_LOG_API_ACTIVITY\",\n \"GOOGLE_WORKSPACE_ADMIN_AUDIT_ADDPRIVILEGE\",\n \"MICROSOFT_365_DEFENDER_INCIDENT\",\n \"MICROSOFT_365_DEFENDER_USERLOGGEDIN\",\n \"OKTA_SYSTEM_LOG_AUTHENTICATION\",\n \"PALO_ALTO_NETWORKS_FIREWALL_TRAFFIC\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"include\",\n \"mapping\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"ocsf_mapper\",\n \"description\": \"The processor type. The value should always be `ocsf_mapper`.\",\n \"enum\": [\n \"ocsf_mapper\"\n ],\n \"example\": \"ocsf_mapper\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OCSF_MAPPER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"mappings\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `add_env_vars` processor adds environment variable values to log events.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this processor in the pipeline.\",\n \"example\": \"add-env-vars-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"add_env_vars\",\n \"description\": \"The processor type. The value should always be `add_env_vars`.\",\n \"enum\": [\n \"add_env_vars\"\n ],\n \"example\": \"add_env_vars\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADD_ENV_VARS\"\n ]\n },\n \"variables\": {\n \"description\": \"A list of environment variable mappings to apply to log fields.\",\n \"items\": {\n \"description\": \"Defines a mapping between an environment variable and a log field.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The target field in the log event.\",\n \"example\": \"log.environment.region\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the environment variable to read.\",\n \"example\": \"AWS_REGION\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"field\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `dedupe` processor removes duplicate fields in log events.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of log field paths to check for duplicates.\",\n \"example\": [\n \"log.message\",\n \"log.error\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"dedupe-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"The deduplication mode to apply to the fields.\",\n \"enum\": [\n \"match\",\n \"ignore\"\n ],\n \"example\": \"match\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MATCH\",\n \"IGNORE\"\n ]\n },\n \"type\": {\n \"default\": \"dedupe\",\n \"description\": \"The processor type. The value should always be `dedupe`.\",\n \"enum\": [\n \"dedupe\"\n ],\n \"example\": \"dedupe\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DEDUPE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"fields\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `enrichment_table` processor enriches logs using a static CSV file or GeoIP database.\",\n \"properties\": {\n \"file\": {\n \"description\": \"Defines a static enrichment table loaded from a CSV file.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"File encoding format.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"The `encoding` `delimiter`.\",\n \"example\": \",\",\n \"type\": \"string\"\n },\n \"includes_headers\": {\n \"description\": \"The `encoding` `includes_headers`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"type\": {\n \"description\": \"Specifies the encoding format (e.g., CSV) used for enrichment tables.\",\n \"enum\": [\n \"csv\"\n ],\n \"example\": \"csv\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CSV\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"delimiter\",\n \"includes_headers\"\n ],\n \"type\": \"object\"\n },\n \"key\": {\n \"description\": \"Key fields used to look up enrichment values.\",\n \"items\": {\n \"description\": \"Defines how to map log fields to enrichment table columns during lookups.\",\n \"properties\": {\n \"column\": {\n \"description\": \"The `items` `column`.\",\n \"example\": \"user_id\",\n \"type\": \"string\"\n },\n \"comparison\": {\n \"description\": \"Defines how to compare key fields for enrichment table lookups.\",\n \"enum\": [\n \"equals\"\n ],\n \"example\": \"equals\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EQUALS\"\n ]\n },\n \"field\": {\n \"description\": \"The `items` `field`.\",\n \"example\": \"log.user.id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"column\",\n \"comparison\",\n \"field\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to the CSV file.\",\n \"example\": \"/etc/enrichment/lookup.csv\",\n \"type\": \"string\"\n },\n \"schema\": {\n \"description\": \"Schema defining column names and their types.\",\n \"items\": {\n \"description\": \"Describes a single column and its type in an enrichment table schema.\",\n \"properties\": {\n \"column\": {\n \"description\": \"The `items` `column`.\",\n \"example\": \"region\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Declares allowed data types for enrichment table columns.\",\n \"enum\": [\n \"string\",\n \"boolean\",\n \"integer\",\n \"float\",\n \"date\",\n \"timestamp\"\n ],\n \"example\": \"string\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"BOOLEAN\",\n \"INTEGER\",\n \"FLOAT\",\n \"DATE\",\n \"TIMESTAMP\"\n ]\n }\n },\n \"required\": [\n \"column\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"encoding\",\n \"key\",\n \"path\",\n \"schema\"\n ],\n \"type\": \"object\"\n },\n \"geoip\": {\n \"description\": \"Uses a GeoIP database to enrich logs based on an IP field.\",\n \"properties\": {\n \"key_field\": {\n \"description\": \"Path to the IP field in the log.\",\n \"example\": \"log.source.ip\",\n \"type\": \"string\"\n },\n \"locale\": {\n \"description\": \"Locale used to resolve geographical names.\",\n \"example\": \"en\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to the GeoIP database file.\",\n \"example\": \"/etc/geoip/GeoLite2-City.mmdb\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key_field\",\n \"locale\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"enrichment-table-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"source:my-source\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"add-fields-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"target\": {\n \"description\": \"Path where enrichment results should be stored in the log.\",\n \"example\": \"enriched.geoip\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"enrichment_table\",\n \"description\": \"The processor type. The value should always be `enrichment_table`.\",\n \"enum\": [\n \"enrichment_table\"\n ],\n \"example\": \"enrichment_table\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ENRICHMENT_TABLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"target\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `reduce` processor aggregates and merges logs based on matching keys and merge strategies.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"A list of fields used to group log events for merging.\",\n \"example\": [\n \"log.user.id\",\n \"log.device.id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"reduce-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"merge_strategies\": {\n \"description\": \"List of merge strategies defining how values from grouped events should be combined.\",\n \"items\": {\n \"description\": \"Defines how a specific field should be merged across grouped events.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The field path in the log event.\",\n \"example\": \"log.user.roles\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The merge strategy to apply.\",\n \"enum\": [\n \"discard\",\n \"retain\",\n \"sum\",\n \"max\",\n \"min\",\n \"array\",\n \"concat\",\n \"concat_newline\",\n \"concat_raw\",\n \"shortest_array\",\n \"longest_array\",\n \"flat_unique\"\n ],\n \"example\": \"flat_unique\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DISCARD\",\n \"RETAIN\",\n \"SUM\",\n \"MAX\",\n \"MIN\",\n \"ARRAY\",\n \"CONCAT\",\n \"CONCAT_NEWLINE\",\n \"CONCAT_RAW\",\n \"SHORTEST_ARRAY\",\n \"LONGEST_ARRAY\",\n \"FLAT_UNIQUE\"\n ]\n }\n },\n \"required\": [\n \"path\",\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"reduce\",\n \"description\": \"The processor type. The value should always be `reduce`.\",\n \"enum\": [\n \"reduce\"\n ],\n \"example\": \"reduce\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDUCE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"group_by\",\n \"merge_strategies\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `throttle` processor limits the number of events that pass through over a given time window.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"Optional list of fields used to group events before the threshold has been reached.\",\n \"example\": [\n \"log.user.id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"throttle-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"threshold\": {\n \"description\": \"the number of events allowed in a given time window. Events sent after the threshold has been reached, are dropped.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"throttle\",\n \"description\": \"The processor type. The value should always be `throttle`.\",\n \"enum\": [\n \"throttle\"\n ],\n \"example\": \"throttle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THROTTLE\"\n ]\n },\n \"window\": {\n \"description\": \"The time window in seconds over which the threshold applies.\",\n \"example\": 60.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"threshold\",\n \"window\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `custom_processor` processor transforms events using [Vector Remap Language (VRL)](https://vector.dev/docs/reference/vrl/) scripts with advanced filtering capabilities.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"remap-vrl-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"default\": \"*\",\n \"description\": \"A Datadog search query used to determine which logs this processor targets. This field should always be set to `*` for the custom_processor processor.\",\n \"example\": \"*\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"remaps\": {\n \"description\": \"Array of VRL remap rules.\",\n \"items\": {\n \"description\": \"Defines a single VRL remap rule with its own filtering and transformation logic.\",\n \"properties\": {\n \"drop_on_error\": {\n \"description\": \"Whether to drop events that caused errors during processing.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"description\": \"Whether this remap rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to filter events for this specific remap rule.\",\n \"example\": \"service:web\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A descriptive name for this remap rule.\",\n \"example\": \"Parse JSON from message field\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"The VRL script source code that defines the processing logic.\",\n \"example\": \". = parse_json!(.message)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"include\",\n \"name\",\n \"source\",\n \"enabled\",\n \"drop_on_error\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"custom_processor\",\n \"description\": \"The processor type. The value should always be `custom_processor`.\",\n \"enum\": [\n \"custom_processor\"\n ],\n \"example\": \"custom_processor\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_PROCESSOR\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"remaps\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `datadog_tags` processor includes or excludes specific Datadog tags in your logs.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The action to take on tags with matching keys.\",\n \"enum\": [\n \"include\",\n \"exclude\"\n ],\n \"example\": \"include\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCLUDE\",\n \"EXCLUDE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"datadog-tags-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keys\": {\n \"description\": \"A list of tag keys.\",\n \"example\": [\n \"env\",\n \"service\",\n \"version\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"The processing mode.\",\n \"enum\": [\n \"filter\"\n ],\n \"example\": \"filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FILTER\"\n ]\n },\n \"type\": {\n \"default\": \"datadog_tags\",\n \"description\": \"The processor type. The value should always be `datadog_tags`.\",\n \"enum\": [\n \"datadog_tags\"\n ],\n \"example\": \"datadog_tags\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_TAGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"mode\",\n \"action\",\n \"keys\",\n \"inputs\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"A list of configured data sources for the pipeline.\",\n \"example\": [\n {\n \"id\": \"datadog-agent-source\",\n \"type\": \"datadog_agent\"\n }\n ],\n \"items\": {\n \"description\": \"A data source for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `kafka` source ingests data from Apache Kafka topics.\",\n \"properties\": {\n \"group_id\": {\n \"description\": \"Consumer group ID used by the Kafka client.\",\n \"example\": \"consumer-group-0\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"kafka-source\",\n \"type\": \"string\"\n },\n \"librdkafka_options\": {\n \"description\": \"Optional list of advanced Kafka client configuration options, defined as key-value pairs.\",\n \"items\": {\n \"description\": \"Represents a key-value pair used to configure low-level `librdkafka` client options for Kafka sources, such as timeouts, buffer sizes, and security settings.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the `librdkafka` configuration option to set.\",\n \"example\": \"fetch.message.max.bytes\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The value assigned to the specified `librdkafka` configuration option.\",\n \"example\": \"1048576\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sasl\": {\n \"description\": \"Specifies the SASL mechanism for authenticating with a Kafka cluster.\",\n \"properties\": {\n \"mechanism\": {\n \"description\": \"SASL mechanism used for Kafka authentication.\",\n \"enum\": [\n \"PLAIN\",\n \"SCRAM-SHA-256\",\n \"SCRAM-SHA-512\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PLAIN\",\n \"SCRAMNOT_SHANOT_256\",\n \"SCRAMNOT_SHANOT_512\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"topics\": {\n \"description\": \"A list of Kafka topic names to subscribe to. The source ingests messages from each topic specified.\",\n \"example\": [\n \"topic1\",\n \"topic2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"kafka\",\n \"description\": \"The source type. The value should always be `kafka`.\",\n \"enum\": [\n \"kafka\"\n ],\n \"example\": \"kafka\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"KAFKA\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"group_id\",\n \"topics\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `datadog_agent` source collects logs from the Datadog Agent.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"datadog-agent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"datadog_agent\",\n \"description\": \"The source type. The value should always be `datadog_agent`.\",\n \"enum\": [\n \"datadog_agent\"\n ],\n \"example\": \"datadog_agent\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_AGENT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_tcp` source receives logs from a Splunk Universal Forwarder over TCP.\\nTLS is supported for secure transmission.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-tcp-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"splunk_tcp\",\n \"description\": \"The source type. Always `splunk_tcp`.\",\n \"enum\": [\n \"splunk_tcp\"\n ],\n \"example\": \"splunk_tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_TCP\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_hec` source implements the Splunk HTTP Event Collector (HEC) API.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-hec-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"The source type. Always `splunk_hec`.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_s3` source ingests logs from an Amazon S3 bucket.\\nIt supports AWS authentication and TLS encryption.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"aws-s3-source\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"AWS region where the S3 bucket resides.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_s3\",\n \"description\": \"The source type. Always `amazon_s3`.\",\n \"enum\": [\n \"amazon_s3\"\n ],\n \"example\": \"amazon_s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_S3\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `fluentd` source ingests logs from a Fluentd-compatible service.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"fluent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fluentd\",\n \"description\": \"The source type. The value should always be `fluentd.\",\n \"enum\": [\n \"fluentd\"\n ],\n \"example\": \"fluentd\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FLUENTD\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `fluent_bit` source ingests logs from Fluent Bit.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"fluent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fluent_bit\",\n \"description\": \"The source type. The value should always be `fluent_bit`.\",\n \"enum\": [\n \"fluent_bit\"\n ],\n \"example\": \"fluent_bit\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FLUENT_BIT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `http_server` source collects logs over HTTP POST from external services.\",\n \"properties\": {\n \"auth_strategy\": {\n \"description\": \"HTTP authentication method.\",\n \"enum\": [\n \"none\",\n \"plain\"\n ],\n \"example\": \"plain\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NONE\",\n \"PLAIN\"\n ]\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"Unique ID for the HTTP server source.\",\n \"example\": \"http-server-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"http_server\",\n \"description\": \"The source type. The value should always be `http_server`.\",\n \"enum\": [\n \"http_server\"\n ],\n \"example\": \"http_server\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP_SERVER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"auth_strategy\",\n \"decoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sumo_logic` source receives logs from Sumo Logic collectors.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"sumo-logic-source\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sumo_logic\",\n \"description\": \"The source type. The value should always be `sumo_logic`.\",\n \"enum\": [\n \"sumo_logic\"\n ],\n \"example\": \"sumo_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUMO_LOGIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rsyslog` source listens for logs over TCP or UDP from an `rsyslog` server using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"rsyslog-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used by the syslog source to receive messages.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rsyslog\",\n \"description\": \"The source type. The value should always be `rsyslog`.\",\n \"enum\": [\n \"rsyslog\"\n ],\n \"example\": \"rsyslog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RSYSLOG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `syslog_ng` source listens for logs over TCP or UDP from a `syslog-ng` server using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"syslog-ng-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used by the syslog source to receive messages.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"syslog_ng\",\n \"description\": \"The source type. The value should always be `syslog_ng`.\",\n \"enum\": [\n \"syslog_ng\"\n ],\n \"example\": \"syslog_ng\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SYSLOG_NG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_data_firehose` source ingests logs from AWS Data Firehose.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"amazon-firehose-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_data_firehose\",\n \"description\": \"The source type. The value should always be `amazon_data_firehose`.\",\n \"enum\": [\n \"amazon_data_firehose\"\n ],\n \"example\": \"amazon_data_firehose\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_DATA_FIREHOSE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_pubsub` source ingests logs from a Google Cloud Pub/Sub subscription.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"google-pubsub-source\",\n \"type\": \"string\"\n },\n \"project\": {\n \"description\": \"The GCP project ID that owns the Pub/Sub subscription.\",\n \"example\": \"my-gcp-project\",\n \"type\": \"string\"\n },\n \"subscription\": {\n \"description\": \"The Pub/Sub subscription name from which messages are consumed.\",\n \"example\": \"logs-subscription\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"google_pubsub\",\n \"description\": \"The source type. The value should always be `google_pubsub`.\",\n \"enum\": [\n \"google_pubsub\"\n ],\n \"example\": \"google_pubsub\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_PUBSUB\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"auth\",\n \"decoding\",\n \"project\",\n \"subscription\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `http_client` source scrapes logs from HTTP endpoints at regular intervals.\",\n \"properties\": {\n \"auth_strategy\": {\n \"description\": \"Optional authentication strategy for HTTP requests.\",\n \"enum\": [\n \"basic\",\n \"bearer\"\n ],\n \"example\": \"basic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\",\n \"BEARER\"\n ]\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"http-client-source\",\n \"type\": \"string\"\n },\n \"scrape_interval_secs\": {\n \"description\": \"The interval (in seconds) between HTTP scrape requests.\",\n \"example\": 60,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scrape_timeout_secs\": {\n \"description\": \"The timeout (in seconds) for each scrape request.\",\n \"example\": 10,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"http_client\",\n \"description\": \"The source type. The value should always be `http_client`.\",\n \"enum\": [\n \"http_client\"\n ],\n \"example\": \"http_client\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP_CLIENT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"decoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `logstash` source ingests logs from a Logstash forwarder.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"logstash-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"logstash\",\n \"description\": \"The source type. The value should always be `logstash`.\",\n \"enum\": [\n \"logstash\"\n ],\n \"example\": \"logstash\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGSTASH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `socket` source ingests logs over TCP or UDP.\",\n \"properties\": {\n \"framing\": {\n \"description\": \"Framing method configuration for the socket source.\",\n \"oneOf\": [\n {\n \"description\": \"Byte frames which are delimited by a newline character.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames which are delimited by a newline character.\",\n \"enum\": [\n \"newline_delimited\"\n ],\n \"example\": \"newline_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEWLINE_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).\",\n \"enum\": [\n \"bytes\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames which are delimited by a chosen character.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"A single ASCII character used to delimit events.\",\n \"example\": \"|\",\n \"maxLength\": 1,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"Byte frames which are delimited by a chosen character.\",\n \"enum\": [\n \"character_delimited\"\n ],\n \"example\": \"character_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHARACTER_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\",\n \"delimiter\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames according to the octet counting format as per RFC6587.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames according to the octet counting format as per RFC6587.\",\n \"enum\": [\n \"octet_counting\"\n ],\n \"example\": \"octet_counting\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OCTET_COUNTING\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames which are chunked GELF messages.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames which are chunked GELF messages.\",\n \"enum\": [\n \"chunked_gelf\"\n ],\n \"example\": \"chunked_gelf\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHUNKED_GELF\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"socket-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used to receive logs.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"socket\",\n \"description\": \"The source type. The value should always be `socket`.\",\n \"enum\": [\n \"socket\"\n ],\n \"example\": \"socket\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SOCKET\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\",\n \"framing\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"sources\",\n \"destinations\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the pipeline.\",\n \"example\": \"Main Observability Pipeline\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"config\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"pipelines\",\n \"description\": \"The resource type identifier. For pipeline resources, this should always be set to `pipelines`.\",\n \"example\": \"pipelines\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreatePowerpack.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreatePowerpack.json new file mode 100644 index 00000000..6f4b2c74 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreatePowerpack.json @@ -0,0 +1,762 @@ +{ + "name": "CreatePowerpack", + "fully_qualified_name": "DatadogApi.CreatePowerpack@0.1.0", + "description": "Creates a new powerpack in Datadog.\n\nUse this tool to initiate a powerpack creation in Datadog when managing monitoring configurations is required.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "powerpack_request_body", + "required": true, + "description": "JSON object containing powerpack details like attributes, name, tags, template variables, relationships, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 this powerpack." + }, + "group_widget": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layout_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Layout type of widgets." + }, + "show_title": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean indicating whether powerpack group title should be visible or not." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name for the group widget." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be group." + }, + "widgets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Information about widget." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack inner widget layout." + } + }, + "description": "Widgets inside the powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack group widget object." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack group widget layout." + }, + "live_span": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1m", + "5m", + "10m", + "15m", + "30m", + "1h", + "4h", + "1d", + "2d", + "1w", + "1mo", + "3mo", + "6mo", + "1y", + "alert" + ], + "properties": null, + "inner_properties": null, + "description": "The available timeframes depend on the widget you are using." + } + }, + "inner_properties": null, + "description": "Powerpack group widget definition object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the powerpack." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags to identify this powerpack." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of values that the template variable drop-down is limited to." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "One or many template variable default values within the saved view, which are unioned together using `OR` if more than one is specified." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the variable." + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down." + } + }, + "description": "List of template variables for this powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack attribute object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "author": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "Powerpack relationship object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack data object." + } + }, + "inner_properties": null, + "description": "Create a powerpack request body." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreatePowerpack'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/powerpacks", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "powerpack_request_body", + "description": "Create a powerpack request body.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 this powerpack." + }, + "group_widget": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layout_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Layout type of widgets." + }, + "show_title": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean indicating whether powerpack group title should be visible or not." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name for the group widget." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be group." + }, + "widgets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Information about widget." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack inner widget layout." + } + }, + "description": "Widgets inside the powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack group widget object." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack group widget layout." + }, + "live_span": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1m", + "5m", + "10m", + "15m", + "30m", + "1h", + "4h", + "1d", + "2d", + "1w", + "1mo", + "3mo", + "6mo", + "1y", + "alert" + ], + "properties": null, + "inner_properties": null, + "description": "The available timeframes depend on the widget you are using." + } + }, + "inner_properties": null, + "description": "Powerpack group widget definition object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the powerpack." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags to identify this powerpack." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of values that the template variable drop-down is limited to." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "One or many template variable default values within the saved view, which are unioned together using `OR` if more than one is specified." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the variable." + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down." + } + }, + "description": "List of template variables for this powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack attribute object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "author": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "Powerpack relationship object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack data object." + } + }, + "inner_properties": null, + "description": "Create a powerpack request body." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Powerpacks are templated groups of dashboard widgets you can save from an existing dashboard and turn into reusable packs in the widget tray.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Powerpack data object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Powerpack attribute object.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of this powerpack.\",\n \"example\": \"Powerpack for ABC\",\n \"type\": \"string\"\n },\n \"group_widget\": {\n \"description\": \"Powerpack group widget definition object.\",\n \"properties\": {\n \"definition\": {\n \"description\": \"Powerpack group widget object.\",\n \"properties\": {\n \"layout_type\": {\n \"description\": \"Layout type of widgets.\",\n \"example\": \"ordered\",\n \"type\": \"string\"\n },\n \"show_title\": {\n \"description\": \"Boolean indicating whether powerpack group title should be visible or not.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"Name for the group widget.\",\n \"example\": \"Sample Powerpack\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of widget, must be group.\",\n \"example\": \"group\",\n \"type\": \"string\"\n },\n \"widgets\": {\n \"description\": \"Widgets inside the powerpack.\",\n \"example\": [\n {\n \"definition\": {\n \"content\": \"example\",\n \"type\": \"note\"\n },\n \"layout\": {\n \"height\": 5,\n \"width\": 10,\n \"x\": 0,\n \"y\": 0\n }\n }\n ],\n \"items\": {\n \"description\": \"Powerpack group widget definition of individual widgets.\",\n \"properties\": {\n \"definition\": {\n \"additionalProperties\": {},\n \"description\": \"Information about widget.\",\n \"example\": {\n \"definition\": {\n \"content\": \"example\",\n \"type\": \"note\"\n }\n },\n \"type\": \"object\"\n },\n \"layout\": {\n \"description\": \"Powerpack inner widget layout.\",\n \"properties\": {\n \"height\": {\n \"description\": \"The height of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"width\": {\n \"description\": \"The width of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"x\": {\n \"description\": \"The position of the widget on the x (horizontal) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"y\": {\n \"description\": \"The position of the widget on the y (vertical) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"x\",\n \"y\",\n \"width\",\n \"height\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"definition\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"widgets\",\n \"layout_type\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"layout\": {\n \"description\": \"Powerpack group widget layout.\",\n \"properties\": {\n \"height\": {\n \"description\": \"The height of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"width\": {\n \"description\": \"The width of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"x\": {\n \"description\": \"The position of the widget on the x (horizontal) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"y\": {\n \"description\": \"The position of the widget on the y (vertical) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"x\",\n \"y\",\n \"width\",\n \"height\"\n ],\n \"type\": \"object\"\n },\n \"live_span\": {\n \"description\": \"The available timeframes depend on the widget you are using.\",\n \"enum\": [\n \"1m\",\n \"5m\",\n \"10m\",\n \"15m\",\n \"30m\",\n \"1h\",\n \"4h\",\n \"1d\",\n \"2d\",\n \"1w\",\n \"1mo\",\n \"3mo\",\n \"6mo\",\n \"1y\",\n \"alert\"\n ],\n \"example\": \"5m\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAST_ONE_MINUTE\",\n \"PAST_FIVE_MINUTES\",\n \"PAST_TEN_MINUTES\",\n \"PAST_FIFTEEN_MINUTES\",\n \"PAST_THIRTY_MINUTES\",\n \"PAST_ONE_HOUR\",\n \"PAST_FOUR_HOURS\",\n \"PAST_ONE_DAY\",\n \"PAST_TWO_DAYS\",\n \"PAST_ONE_WEEK\",\n \"PAST_ONE_MONTH\",\n \"PAST_THREE_MONTHS\",\n \"PAST_SIX_MONTHS\",\n \"PAST_ONE_YEAR\",\n \"ALERT\"\n ]\n }\n },\n \"required\": [\n \"definition\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the powerpack.\",\n \"example\": \"Sample Powerpack\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"List of tags to identify this powerpack.\",\n \"example\": [\n \"tag:foo1\"\n ],\n \"items\": {\n \"maxLength\": 80,\n \"type\": \"string\"\n },\n \"maxItems\": 8,\n \"type\": \"array\"\n },\n \"template_variables\": {\n \"description\": \"List of template variables for this powerpack.\",\n \"example\": [\n {\n \"defaults\": [\n \"*\"\n ],\n \"name\": \"test\"\n }\n ],\n \"items\": {\n \"description\": \"Powerpack template variables.\",\n \"properties\": {\n \"available_values\": {\n \"description\": \"The list of values that the template variable drop-down is limited to.\",\n \"example\": [\n \"my-host\",\n \"host1\",\n \"host2\"\n ],\n \"items\": {\n \"description\": \"Template variable value.\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"defaults\": {\n \"description\": \"One or many template variable default values within the saved view, which are unioned together using `OR` if more than one is specified.\",\n \"items\": {\n \"description\": \"One or many default values of the template variable.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the variable.\",\n \"example\": \"datacenter\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"description\": \"The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down.\",\n \"example\": \"host\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"group_widget\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the powerpack.\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Powerpack relationship object.\",\n \"properties\": {\n \"author\": {\n \"description\": \"Relationship to user.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-2345-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of widget, must be powerpack.\",\n \"example\": \"powerpack\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Create a powerpack request body.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateProject.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateProject.json new file mode 100644 index 00000000..7bcfbf85 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateProject.json @@ -0,0 +1,196 @@ +{ + "name": "CreateProject", + "fully_qualified_name": "DatadogApi.CreateProject@0.1.0", + "description": "Create a new project in the system.\n\nUse this tool to initiate and create a new project effectively. It communicates with the Datadog service to set up the project environment.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_key", + "required": true, + "description": "The unique key for the project. Cannot use the value 'CASE'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project's key. Cannot be \"CASE\"" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.key" + }, + { + "name": "project_name", + "required": true, + "description": "Specify the name of the project to be created. It should be a descriptive string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "project_resource_type", + "required": true, + "description": "Specifies the project resource type, which must be 'project'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "project" + ], + "properties": null, + "inner_properties": null, + "description": "Project resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/projects", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.key", + "tool_parameter_name": "project_key", + "description": "Project's key. Cannot be \"CASE\"", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project's key. Cannot be \"CASE\"" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "project_name", + "description": "name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "name" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "project_resource_type", + "description": "Project resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "project" + ], + "properties": null, + "inner_properties": null, + "description": "Project resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "project", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Project create request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Project create\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Project creation attributes\",\n \"properties\": {\n \"key\": {\n \"description\": \"Project's key. Cannot be \\\"CASE\\\"\",\n \"example\": \"SEC\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"name\",\n \"example\": \"Security Investigation\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"key\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"project\",\n \"description\": \"Project resource type\",\n \"enum\": [\n \"project\"\n ],\n \"example\": \"project\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PROJECT\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Project payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateReferenceTable.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateReferenceTable.json new file mode 100644 index 00000000..c0cba8dc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateReferenceTable.json @@ -0,0 +1,380 @@ +{ + "name": "CreateReferenceTable", + "fully_qualified_name": "DatadogApi.CreateReferenceTable@0.1.0", + "description": "Create a new reference table in Datadog.\n\nThis tool creates a new reference table in Datadog. It can be called by either uploading CSV data to get an upload ID or by providing cloud storage access details. Use this when you need to set up a reference table with data from CSV files.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "reference_table_details", + "required": true, + "description": "JSON object specifying the reference table settings, including attributes like description, file metadata, schema, source, table name, and tags.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 reference table." + }, + "file_metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `CreateTableRequestDataAttributesFileMetadata` object." + }, + "schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field name." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "INT32" + ], + "properties": null, + "inner_properties": null, + "description": "The field type for reference table schema fields." + } + }, + "description": "The `schema` `fields`." + }, + "primary_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of field names that serve as primary keys for the table. Only one primary key is supported, and it is used as an ID to retrieve rows." + } + }, + "inner_properties": null, + "description": "The definition of `CreateTableRequestDataAttributesSchema` object." + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "LOCAL_FILE", + "S3", + "GCS", + "AZURE" + ], + "properties": null, + "inner_properties": null, + "description": "The source type for creating reference table data. Only these source types can be created through this API." + }, + "table_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tags of the reference table." + } + }, + "inner_properties": null, + "description": "The definition of `CreateTableRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "reference_table" + ], + "properties": null, + "inner_properties": null, + "description": "Reference table resource type." + } + }, + "inner_properties": null, + "description": "The definition of `CreateTableRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateReferenceTable'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/reference-tables/tables", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "reference_table_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 reference table." + }, + "file_metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `CreateTableRequestDataAttributesFileMetadata` object." + }, + "schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field name." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "INT32" + ], + "properties": null, + "inner_properties": null, + "description": "The field type for reference table schema fields." + } + }, + "description": "The `schema` `fields`." + }, + "primary_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of field names that serve as primary keys for the table. Only one primary key is supported, and it is used as an ID to retrieve rows." + } + }, + "inner_properties": null, + "description": "The definition of `CreateTableRequestDataAttributesSchema` object." + }, + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "LOCAL_FILE", + "S3", + "GCS", + "AZURE" + ], + "properties": null, + "inner_properties": null, + "description": "The source type for creating reference table data. Only these source types can be created through this API." + }, + "table_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tags of the reference table." + } + }, + "inner_properties": null, + "description": "The definition of `CreateTableRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "reference_table" + ], + "properties": null, + "inner_properties": null, + "description": "Reference table resource type." + } + }, + "inner_properties": null, + "description": "The definition of `CreateTableRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `CreateTableRequest` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"description\": \"this is a cloud table generated via a cloud bucket sync\",\n \"file_metadata\": {\n \"access_details\": {\n \"aws_detail\": {\n \"aws_account_id\": \"test-account-id\",\n \"aws_bucket_name\": \"test-bucket\",\n \"file_path\": \"test_rt.csv\"\n }\n },\n \"sync_enabled\": true\n },\n \"schema\": {\n \"fields\": [\n {\n \"name\": \"name\",\n \"type\": \"STRING\"\n },\n {\n \"name\": \"account_id\",\n \"type\": \"STRING\"\n }\n ],\n \"primary_keys\": [\n \"account_id\"\n ]\n },\n \"source\": \"S3\",\n \"table_name\": \"test_reference_table\",\n \"tags\": [\n \"test_tag\"\n ]\n },\n \"type\": \"reference_table\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `CreateTableRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributes` object.\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the reference table.\",\n \"type\": \"string\"\n },\n \"file_metadata\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributesFileMetadata` object.\",\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"Cloud storage file metadata for create requests. Both access_details and sync_enabled are required.\",\n \"properties\": {\n \"access_details\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributesFileMetadataOneOfAccessDetails` object.\",\n \"properties\": {\n \"aws_detail\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsAwsDetail` object.\",\n \"properties\": {\n \"aws_account_id\": {\n \"description\": \"The ID of the AWS account.\",\n \"example\": \"123456789000\",\n \"type\": \"string\"\n },\n \"aws_bucket_name\": {\n \"description\": \"The name of the Amazon S3 bucket.\",\n \"example\": \"example-data-bucket\",\n \"type\": \"string\"\n },\n \"file_path\": {\n \"description\": \"The relative file path from the S3 bucket root to the CSV file.\",\n \"example\": \"reference-tables/users.csv\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"aws_account_id\",\n \"aws_bucket_name\",\n \"file_path\"\n ],\n \"type\": \"object\",\n \"x-oneOf-parent\": [\n \"AwsDetail\"\n ]\n },\n \"azure_detail\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsAzureDetail` object.\",\n \"properties\": {\n \"azure_client_id\": {\n \"description\": \"The Azure client ID.\",\n \"example\": \"aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb\",\n \"type\": \"string\"\n },\n \"azure_container_name\": {\n \"description\": \"The name of the Azure container.\",\n \"example\": \"reference-data\",\n \"type\": \"string\"\n },\n \"azure_storage_account_name\": {\n \"description\": \"The name of the Azure storage account.\",\n \"example\": \"examplestorageaccount\",\n \"type\": \"string\"\n },\n \"azure_tenant_id\": {\n \"description\": \"The ID of the Azure tenant.\",\n \"example\": \"cccccccc-4444-5555-6666-dddddddddddd\",\n \"type\": \"string\"\n },\n \"file_path\": {\n \"description\": \"The relative file path from the Azure container root to the CSV file.\",\n \"example\": \"tables/users.csv\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"azure_client_id\",\n \"azure_container_name\",\n \"azure_storage_account_name\",\n \"azure_tenant_id\",\n \"file_path\"\n ],\n \"type\": \"object\",\n \"x-oneOf-parent\": [\n \"AzureDetail\"\n ]\n },\n \"gcp_detail\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsGcpDetail` object.\",\n \"properties\": {\n \"file_path\": {\n \"description\": \"The relative file path from the GCS bucket root to the CSV file.\",\n \"example\": \"data/reference_tables/users.csv\",\n \"type\": \"string\"\n },\n \"gcp_bucket_name\": {\n \"description\": \"The name of the GCP bucket.\",\n \"example\": \"example-data-bucket\",\n \"type\": \"string\"\n },\n \"gcp_project_id\": {\n \"description\": \"The ID of the GCP project.\",\n \"example\": \"example-gcp-project-12345\",\n \"type\": \"string\"\n },\n \"gcp_service_account_email\": {\n \"description\": \"The email of the GCP service account.\",\n \"example\": \"example-service@example-gcp-project-12345.iam.gserviceaccount.com\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"file_path\",\n \"gcp_bucket_name\",\n \"gcp_project_id\",\n \"gcp_service_account_email\"\n ],\n \"type\": \"object\",\n \"x-oneOf-parent\": [\n \"GcpDetail\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sync_enabled\": {\n \"description\": \"Whether this table is synced automatically.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"access_details\",\n \"sync_enabled\"\n ],\n \"title\": \"CloudFileMetadataV2\",\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"Local file metadata for create requests using the upload ID.\",\n \"properties\": {\n \"upload_id\": {\n \"description\": \"The upload ID.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"upload_id\"\n ],\n \"title\": \"LocalFileMetadataV2\",\n \"type\": \"object\"\n }\n ]\n },\n \"schema\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributesSchema` object.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `schema` `fields`.\",\n \"items\": {\n \"description\": \"The definition of `CreateTableRequestDataAttributesSchemaFieldsItems` object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The field type for reference table schema fields.\",\n \"enum\": [\n \"STRING\",\n \"INT32\"\n ],\n \"example\": \"STRING\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"INT32\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"primary_keys\": {\n \"description\": \"List of field names that serve as primary keys for the table. Only one primary key is supported, and it is used as an ID to retrieve rows.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\",\n \"primary_keys\"\n ],\n \"type\": \"object\"\n },\n \"source\": {\n \"description\": \"The source type for creating reference table data. Only these source types can be created through this API.\",\n \"enum\": [\n \"LOCAL_FILE\",\n \"S3\",\n \"GCS\",\n \"AZURE\"\n ],\n \"example\": \"LOCAL_FILE\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOCAL_FILE\",\n \"S3\",\n \"GCS\",\n \"AZURE\"\n ]\n },\n \"table_name\": {\n \"description\": \"The name of the reference table.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The tags of the reference table.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"table_name\",\n \"schema\",\n \"source\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the reference table.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"reference_table\",\n \"description\": \"Reference table resource type.\",\n \"enum\": [\n \"reference_table\"\n ],\n \"example\": \"reference_table\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REFERENCE_TABLE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateReferenceTableUpload.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateReferenceTableUpload.json new file mode 100644 index 00000000..8157d8bb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateReferenceTableUpload.json @@ -0,0 +1,295 @@ +{ + "name": "CreateReferenceTableUpload", + "fully_qualified_name": "DatadogApi.CreateReferenceTableUpload@0.1.0", + "description": "Create a reference table upload for bulk data ingestion.\n\nUse this tool to initiate the creation of a reference table upload in Datadog, facilitating bulk data ingestion for analytics or monitoring purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "file_upload_headers", + "required": false, + "description": "An array of strings representing the headers of the file to upload for the reference table.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The headers of the file to upload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.headers" + }, + { + "name": "upload_part_count", + "required": false, + "description": "Specify the number of parts in the upload. Used for multipart uploads.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of parts in the upload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.part_count" + }, + { + "name": "part_size_bytes", + "required": false, + "description": "The size of each part in the upload in bytes. For multipart uploads (part_count > 1), all parts except the last one must be at least 5,000,000 bytes. For single-part uploads, any size is allowed.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of each part in the upload in bytes. For multipart uploads (part_count > 1), all parts except the last one must be at least 5,000,000 bytes. For single-part uploads (part_count = 1), any size is allowed." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.part_size" + }, + { + "name": "reference_table_name", + "required": false, + "description": "The name of the reference table for the upload.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.table_name" + }, + { + "name": "upload_id", + "required": false, + "description": "The unique ID for the upload process in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the upload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "upload_resource_type", + "required": false, + "description": "Specifies the resource type for the upload. Must be set to 'upload'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "upload" + ], + "properties": null, + "inner_properties": null, + "description": "Upload resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateReferenceTableUpload'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/reference-tables/uploads", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.headers", + "tool_parameter_name": "file_upload_headers", + "description": "The headers of the file to upload.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The headers of the file to upload." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.part_count", + "tool_parameter_name": "upload_part_count", + "description": "The number of parts in the upload.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of parts in the upload." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.part_size", + "tool_parameter_name": "part_size_bytes", + "description": "The size of each part in the upload in bytes. For multipart uploads (part_count > 1), all parts except the last one must be at least 5,000,000 bytes. For single-part uploads (part_count = 1), any size is allowed.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of each part in the upload in bytes. For multipart uploads (part_count > 1), all parts except the last one must be at least 5,000,000 bytes. For single-part uploads (part_count = 1), any size is allowed." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.table_name", + "tool_parameter_name": "reference_table_name", + "description": "The name of the reference table.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "upload_id", + "description": "The ID of the upload.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the upload." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "upload_resource_type", + "description": "Upload resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "upload" + ], + "properties": null, + "inner_properties": null, + "description": "Upload resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "upload", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `CreateUploadRequest` object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `CreateUploadRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `CreateUploadRequestDataAttributes` object.\",\n \"properties\": {\n \"headers\": {\n \"description\": \"The headers of the file to upload.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"part_count\": {\n \"description\": \"The number of parts in the upload.\",\n \"example\": 3,\n \"format\": \"int32\",\n \"maximum\": 20,\n \"type\": \"integer\"\n },\n \"part_size\": {\n \"description\": \"The size of each part in the upload in bytes. For multipart uploads (part_count > 1), all parts except the last one must be at least 5,000,000 bytes. For single-part uploads (part_count = 1), any size is allowed.\",\n \"example\": 10000000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"table_name\": {\n \"description\": \"The name of the reference table.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"headers\",\n \"table_name\",\n \"part_count\",\n \"part_size\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the upload.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"upload\",\n \"description\": \"Upload resource type.\",\n \"enum\": [\n \"upload\"\n ],\n \"example\": \"upload\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"UPLOAD\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRole.json new file mode 100644 index 00000000..cd56e78b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRole.json @@ -0,0 +1,322 @@ +{ + "name": "CreateRole", + "fully_qualified_name": "DatadogApi.CreateRole@0.1.0", + "description": "Create a new role for your organization in Datadog.\n\nThis tool should be called when you need to create a new organizational role within the Datadog system. It returns details about the newly created role, helping to manage access and permissions for users.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_creation_data", + "required": true, + "description": "JSON data required for creating a role, including attributes such as name, created_at, modified_at, and relationships to permissions.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the role." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of last role modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the role." + } + }, + "inner_properties": null, + "description": "Attributes of the created role." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "permissions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + } + }, + "description": "Relationships to permission objects." + } + }, + "inner_properties": null, + "description": "Relationship to multiple permissions objects." + } + }, + "inner_properties": null, + "description": "Relationships of the role object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "inner_properties": null, + "description": "Data related to the creation of a role." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "role_creation_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the role." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of last role modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the role." + } + }, + "inner_properties": null, + "description": "Attributes of the created role." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "permissions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + } + }, + "description": "Relationships to permission objects." + } + }, + "inner_properties": null, + "description": "Relationship to multiple permissions objects." + } + }, + "inner_properties": null, + "description": "Relationships of the role object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "inner_properties": null, + "description": "Data related to the creation of a role." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create a role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the creation of a role.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the created role.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Creation time of the role.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"modified_at\": {\n \"description\": \"Time of last role modification.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the role.\",\n \"example\": \"developers\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships of the role object.\",\n \"properties\": {\n \"permissions\": {\n \"description\": \"Relationship to multiple permissions objects.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationships to permission objects.\",\n \"items\": {\n \"description\": \"Relationship to permission object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the permission.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"permissions\",\n \"description\": \"Permissions resource type.\",\n \"enum\": [\n \"permissions\"\n ],\n \"example\": \"permissions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PERMISSIONS\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"required\": [\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumApplication.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumApplication.json new file mode 100644 index 00000000..4eacea22 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumApplication.json @@ -0,0 +1,276 @@ +{ + "name": "CreateRumApplication", + "fully_qualified_name": "DatadogApi.CreateRumApplication@0.1.0", + "description": "Create a new RUM application within your organization.\n\nThis tool is used to create a new RUM (Real User Monitoring) application in your organization using Datadog's API.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_name", + "required": true, + "description": "The name of the RUM application to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the RUM application." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "rum_application_creation_type", + "required": true, + "description": "Specifies the type for creating a RUM application. Use `rum_application_create`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_application_create" + ], + "properties": null, + "inner_properties": null, + "description": "RUM application creation type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "product_analytics_retention_state", + "required": false, + "description": "Set the retention policy for Product Analytics data from RUM events. Options are 'MAX' or 'NONE'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "MAX", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Controls the retention policy for Product Analytics data derived from RUM events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.product_analytics_retention_state" + }, + { + "name": "rum_event_processing_state", + "required": false, + "description": "Configures which RUM events are processed and stored for the application. Accepted values are 'ALL', 'ERROR_FOCUSED_MODE', or 'NONE'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALL", + "ERROR_FOCUSED_MODE", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Configures which RUM events are processed and stored for the application." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.rum_event_processing_state" + }, + { + "name": "rum_application_type", + "required": false, + "description": "Specifies the type of the RUM application. Expected values: `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateRUMApplication'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.name", + "tool_parameter_name": "rum_application_name", + "description": "Name of the RUM application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the RUM application." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.product_analytics_retention_state", + "tool_parameter_name": "product_analytics_retention_state", + "description": "Controls the retention policy for Product Analytics data derived from RUM events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "MAX", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Controls the retention policy for Product Analytics data derived from RUM events." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.rum_event_processing_state", + "tool_parameter_name": "rum_event_processing_state", + "description": "Configures which RUM events are processed and stored for the application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALL", + "ERROR_FOCUSED_MODE", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Configures which RUM events are processed and stored for the application." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.type", + "tool_parameter_name": "rum_application_type", + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "rum_application_creation_type", + "description": "RUM application creation type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_application_create" + ], + "properties": null, + "inner_properties": null, + "description": "RUM application creation type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "rum_application_create", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"RUM application creation request attributes.\",\n \"properties\": {\n \"data\": {\n \"description\": \"RUM application creation.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"RUM application creation attributes.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the RUM application.\",\n \"example\": \"my_new_rum_application\",\n \"type\": \"string\"\n },\n \"product_analytics_retention_state\": {\n \"description\": \"Controls the retention policy for Product Analytics data derived from RUM events.\",\n \"enum\": [\n \"MAX\",\n \"NONE\"\n ],\n \"example\": \"MAX\",\n \"type\": \"string\",\n \"x-enum-descriptions\": [\n \"Store Product Analytics data for the maximum available retention period\",\n \"Do not store Product Analytics data\"\n ],\n \"x-enum-varnames\": [\n \"MAX\",\n \"NONE\"\n ]\n },\n \"rum_event_processing_state\": {\n \"description\": \"Configures which RUM events are processed and stored for the application.\",\n \"enum\": [\n \"ALL\",\n \"ERROR_FOCUSED_MODE\",\n \"NONE\"\n ],\n \"example\": \"ALL\",\n \"type\": \"string\",\n \"x-enum-descriptions\": [\n \"Process and store all RUM events (sessions, views, actions, resources, errors)\",\n \"Process and store only error events and related critical events\",\n \"Disable RUM event processing\\u2014no events are stored\"\n ],\n \"x-enum-varnames\": [\n \"ALL\",\n \"ERROR_FOCUSED_MODE\",\n \"NONE\"\n ]\n },\n \"type\": {\n \"description\": \"Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.\",\n \"example\": \"browser\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rum_application_create\",\n \"description\": \"RUM application creation type.\",\n \"enum\": [\n \"rum_application_create\"\n ],\n \"example\": \"rum_application_create\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RUM_APPLICATION_CREATE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumMetric.json new file mode 100644 index 00000000..5ea276eb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumMetric.json @@ -0,0 +1,428 @@ +{ + "name": "CreateRumMetric", + "fully_qualified_name": "DatadogApi.CreateRumMetric@0.1.0", + "description": "Create a metric based on RUM data.\n\nUse this tool to create a metric using your organization's RUM data via Datadog. It returns the metric object if successful.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_metric_definition", + "required": true, + "description": "JSON object defining the new RUM-based metric, including attributes like compute rules, event type, and filters.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The type of aggregation to use." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`." + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the rum-based metric." + }, + "event_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "properties": null, + "inner_properties": null, + "description": "The type of RUM events to filter on." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the RUM search syntax." + } + }, + "inner_properties": null, + "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the rum-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name." + } + }, + "description": "The rules for the group by." + }, + "uniqueness": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "when": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "match", + "end" + ], + "properties": null, + "inner_properties": null, + "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete." + } + }, + "inner_properties": null, + "description": "The rule to count updatable events. Is only set if `event_type` is `sessions` or `views`." + } + }, + "inner_properties": null, + "description": "The object describing the Datadog rum-based metric to create." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be rum_metrics." + } + }, + "inner_properties": null, + "description": "The new rum-based metric properties." + } + }, + "inner_properties": null, + "description": "The definition of the new rum-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateRumMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/config/metrics", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "rum_metric_definition", + "description": "The definition of the new rum-based metric.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The type of aggregation to use." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`." + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the rum-based metric will aggregate on.\nOnly present when `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the rum-based metric." + }, + "event_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "properties": null, + "inner_properties": null, + "description": "The type of RUM events to filter on." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the RUM search syntax." + } + }, + "inner_properties": null, + "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the rum-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name." + } + }, + "description": "The rules for the group by." + }, + "uniqueness": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "when": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "match", + "end" + ], + "properties": null, + "inner_properties": null, + "description": "When to count updatable events. `match` when the event is first seen, or `end` when the event is complete." + } + }, + "inner_properties": null, + "description": "The rule to count updatable events. Is only set if `event_type` is `sessions` or `views`." + } + }, + "inner_properties": null, + "description": "The object describing the Datadog rum-based metric to create." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be rum_metrics." + } + }, + "inner_properties": null, + "description": "The new rum-based metric properties." + } + }, + "inner_properties": null, + "description": "The definition of the new rum-based metric." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The new rum-based metric body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new rum-based metric properties.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing the Datadog rum-based metric to create.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The compute rule to compute the rum-based metric.\",\n \"properties\": {\n \"aggregation_type\": {\n \"description\": \"The type of aggregation to use.\",\n \"enum\": [\n \"count\",\n \"distribution\"\n ],\n \"example\": \"distribution\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"DISTRIBUTION\"\n ]\n },\n \"include_percentiles\": {\n \"description\": \"Toggle to include or exclude percentile aggregations for distribution metrics.\\nOnly present when `aggregation_type` is `distribution`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"The path to the value the rum-based metric will aggregate on.\\nOnly present when `aggregation_type` is `distribution`.\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"aggregation_type\"\n ],\n \"type\": \"object\"\n },\n \"event_type\": {\n \"description\": \"The type of RUM events to filter on.\",\n \"enum\": [\n \"session\",\n \"view\",\n \"action\",\n \"error\",\n \"resource\",\n \"long_task\",\n \"vital\"\n ],\n \"example\": \"session\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SESSION\",\n \"VIEW\",\n \"ACTION\",\n \"ERROR\",\n \"RESOURCE\",\n \"LONG_TASK\",\n \"VITAL\"\n ]\n },\n \"filter\": {\n \"description\": \"The rum-based metric filter. Events matching this filter will be aggregated in this metric.\",\n \"properties\": {\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the RUM search syntax.\",\n \"example\": \"@service:web-ui: \",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group by rule.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The path to the value the rum-based metric will be aggregated over.\",\n \"example\": \"@browser.name\",\n \"type\": \"string\"\n },\n \"tag_name\": {\n \"description\": \"Eventual name of the tag that gets created. By default, `path` is used as the tag name.\",\n \"example\": \"browser_name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"uniqueness\": {\n \"description\": \"The rule to count updatable events. Is only set if `event_type` is `sessions` or `views`.\",\n \"properties\": {\n \"when\": {\n \"description\": \"When to count updatable events. `match` when the event is first seen, or `end` when the event is complete.\",\n \"enum\": [\n \"match\",\n \"end\"\n ],\n \"example\": \"match\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"WHEN_MATCH\",\n \"WHEN_END\"\n ]\n }\n },\n \"required\": [\n \"when\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"event_type\",\n \"compute\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The name of the rum-based metric.\",\n \"example\": \"rum.sessions.webui.count\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"rum_metrics\",\n \"description\": \"The type of the resource. The value should always be rum_metrics.\",\n \"enum\": [\n \"rum_metrics\"\n ],\n \"example\": \"rum_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RUM_METRICS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new rum-based metric.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumRetentionFilter.json new file mode 100644 index 00000000..d50be08e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateRumRetentionFilter.json @@ -0,0 +1,344 @@ +{ + "name": "CreateRumRetentionFilter", + "fully_qualified_name": "DatadogApi.CreateRumRetentionFilter@0.1.0", + "description": "Create a RUM retention filter for a RUM application.\n\nUse this tool to create a data retention filter for an RUM application, which controls the retention rules of your application's RUM data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "RUM application ID for which the retention filter is to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + }, + { + "name": "rum_event_type_filter", + "required": true, + "description": "Specify the type of RUM events to filter. Options include: session, view, action, error, resource, long_task, vital.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "properties": null, + "inner_properties": null, + "description": "The type of RUM events to filter on." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.event_type" + }, + { + "name": "rum_retention_filter_name", + "required": true, + "description": "The name assigned to the RUM retention filter, used for identification.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a RUM retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "rum_retention_filter_sample_rate", + "required": true, + "description": "The sample rate for a RUM retention filter, an integer between 0 and 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sample rate for a RUM retention filter, between 0 and 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.sample_rate" + }, + { + "name": "resource_type_for_retention", + "required": true, + "description": "Specifies the resource type as 'retention_filters'. This value should always be 'retention_filters'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "retention_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be retention_filters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "rum_retention_filter_query", + "required": false, + "description": "The query string that defines the filtering criteria for the RUM retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query string for a RUM retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.query" + }, + { + "name": "enable_retention_filter", + "required": false, + "description": "Set true to enable the retention filter, false to disable it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the retention filter is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "enable_retention_filter", + "description": "Whether the retention filter is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the retention filter is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.event_type", + "tool_parameter_name": "rum_event_type_filter", + "description": "The type of RUM events to filter on.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "properties": null, + "inner_properties": null, + "description": "The type of RUM events to filter on." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "rum_retention_filter_name", + "description": "The name of a RUM retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a RUM retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.query", + "tool_parameter_name": "rum_retention_filter_query", + "description": "The query string for a RUM retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query string for a RUM retention filter." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.sample_rate", + "tool_parameter_name": "rum_retention_filter_sample_rate", + "description": "The sample rate for a RUM retention filter, between 0 and 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sample rate for a RUM retention filter, between 0 and 100." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type_for_retention", + "description": "The type of the resource. The value should always be retention_filters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "retention_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be retention_filters." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "retention_filters", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The RUM retention filter body to create.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new RUM retention filter properties to create.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing attributes of a RUM retention filter to create.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether the retention filter is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"event_type\": {\n \"description\": \"The type of RUM events to filter on.\",\n \"enum\": [\n \"session\",\n \"view\",\n \"action\",\n \"error\",\n \"resource\",\n \"long_task\",\n \"vital\"\n ],\n \"example\": \"session\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SESSION\",\n \"VIEW\",\n \"ACTION\",\n \"ERROR\",\n \"RESOURCE\",\n \"LONG_TASK\",\n \"VITAL\"\n ]\n },\n \"name\": {\n \"description\": \"The name of a RUM retention filter.\",\n \"example\": \"Retention filter for session\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query string for a RUM retention filter.\",\n \"example\": \"@session.has_replay:true\",\n \"type\": \"string\"\n },\n \"sample_rate\": {\n \"description\": \"The sample rate for a RUM retention filter, between 0 and 100.\",\n \"example\": 25,\n \"format\": \"int64\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"event_type\",\n \"name\",\n \"sample_rate\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"retention_filters\",\n \"description\": \"The type of the resource. The value should always be retention_filters.\",\n \"enum\": [\n \"retention_filters\"\n ],\n \"example\": \"retention_filters\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RETENTION_FILTERS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new RUM retention filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScanningGroup.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScanningGroup.json new file mode 100644 index 00000000..928fe326 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScanningGroup.json @@ -0,0 +1,538 @@ +{ + "name": "CreateScanningGroup", + "fully_qualified_name": "DatadogApi.CreateScanningGroup@0.1.0", + "description": "Create a new scanning group in Datadog.\n\nThis tool creates a new scanning group in the Datadog sensitive data scanner. It allows for the configuration relationship to be included but does not support creating rules simultaneously. The new group is added last in the configuration order.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "scanning_group_configuration", + "required": true, + "description": "JSON object specifying the attributes and relationships of the scanning group, including name, filter, and enabled status.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 group." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to filter the events." + } + }, + "inner_properties": null, + "description": "Filter for the Scanning Group." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the group is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the group." + }, + "product_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of products the scanning group applies." + }, + "samplings": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs", + "rum", + "events", + "apm" + ], + "properties": null, + "inner_properties": null, + "description": "Datadog product onto which Sensitive Data Scanner can be activated." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate at which data in product type will be scanned, as a percentage." + } + }, + "description": "List of sampling rates per product type." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner group." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_configuration" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner configuration type." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration data." + }, + "rules": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "description": "Rules included in the group. The order is important." + } + }, + "inner_properties": null, + "description": "Rules included in the group." + } + }, + "inner_properties": null, + "description": "Relationships of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "Data related to the creation of a group." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateScanningGroup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/groups", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "scanning_group_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 group." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to filter the events." + } + }, + "inner_properties": null, + "description": "Filter for the Scanning Group." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the group is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the group." + }, + "product_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of products the scanning group applies." + }, + "samplings": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs", + "rum", + "events", + "apm" + ], + "properties": null, + "inner_properties": null, + "description": "Datadog product onto which Sensitive Data Scanner can be activated." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate at which data in product type will be scanned, as a percentage." + } + }, + "description": "List of sampling rates per product type." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner group." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_configuration" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner configuration type." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration data." + }, + "rules": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "description": "Rules included in the group. The order is important." + } + }, + "inner_properties": null, + "description": "Rules included in the group." + } + }, + "inner_properties": null, + "description": "Relationships of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "Data related to the creation of a group." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create group request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the creation of a group.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the Sensitive Data Scanner group.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of the group.\",\n \"type\": \"string\"\n },\n \"filter\": {\n \"description\": \"Filter for the Scanning Group.\",\n \"properties\": {\n \"query\": {\n \"description\": \"Query to filter the events.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"is_enabled\": {\n \"description\": \"Whether or not the group is enabled.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Name of the group.\",\n \"type\": \"string\"\n },\n \"product_list\": {\n \"description\": \"List of products the scanning group applies.\",\n \"items\": {\n \"default\": \"logs\",\n \"description\": \"Datadog product onto which Sensitive Data Scanner can be activated.\",\n \"enum\": [\n \"logs\",\n \"rum\",\n \"events\",\n \"apm\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"RUM\",\n \"EVENTS\",\n \"APM\"\n ]\n },\n \"type\": \"array\"\n },\n \"samplings\": {\n \"description\": \"List of sampling rates per product type.\",\n \"items\": {\n \"description\": \"Sampling configurations for the Scanning Group.\",\n \"properties\": {\n \"product\": {\n \"default\": \"logs\",\n \"description\": \"Datadog product onto which Sensitive Data Scanner can be activated.\",\n \"enum\": [\n \"logs\",\n \"rum\",\n \"events\",\n \"apm\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"RUM\",\n \"EVENTS\",\n \"APM\"\n ]\n },\n \"rate\": {\n \"description\": \"Rate at which data in product type will be scanned, as a percentage.\",\n \"example\": 100.0,\n \"format\": \"double\",\n \"maximum\": 100.0,\n \"minimum\": 0.0,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships of the group.\",\n \"properties\": {\n \"configuration\": {\n \"description\": \"A Sensitive Data Scanner configuration data.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A Sensitive Data Scanner configuration.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the configuration.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_configuration\",\n \"description\": \"Sensitive Data Scanner configuration type.\",\n \"enum\": [\n \"sensitive_data_scanner_configuration\"\n ],\n \"example\": \"sensitive_data_scanner_configuration\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_CONFIGURATIONS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rules\": {\n \"description\": \"Rules included in the group.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Rules included in the group. The order is important.\",\n \"items\": {\n \"description\": \"Rule item included in the group.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the rule.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_rule\",\n \"description\": \"Sensitive Data Scanner rule type.\",\n \"enum\": [\n \"sensitive_data_scanner_rule\"\n ],\n \"example\": \"sensitive_data_scanner_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_RULE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_group\",\n \"description\": \"Sensitive Data Scanner group type.\",\n \"enum\": [\n \"sensitive_data_scanner_group\"\n ],\n \"example\": \"sensitive_data_scanner_group\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_GROUP\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n },\n \"meta\": {\n \"description\": \"Meta payload containing information about the API.\",\n \"properties\": {\n \"version\": {\n \"description\": \"Version of the API (optional).\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScanningRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScanningRule.json new file mode 100644 index 00000000..71a72dcd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScanningRule.json @@ -0,0 +1,668 @@ +{ + "name": "CreateScanningRule", + "fully_qualified_name": "DatadogApi.CreateScanningRule@0.1.0", + "description": "Create a scanning rule in a sensitive data group.\n\nUse this tool to create a new scanning rule within a sensitive data scanner group. The rule requires a group relationship and either a standard pattern or a regex attribute, but not both. If no attributes are specified, it will scan all except excluded ones.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_creation_data", + "required": true, + "description": "A JSON object with data for creating a scanning rule, including attributes, relationships, and type specifications.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 rule." + }, + "excluded_namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array." + }, + "included_keyword_configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "character_count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of characters behind a match detected by Sensitive Data Scanner to look for the keywords defined.\n`character_count` should be greater than the maximum length of a keyword defined for a rule." + }, + "keywords": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Keyword list that will be checked during scanning in order to validate a match.\nThe number of keywords in the list must be less than or equal to 30." + }, + "use_recommended_keywords": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Should the rule use the underlying standard pattern keyword configuration. If set to `true`, the rule must be tied\nto a standard pattern. If set to `false`, the specified keywords and `character_count` are applied." + } + }, + "inner_properties": null, + "description": "Object defining a set of keywords and a number of characters that help reduce noise.\nYou can provide a list of keywords you would like to check within a defined proximity of the matching pattern.\nIf any of the keywords are found within the proximity check, the match is kept.\nIf none are found, the match is discarded." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned.\nIf both are missing the whole event is scanned." + }, + "pattern": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Not included if there is a relationship to a standard pattern." + }, + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Integer from 1 (high) to 5 (low) indicating rule issue severity." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags." + }, + "text_replacement": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "number_of_chars": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'partial_replacement_from_beginning'\nor 'partial_replacement_from_end'. It must be > 0." + }, + "replacement_string": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'replacement_string'." + }, + "should_save_match": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with \u2018Data Scanner Unmask\u2019 permission. As a security best practice, avoid masking for highly-sensitive, long-lived data." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "hash", + "replacement_string", + "partial_replacement_from_beginning", + "partial_replacement_from_end" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end." + } + }, + "inner_properties": null, + "description": "Object describing how the scanned event will be replaced." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "group": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "A scanning group." + } + }, + "inner_properties": null, + "description": "A scanning group data." + }, + "standard_pattern": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the standard pattern." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_standard_pattern" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner standard pattern type." + } + }, + "inner_properties": null, + "description": "Data containing the standard pattern id." + } + }, + "inner_properties": null, + "description": "A standard pattern." + } + }, + "inner_properties": null, + "description": "Relationships of a scanning rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "inner_properties": null, + "description": "Data related to the creation of a rule." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateScanningRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "rule_creation_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 rule." + }, + "excluded_namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array." + }, + "included_keyword_configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "character_count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of characters behind a match detected by Sensitive Data Scanner to look for the keywords defined.\n`character_count` should be greater than the maximum length of a keyword defined for a rule." + }, + "keywords": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Keyword list that will be checked during scanning in order to validate a match.\nThe number of keywords in the list must be less than or equal to 30." + }, + "use_recommended_keywords": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Should the rule use the underlying standard pattern keyword configuration. If set to `true`, the rule must be tied\nto a standard pattern. If set to `false`, the specified keywords and `character_count` are applied." + } + }, + "inner_properties": null, + "description": "Object defining a set of keywords and a number of characters that help reduce noise.\nYou can provide a list of keywords you would like to check within a defined proximity of the matching pattern.\nIf any of the keywords are found within the proximity check, the match is kept.\nIf none are found, the match is discarded." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned.\nIf both are missing the whole event is scanned." + }, + "pattern": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Not included if there is a relationship to a standard pattern." + }, + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Integer from 1 (high) to 5 (low) indicating rule issue severity." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags." + }, + "text_replacement": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "number_of_chars": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'partial_replacement_from_beginning'\nor 'partial_replacement_from_end'. It must be > 0." + }, + "replacement_string": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'replacement_string'." + }, + "should_save_match": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with \u2018Data Scanner Unmask\u2019 permission. As a security best practice, avoid masking for highly-sensitive, long-lived data." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "hash", + "replacement_string", + "partial_replacement_from_beginning", + "partial_replacement_from_end" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end." + } + }, + "inner_properties": null, + "description": "Object describing how the scanned event will be replaced." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "group": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "A scanning group." + } + }, + "inner_properties": null, + "description": "A scanning group data." + }, + "standard_pattern": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the standard pattern." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_standard_pattern" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner standard pattern type." + } + }, + "inner_properties": null, + "description": "Data containing the standard pattern id." + } + }, + "inner_properties": null, + "description": "A standard pattern." + } + }, + "inner_properties": null, + "description": "Relationships of a scanning rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "inner_properties": null, + "description": "Data related to the creation of a rule." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create rule request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the creation of a rule.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the Sensitive Data Scanner rule.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of the rule.\",\n \"type\": \"string\"\n },\n \"excluded_namespaces\": {\n \"description\": \"Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array.\",\n \"example\": [\n \"admin.name\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"included_keyword_configuration\": {\n \"description\": \"Object defining a set of keywords and a number of characters that help reduce noise.\\nYou can provide a list of keywords you would like to check within a defined proximity of the matching pattern.\\nIf any of the keywords are found within the proximity check, the match is kept.\\nIf none are found, the match is discarded.\",\n \"properties\": {\n \"character_count\": {\n \"description\": \"The number of characters behind a match detected by Sensitive Data Scanner to look for the keywords defined.\\n`character_count` should be greater than the maximum length of a keyword defined for a rule.\",\n \"example\": 30,\n \"format\": \"int64\",\n \"maximum\": 50,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"keywords\": {\n \"description\": \"Keyword list that will be checked during scanning in order to validate a match.\\nThe number of keywords in the list must be less than or equal to 30.\",\n \"example\": [\n \"credit card\",\n \"cc\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"use_recommended_keywords\": {\n \"description\": \"Should the rule use the underlying standard pattern keyword configuration. If set to `true`, the rule must be tied\\nto a standard pattern. If set to `false`, the specified keywords and `character_count` are applied.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"keywords\",\n \"character_count\"\n ],\n \"type\": \"object\"\n },\n \"is_enabled\": {\n \"description\": \"Whether or not the rule is enabled.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Name of the rule.\",\n \"type\": \"string\"\n },\n \"namespaces\": {\n \"description\": \"Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned.\\nIf both are missing the whole event is scanned.\",\n \"example\": [\n \"admin\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pattern\": {\n \"description\": \"Not included if there is a relationship to a standard pattern.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"Integer from 1 (high) to 5 (low) indicating rule issue severity.\",\n \"format\": \"int64\",\n \"maximum\": 5,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"tags\": {\n \"description\": \"List of tags.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"text_replacement\": {\n \"description\": \"Object describing how the scanned event will be replaced.\",\n \"properties\": {\n \"number_of_chars\": {\n \"description\": \"Required if type == 'partial_replacement_from_beginning'\\nor 'partial_replacement_from_end'. It must be > 0.\",\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"replacement_string\": {\n \"description\": \"Required if type == 'replacement_string'.\",\n \"type\": \"string\"\n },\n \"should_save_match\": {\n \"description\": \"Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with \\u2018Data Scanner Unmask\\u2019 permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.\",\n \"type\": \"boolean\"\n },\n \"type\": {\n \"default\": \"none\",\n \"description\": \"Type of the replacement text. None means no replacement.\\nhash means the data will be stubbed. replacement_string means that\\none can chose a text to replace the data. partial_replacement_from_beginning\\nallows a user to partially replace the data from the beginning, and\\npartial_replacement_from_end on the other hand, allows to replace data from\\nthe end.\",\n \"enum\": [\n \"none\",\n \"hash\",\n \"replacement_string\",\n \"partial_replacement_from_beginning\",\n \"partial_replacement_from_end\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NONE\",\n \"HASH\",\n \"REPLACEMENT_STRING\",\n \"PARTIAL_REPLACEMENT_FROM_BEGINNING\",\n \"PARTIAL_REPLACEMENT_FROM_END\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships of a scanning rule.\",\n \"properties\": {\n \"group\": {\n \"description\": \"A scanning group data.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A scanning group.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the group.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_group\",\n \"description\": \"Sensitive Data Scanner group type.\",\n \"enum\": [\n \"sensitive_data_scanner_group\"\n ],\n \"example\": \"sensitive_data_scanner_group\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_GROUP\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"standard_pattern\": {\n \"description\": \"A standard pattern.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data containing the standard pattern id.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the standard pattern.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_standard_pattern\",\n \"description\": \"Sensitive Data Scanner standard pattern type.\",\n \"enum\": [\n \"sensitive_data_scanner_standard_pattern\"\n ],\n \"example\": \"sensitive_data_scanner_standard_pattern\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_STANDARD_PATTERN\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_rule\",\n \"description\": \"Sensitive Data Scanner rule type.\",\n \"enum\": [\n \"sensitive_data_scanner_rule\"\n ],\n \"example\": \"sensitive_data_scanner_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_RULE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\",\n \"relationships\"\n ],\n \"type\": \"object\"\n },\n \"meta\": {\n \"description\": \"Meta payload containing information about the API.\",\n \"properties\": {\n \"version\": {\n \"description\": \"Version of the API (optional).\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\",\n \"meta\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScorecardRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScorecardRule.json new file mode 100644 index 00000000..b3cd0265 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateScorecardRule.json @@ -0,0 +1,344 @@ +{ + "name": "CreateScorecardRule", + "fully_qualified_name": "DatadogApi.CreateScorecardRule@0.1.0", + "description": "Create a new scorecard rule in Datadog.\n\nUse this tool to create a new scorecard rule in Datadog when you need to automate monitoring tasks or enforce policies. Ideal for setting up performance metrics or compliance checks.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_attributes", + "required": true, + "description": "JSON object with details about the scorecard rule to create, including attributes like category, enabled status, level, owner, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + }, + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the rule outcome." + }, + "custom": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines if the rule is a custom rule." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Explanation of the rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If enabled, the rule is calculated as part of the score." + }, + "level": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maturity level of the rule (1, 2, or 3)." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of the last rule outcome modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "owner": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Owner of the rule." + }, + "scorecard_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + } + }, + "inner_properties": null, + "description": "Details of a rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rule" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard rules." + } + }, + "inner_properties": null, + "description": "Scorecard create rule request data." + } + }, + "inner_properties": null, + "description": "Rule attributes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateScorecardRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/scorecard/rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "rule_attributes", + "description": "Rule attributes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + }, + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the rule outcome." + }, + "custom": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines if the rule is a custom rule." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Explanation of the rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If enabled, the rule is calculated as part of the score." + }, + "level": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maturity level of the rule (1, 2, or 3)." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of the last rule outcome modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "owner": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Owner of the rule." + }, + "scorecard_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + } + }, + "inner_properties": null, + "description": "Details of a rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rule" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard rules." + } + }, + "inner_properties": null, + "description": "Scorecard create rule request data." + } + }, + "inner_properties": null, + "description": "Rule attributes." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Scorecard create rule request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Scorecard create rule request data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Details of a rule.\",\n \"properties\": {\n \"category\": {\n \"deprecated\": true,\n \"description\": \"The scorecard name to which this rule must belong.\",\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Creation time of the rule outcome.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Defines if the rule is a custom rule.\",\n \"type\": \"boolean\"\n },\n \"description\": {\n \"description\": \"Explanation of the rule.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"If enabled, the rule is calculated as part of the score.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"level\": {\n \"description\": \"The maturity level of the rule (1, 2, or 3).\",\n \"example\": 2,\n \"format\": \"int32\",\n \"maximum\": 3,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"modified_at\": {\n \"description\": \"Time of the last rule outcome modification.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the rule.\",\n \"example\": \"Team Defined\",\n \"type\": \"string\"\n },\n \"owner\": {\n \"description\": \"Owner of the rule.\",\n \"type\": \"string\"\n },\n \"scorecard_name\": {\n \"description\": \"The scorecard name to which this rule must belong.\",\n \"example\": \"Deployments automated via Deployment Trains\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rule\",\n \"description\": \"The JSON:API type for scorecard rules.\",\n \"enum\": [\n \"rule\"\n ],\n \"example\": \"rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RULE\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Rule attributes.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSecurityFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSecurityFilter.json new file mode 100644 index 00000000..a3f17406 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSecurityFilter.json @@ -0,0 +1,302 @@ +{ + "name": "CreateSecurityFilter", + "fully_qualified_name": "DatadogApi.CreateSecurityFilter@0.1.0", + "description": "Create a security filter using Datadog's API.\n\nUse this tool to create a security filter for monitoring purposes in Datadog. Ideal for setting up security monitoring based on predefined conditions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_filter_definition", + "required": true, + "description": "JSON object defining the new security filter, including attributes like name, query, exclusion filters, and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "exclusion_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter query. Logs that match this query are excluded from the security filter." + } + }, + "description": "Exclusion filters to exclude some logs from the security filter." + }, + "filtered_data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs" + ], + "properties": null, + "inner_properties": null, + "description": "The filtered data type." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the security filter is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the security filter." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query of the security filter." + } + }, + "inner_properties": null, + "description": "Object containing the attributes of the security filter to be created." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "security_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `security_filters`." + } + }, + "inner_properties": null, + "description": "Object for a single security filter." + } + }, + "inner_properties": null, + "description": "The definition of the new security filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateSecurityFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "security_filter_definition", + "description": "The definition of the new security filter.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "exclusion_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter query. Logs that match this query are excluded from the security filter." + } + }, + "description": "Exclusion filters to exclude some logs from the security filter." + }, + "filtered_data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs" + ], + "properties": null, + "inner_properties": null, + "description": "The filtered data type." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the security filter is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the security filter." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query of the security filter." + } + }, + "inner_properties": null, + "description": "Object containing the attributes of the security filter to be created." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "security_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `security_filters`." + } + }, + "inner_properties": null, + "description": "Object for a single security filter." + } + }, + "inner_properties": null, + "description": "The definition of the new security filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the security filter that you would like to create.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single security filter.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Object containing the attributes of the security filter to be created.\",\n \"properties\": {\n \"exclusion_filters\": {\n \"description\": \"Exclusion filters to exclude some logs from the security filter.\",\n \"example\": [\n {\n \"name\": \"Exclude staging\",\n \"query\": \"source:staging\"\n }\n ],\n \"items\": {\n \"description\": \"Exclusion filter for the security filter.\",\n \"example\": {\n \"name\": \"Exclude staging\",\n \"query\": \"source:staging\"\n },\n \"properties\": {\n \"name\": {\n \"description\": \"Exclusion filter name.\",\n \"example\": \"Exclude staging\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Exclusion filter query. Logs that match this query are excluded from the security filter.\",\n \"example\": \"source:staging\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filtered_data_type\": {\n \"description\": \"The filtered data type.\",\n \"enum\": [\n \"logs\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\"\n ]\n },\n \"is_enabled\": {\n \"description\": \"Whether the security filter is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The name of the security filter.\",\n \"example\": \"Custom security filter\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query of the security filter.\",\n \"example\": \"service:api\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"query\",\n \"exclusion_filters\",\n \"filtered_data_type\",\n \"is_enabled\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"security_filters\",\n \"description\": \"The type of the resource. The value should always be `security_filters`.\",\n \"enum\": [\n \"security_filters\"\n ],\n \"example\": \"security_filters\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SECURITY_FILTERS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new security filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSecurityMonitoringRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSecurityMonitoringRule.json new file mode 100644 index 00000000..1cb58e48 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSecurityMonitoringRule.json @@ -0,0 +1,126 @@ +{ + "name": "CreateSecurityMonitoringRule", + "fully_qualified_name": "DatadogApi.CreateSecurityMonitoringRule@0.1.0", + "description": "Create a detection rule for monitoring security events.\n\nThis tool is used to create a new detection rule for monitoring security events through Datadog. It involves setting up criteria and policies to trigger alerts for specific security-related incidents.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_rule_details", + "required": true, + "description": "JSON object containing the configuration details of the security monitoring rule to be created.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "security_rule_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create a new rule.\",\n \"oneOf\": [\n {\n \"description\": \"Create a new rule.\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"customQueryExtension\": {\n \"description\": \"Query extension to append to the logs query.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"**This field is currently unstable and might be removed in a minor version upgrade.**\\nThe index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules - in other words, when the `schedulingOptions` field is present in the rule payload.\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"description\": \"List of indexes to query when the `dataSource` is `logs`. Only used for scheduled rules, such as when the `schedulingOptions` field is present in the rule payload.\",\n \"items\": {\n \"description\": \"Index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metric\": {\n \"deprecated\": true,\n \"description\": \"(Deprecated) The target field to aggregate over when using the sum or max\\naggregations. `metrics` field should be used instead.\",\n \"type\": \"string\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables for the rule.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulingOptions\": {\n \"description\": \"Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.\",\n \"nullable\": true,\n \"properties\": {\n \"rrule\": {\n \"description\": \"Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference.\",\n \"example\": \"FREQ=HOURLY;INTERVAL=1;\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"Start date for the schedule, in ISO 8601 format without timezone.\",\n \"example\": \"2025-07-14T12:00:00\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating signals from third-party rules. Only available for third-party rules.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when a signal is generated by a third party rule.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"api_security\",\n \"application_security\",\n \"log_detection\",\n \"workload_security\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"API_SECURITY\",\n \"APPLICATION_SECURITY\",\n \"LOG_DETECTION\",\n \"WORKLOAD_SECURITY\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Create a new signal correlation rule.\",\n \"properties\": {\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting signals which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule on signals.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"correlatedByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"correlatedQueryIndex\": {\n \"description\": \"Index of the rule query used to retrieve the correlated field.\",\n \"format\": \"int32\",\n \"maximum\": 9,\n \"type\": \"integer\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"ruleId\": {\n \"description\": \"Rule ID to match on signals.\",\n \"example\": \"org-ru1-e1d\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ruleId\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"signal_correlation\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SIGNAL_CORRELATION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Create a new cloud configuration rule.\",\n \"properties\": {\n \"cases\": {\n \"description\": \"Description of generated findings and signals (severity and channels to be notified in case of a signal). Must contain exactly one item.\",\n \"items\": {\n \"description\": \"Description of signals.\",\n \"properties\": {\n \"notifications\": {\n \"description\": \"Notification targets for each rule case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"complianceSignalOptions\": {\n \"description\": \"How to generate compliance signals. Useful for cloud_configuration rules only.\",\n \"properties\": {\n \"defaultActivationStatus\": {\n \"description\": \"The default activation status.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"defaultGroupByFields\": {\n \"description\": \"The default group by fields.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"userActivationStatus\": {\n \"description\": \"Whether signals will be sent.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"userGroupByFields\": {\n \"description\": \"Fields to use to group findings by when sending signals.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message in markdown format for generated findings and signals.\",\n \"example\": \"#Description\\nExplanation of the rule.\\n\\n#Remediation\\nHow to fix the security issue.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options on cloud configuration rules.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"complianceRuleOptions\"\n ],\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated findings and signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"cloud_configuration\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUD_CONFIGURATION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"options\",\n \"complianceSignalOptions\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateServiceAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateServiceAccount.json new file mode 100644 index 00000000..1a241165 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateServiceAccount.json @@ -0,0 +1,338 @@ +{ + "name": "CreateServiceAccount", + "fully_qualified_name": "DatadogApi.CreateServiceAccount@0.1.0", + "description": "Create a service account for your organization.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_account_details", + "required": true, + "description": "JSON object containing user attributes (email, name, title) and relationships (roles). Specify 'service_account' as true.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the user." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the user." + }, + "service_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the user is a service account. Must be true." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the user." + } + }, + "inner_properties": null, + "description": "Attributes of the created user." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "roles": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "description": "An array containing type and the unique identifier of a role." + } + }, + "inner_properties": null, + "description": "Relationship to roles." + } + }, + "inner_properties": null, + "description": "Relationships of the user object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Object to create a service account User." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateServiceAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/service_accounts", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "service_account_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the user." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the user." + }, + "service_account": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the user is a service account. Must be true." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the user." + } + }, + "inner_properties": null, + "description": "Attributes of the created user." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "roles": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "description": "An array containing type and the unique identifier of a role." + } + }, + "inner_properties": null, + "description": "Relationship to roles." + } + }, + "inner_properties": null, + "description": "Relationships of the user object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Object to create a service account User." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create a service account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object to create a service account User.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the created user.\",\n \"properties\": {\n \"email\": {\n \"description\": \"The email of the user.\",\n \"example\": \"jane.doe@example.com\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the user.\",\n \"type\": \"string\"\n },\n \"service_account\": {\n \"description\": \"Whether the user is a service account. Must be true.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"The title of the user.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"email\",\n \"service_account\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships of the user object.\",\n \"properties\": {\n \"roles\": {\n \"description\": \"Relationship to roles.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An array containing type and the unique identifier of a role.\",\n \"items\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateServiceAccountAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateServiceAccountAppKey.json new file mode 100644 index 00000000..85403c1e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateServiceAccountAppKey.json @@ -0,0 +1,229 @@ +{ + "name": "CreateServiceAccountAppKey", + "fully_qualified_name": "DatadogApi.CreateServiceAccountAppKey@0.1.0", + "description": "Create an application key for a service account.\n\nUse this tool to create a new application key for a specified service account on Datadog. It should be called when an application key is needed for service account integration or access.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_account_identifier", + "required": true, + "description": "The unique identifier of the service account for which the application key will be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_account_id" + }, + { + "name": "application_key_name", + "required": true, + "description": "The name for the application key to be created for the service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "application_keys_resource_type", + "required": true, + "description": "Specify the resource type for the application key. This should always be 'application_keys'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "application_key_scopes", + "required": false, + "description": "List of scopes to assign to the application key for specific permissions.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.scopes" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateServiceAccountApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "service_account_id", + "tool_parameter_name": "service_account_identifier", + "description": "The ID of the service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "application_key_name", + "description": "Name of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.scopes", + "tool_parameter_name": "application_key_scopes", + "description": "Array of scopes to grant the application key.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "application_keys_resource_type", + "description": "Application Keys resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "application_keys", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to create an application key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object used to create an application key.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes used to create an application Key.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the application key.\",\n \"example\": \"Application Key for managing dashboards\",\n \"type\": \"string\"\n },\n \"scopes\": {\n \"description\": \"Array of scopes to grant the application key.\",\n \"example\": [\n \"dashboards_read\",\n \"dashboards_write\",\n \"dashboards_public_share\"\n ],\n \"items\": {\n \"description\": \"Name of scope.\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"application_keys\",\n \"description\": \"Application Keys resource type.\",\n \"enum\": [\n \"application_keys\"\n ],\n \"example\": \"application_keys\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPLICATION_KEYS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSloReportJob.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSloReportJob.json new file mode 100644 index 00000000..8b5beb0d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSloReportJob.json @@ -0,0 +1,266 @@ +{ + "name": "CreateSloReportJob", + "fully_qualified_name": "DatadogApi.CreateSloReportJob@0.1.0", + "description": "Initiate the generation of an SLO report in Datadog.\n\nUse this tool to start an SLO report job in Datadog. Once created, the job processes asynchronously, and a CSV report becomes available for download. Utilize the returned `report_id` to check status and access the report.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "from_timestamp_epoch_seconds", + "required": true, + "description": "The starting timestamp for the SLO report in epoch seconds. Specifies when the report should begin.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `from` timestamp for the report in epoch seconds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.from_ts" + }, + { + "name": "slo_query_filter", + "required": true, + "description": "The query string to filter SLO results, e.g., 'service:' or 'slo-name'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query string used to filter SLO results. Some examples of queries include `service:` and `slo-name`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.query" + }, + { + "name": "report_to_timestamp", + "required": true, + "description": "The epoch timestamp representing the end time for the SLO report.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `to` timestamp for the report in epoch seconds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.to_ts" + }, + { + "name": "report_generation_frequency", + "required": false, + "description": "The frequency for generating report data. Options: daily, weekly, monthly.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "daily", + "weekly", + "monthly" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency at which report data is to be generated." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.interval" + }, + { + "name": "report_timezone", + "required": false, + "description": "The timezone to determine the start and end of each interval for the SLO report. It affects how intervals such as weekly start at 12am on Sunday in the specified timezone.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone used to determine the start and end of each interval. For example, weekly intervals start at 12am on Sunday in the specified timezone." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.timezone" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateSLOReportJob'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/slo/report", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.from_ts", + "tool_parameter_name": "from_timestamp_epoch_seconds", + "description": "The `from` timestamp for the report in epoch seconds.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `from` timestamp for the report in epoch seconds." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.interval", + "tool_parameter_name": "report_generation_frequency", + "description": "The frequency at which report data is to be generated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "daily", + "weekly", + "monthly" + ], + "properties": null, + "inner_properties": null, + "description": "The frequency at which report data is to be generated." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.query", + "tool_parameter_name": "slo_query_filter", + "description": "The query string used to filter SLO results. Some examples of queries include `service:` and `slo-name`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query string used to filter SLO results. Some examples of queries include `service:` and `slo-name`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.timezone", + "tool_parameter_name": "report_timezone", + "description": "The timezone used to determine the start and end of each interval. For example, weekly intervals start at 12am on Sunday in the specified timezone.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone used to determine the start and end of each interval. For example, weekly intervals start at 12am on Sunday in the specified timezone." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.to_ts", + "tool_parameter_name": "report_to_timestamp", + "description": "The `to` timestamp for the report in epoch seconds.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `to` timestamp for the report in epoch seconds." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The SLO report request body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The data portion of the SLO report request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes portion of the SLO report request.\",\n \"properties\": {\n \"from_ts\": {\n \"description\": \"The `from` timestamp for the report in epoch seconds.\",\n \"example\": 1690901870,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The frequency at which report data is to be generated.\",\n \"enum\": [\n \"daily\",\n \"weekly\",\n \"monthly\"\n ],\n \"example\": \"weekly\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DAILY\",\n \"WEEKLY\",\n \"MONTHLY\"\n ]\n },\n \"query\": {\n \"description\": \"The query string used to filter SLO results. Some examples of queries include `service:` and `slo-name`.\",\n \"example\": \"slo_type:metric\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"The timezone used to determine the start and end of each interval. For example, weekly intervals start at 12am on Sunday in the specified timezone.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n },\n \"to_ts\": {\n \"description\": \"The `to` timestamp for the report in epoch seconds.\",\n \"example\": 1706803070,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"query\",\n \"from_ts\",\n \"to_ts\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Create SLO report job request body.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSpanMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSpanMetric.json new file mode 100644 index 00000000..169d7c4e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSpanMetric.json @@ -0,0 +1,356 @@ +{ + "name": "CreateSpanMetric", + "fully_qualified_name": "DatadogApi.CreateSpanMetric@0.1.0", + "description": "Create a metric based on ingested spans in your organization.\n\nUse this tool to create a metric using your ingested spans. It will return the created span-based metric object if successful.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "span_metric_definition", + "required": true, + "description": "JSON object defining the new span-based metric, including attributes like compute, filter, and group_by.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The type of aggregation to use." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\")." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the span-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + } + }, + "inner_properties": null, + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the span-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The object describing the Datadog span-based metric to create." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be spans_metrics." + } + }, + "inner_properties": null, + "description": "The new span-based metric properties." + } + }, + "inner_properties": null, + "description": "The definition of the new span-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateSpansMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/metrics", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "span_metric_definition", + "description": "The definition of the new span-based metric.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregation_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "The type of aggregation to use." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + }, + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \"distribution\")." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the span-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + } + }, + "inner_properties": null, + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the span-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The object describing the Datadog span-based metric to create." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be spans_metrics." + } + }, + "inner_properties": null, + "description": "The new span-based metric properties." + } + }, + "inner_properties": null, + "description": "The definition of the new span-based metric." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The new span-based metric body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new span-based metric properties.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing the Datadog span-based metric to create.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The compute rule to compute the span-based metric.\",\n \"properties\": {\n \"aggregation_type\": {\n \"description\": \"The type of aggregation to use.\",\n \"enum\": [\n \"count\",\n \"distribution\"\n ],\n \"example\": \"distribution\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"DISTRIBUTION\"\n ]\n },\n \"include_percentiles\": {\n \"description\": \"Toggle to include or exclude percentile aggregations for distribution metrics.\\nOnly present when the `aggregation_type` is `distribution`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"path\": {\n \"description\": \"The path to the value the span-based metric will aggregate on (only used if the aggregation type is a \\\"distribution\\\").\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"aggregation_type\"\n ],\n \"type\": \"object\"\n },\n \"filter\": {\n \"description\": \"The span-based metric filter. Spans matching this filter will be aggregated in this metric.\",\n \"properties\": {\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the span search syntax.\",\n \"example\": \"@http.status_code:200 service:my-service\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group by rule.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The path to the value the span-based metric will be aggregated over.\",\n \"example\": \"resource_name\",\n \"type\": \"string\"\n },\n \"tag_name\": {\n \"description\": \"Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.\",\n \"example\": \"resource_name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"compute\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The name of the span-based metric.\",\n \"example\": \"my.metric\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"spans_metrics\",\n \"description\": \"The type of resource. The value should always be spans_metrics.\",\n \"enum\": [\n \"spans_metrics\"\n ],\n \"example\": \"spans_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPANS_METRICS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new span-based metric.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSupportCase.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSupportCase.json new file mode 100644 index 00000000..81714d50 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSupportCase.json @@ -0,0 +1,416 @@ +{ + "name": "CreateSupportCase", + "fully_qualified_name": "DatadogApi.CreateSupportCase@0.1.0", + "description": "Create a new support case in Datadog.\n\nUse this tool to create a new support case in Datadog. Useful for reporting issues or requesting assistance.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_title", + "required": true, + "description": "The title of the support case to be created. It should clearly summarize the issue or request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Title" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.title" + }, + { + "name": "case_type_uuid", + "required": true, + "description": "UUID representing the case type. Provide a valid UUID to specify the type of case being created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.type_id" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specifies the type of resource being created. Always use \"case\" for this argument.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "case_description", + "required": false, + "description": "A detailed description of the support case. Include all relevant information about the issue or request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "case_priority", + "required": false, + "description": "The priority of the support case. Valid values are NOT_DEFINED, P1, P2, P3, P4, P5.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "NOT_DEFINED", + "P1", + "P2", + "P3", + "P4", + "P5" + ], + "properties": null, + "inner_properties": null, + "description": "Case priority" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.priority" + }, + { + "name": "assignee_user_id", + "required": false, + "description": "A unique identifier for the user assigned to the case. Typically a UUID string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.assignee.data.id" + }, + { + "name": "assignee_resource_type", + "required": false, + "description": "The type of resource for the assignee, usually 'user'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "user" + ], + "properties": null, + "inner_properties": null, + "description": "User resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.assignee.data.type" + }, + { + "name": "project_id", + "required": false, + "description": "Provide the unique identifier of the project related to the support case.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the project" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.project.data.id" + }, + { + "name": "project_resource_type", + "required": false, + "description": "Specifies the project resource type. Must be 'project'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "project" + ], + "properties": null, + "inner_properties": null, + "description": "Project resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.relationships.project.data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCase'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.description", + "tool_parameter_name": "case_description", + "description": "Description", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.priority", + "tool_parameter_name": "case_priority", + "description": "Case priority", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "NOT_DEFINED", + "P1", + "P2", + "P3", + "P4", + "P5" + ], + "properties": null, + "inner_properties": null, + "description": "Case priority" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "NOT_DEFINED", + "documentation_urls": [] + }, + { + "name": "data.attributes.title", + "tool_parameter_name": "case_title", + "description": "Title", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Title" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.type_id", + "tool_parameter_name": "case_type_uuid", + "description": "Case type UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type UUID" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.assignee.data.id", + "tool_parameter_name": "assignee_user_id", + "description": "A unique identifier that represents the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.assignee.data.type", + "tool_parameter_name": "assignee_resource_type", + "description": "User resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "user" + ], + "properties": null, + "inner_properties": null, + "description": "User resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "user", + "documentation_urls": [] + }, + { + "name": "data.relationships.project.data.id", + "tool_parameter_name": "project_id", + "description": "A unique identifier that represents the project", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the project" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.relationships.project.data.type", + "tool_parameter_name": "project_resource_type", + "description": "Project resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "project" + ], + "properties": null, + "inner_properties": null, + "description": "Project resource type" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "project", + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case create request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case creation data\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case creation attributes\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"default\": \"NOT_DEFINED\",\n \"description\": \"Case priority\",\n \"enum\": [\n \"NOT_DEFINED\",\n \"P1\",\n \"P2\",\n \"P3\",\n \"P4\",\n \"P5\"\n ],\n \"example\": \"NOT_DEFINED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOT_DEFINED\",\n \"P1\",\n \"P2\",\n \"P3\",\n \"P4\",\n \"P5\"\n ]\n },\n \"title\": {\n \"description\": \"Title\",\n \"example\": \"Security breach investigation\",\n \"type\": \"string\"\n },\n \"type_id\": {\n \"description\": \"Case type UUID\",\n \"example\": \"3b010bde-09ce-4449-b745-71dd5f861963\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"type_id\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Relationships formed with the case on creation\",\n \"properties\": {\n \"assignee\": {\n \"description\": \"Relationship to user.\",\n \"nullable\": true,\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"nullable\": true,\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"user\",\n \"description\": \"User resource type.\",\n \"enum\": [\n \"user\"\n ],\n \"example\": \"user\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n },\n \"project\": {\n \"description\": \"Relationship to project\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to project object\",\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the project\",\n \"example\": \"e555e290-ed65-49bd-ae18-8acbfcf18db7\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"project\",\n \"description\": \"Project resource type\",\n \"enum\": [\n \"project\"\n ],\n \"example\": \"project\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PROJECT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"project\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSuppressionRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSuppressionRule.json new file mode 100644 index 00000000..62797c55 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateSuppressionRule.json @@ -0,0 +1,394 @@ +{ + "name": "CreateSuppressionRule", + "fully_qualified_name": "DatadogApi.CreateSuppressionRule@0.1.0", + "description": "Create a new security monitoring suppression rule.\n\nUse this tool to create a new suppression rule in Datadog's security monitoring. It should be called when you need to suppress specific security alerts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "suppression_rule_name", + "required": true, + "description": "The name of the suppression rule to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the suppression rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "rule_query", + "required": true, + "description": "The rule criteria for the suppression rule using detection rules syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.rule_query" + }, + { + "name": "resource_type", + "required": true, + "description": "The type of the resource, which should always be `suppressions`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "suppressions" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `suppressions`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_suppression_rule", + "required": true, + "description": "Enable the suppression rule. Use true to enable, false to disable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the suppression rule is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + }, + { + "name": "data_exclusion_query", + "required": false, + "description": "An exclusion query for input data to ignore events in suppression rules, applicable to logs, Agent events, etc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.data_exclusion_query" + }, + { + "name": "suppression_rule_description", + "required": false, + "description": "A description for the suppression rule. Provide a clear and concise explanation of the rule's purpose.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A description for the suppression rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "expiration_date_unix_ms", + "required": false, + "description": "A Unix millisecond timestamp for rule expiration. After this date, the rule will not suppress signals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.expiration_date" + }, + { + "name": "start_date_timestamp", + "required": false, + "description": "A Unix millisecond timestamp indicating when the suppression rule begins to suppress signals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.start_date" + }, + { + "name": "suppression_query", + "required": false, + "description": "The query used to suppress signals in the security rule. Matches are not triggered.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.suppression_query" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateSecurityMonitoringSuppression'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.data_exclusion_query", + "tool_parameter_name": "data_exclusion_query", + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "suppression_rule_description", + "description": "A description for the suppression rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A description for the suppression rule." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "enable_suppression_rule", + "description": "Whether the suppression rule is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the suppression rule is enabled." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.expiration_date", + "tool_parameter_name": "expiration_date_unix_ms", + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "suppression_rule_name", + "description": "The name of the suppression rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the suppression rule." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.rule_query", + "tool_parameter_name": "rule_query", + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.start_date", + "tool_parameter_name": "start_date_timestamp", + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.suppression_query", + "tool_parameter_name": "suppression_query", + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource. The value should always be `suppressions`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "suppressions" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `suppressions`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "suppressions", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the suppression rule that you would like to create.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single suppression rule.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Object containing the attributes of the suppression rule to be created.\",\n \"properties\": {\n \"data_exclusion_query\": {\n \"description\": \"An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule.\",\n \"example\": \"source:cloudtrail account_id:12345\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"A description for the suppression rule.\",\n \"example\": \"This rule suppresses low-severity signals in staging environments.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Whether the suppression rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"expiration_date\": {\n \"description\": \"A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.\",\n \"example\": 1703187336000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"The name of the suppression rule.\",\n \"example\": \"Custom suppression\",\n \"type\": \"string\"\n },\n \"rule_query\": {\n \"description\": \"The rule query of the suppression rule, with the same syntax as the search bar for detection rules.\",\n \"example\": \"type:log_detection source:cloudtrail\",\n \"type\": \"string\"\n },\n \"start_date\": {\n \"description\": \"A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals.\",\n \"example\": 1703187336000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"suppression_query\": {\n \"description\": \"The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer.\",\n \"example\": \"env:staging status:low\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"enabled\",\n \"rule_query\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"suppressions\",\n \"description\": \"The type of the resource. The value should always be `suppressions`.\",\n \"enum\": [\n \"suppressions\"\n ],\n \"example\": \"suppressions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUPPRESSIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new suppression rule.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateTagPipelineRuleset.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateTagPipelineRuleset.json new file mode 100644 index 00000000..450ebf73 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateTagPipelineRuleset.json @@ -0,0 +1,596 @@ +{ + "name": "CreateTagPipelineRuleset", + "fully_qualified_name": "DatadogApi.CreateTagPipelineRuleset@0.1.0", + "description": "Create a tag pipeline ruleset with specified rules.\n\nThis tool creates a new tag pipeline ruleset using the specified rules and configurations in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "tag_pipeline_ruleset_data", + "required": true, + "description": "JSON object defining the rules and configurations for the new tag pipeline ruleset in Datadog. Includes attributes such as enabled status, rules details, type, and ID.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `enabled`." + }, + "mapping": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `destination_key`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `source_keys`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsMapping` object." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `metadata`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `name`." + }, + "query": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "addition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `value`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsQueryAddition` object." + }, + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `case_insensitivity`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `if_not_exists`." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `query`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsQuery` object." + }, + "reference_table": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `case_insensitivity`." + }, + "field_pairs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "input_column": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `input_column`." + }, + "output_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `output_key`." + } + }, + "description": "The `reference_table` `field_pairs`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `source_keys`." + }, + "table_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `table_name`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsReferenceTable` object." + } + }, + "description": "The `attributes` `rules`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CreateRulesetRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "create_ruleset" + ], + "properties": null, + "inner_properties": null, + "description": "Create ruleset resource type." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateTagPipelinesRuleset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/tags/enrichment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "tag_pipeline_ruleset_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `enabled`." + }, + "mapping": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `destination_key`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `source_keys`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsMapping` object." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `metadata`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `name`." + }, + "query": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "addition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `value`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsQueryAddition` object." + }, + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `case_insensitivity`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `if_not_exists`." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `query`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsQuery` object." + }, + "reference_table": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `case_insensitivity`." + }, + "field_pairs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "input_column": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `input_column`." + }, + "output_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `output_key`." + } + }, + "description": "The `reference_table` `field_pairs`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `source_keys`." + }, + "table_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `table_name`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributesRulesItemsReferenceTable` object." + } + }, + "description": "The `attributes` `rules`." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CreateRulesetRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "create_ruleset" + ], + "properties": null, + "inner_properties": null, + "description": "Create ruleset resource type." + } + }, + "inner_properties": null, + "description": "The definition of `CreateRulesetRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `CreateRulesetRequest` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"enabled\": true,\n \"rules\": [\n {\n \"enabled\": true,\n \"mapping\": null,\n \"metadata\": null,\n \"name\": \"Add Cost Center Tag\",\n \"query\": {\n \"addition\": {\n \"key\": \"cost_center\",\n \"value\": \"engineering\"\n },\n \"case_insensitivity\": false,\n \"if_not_exists\": true,\n \"query\": \"account_id:\\\"123456789\\\" AND service:\\\"web-api\\\"\"\n },\n \"reference_table\": null\n }\n ]\n },\n \"id\": \"New Ruleset\",\n \"type\": \"create_ruleset\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `CreateRulesetRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `CreateRulesetRequestDataAttributes` object.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"The `attributes` `enabled`.\",\n \"type\": \"boolean\"\n },\n \"rules\": {\n \"description\": \"The `attributes` `rules`.\",\n \"items\": {\n \"description\": \"The definition of `CreateRulesetRequestDataAttributesRulesItems` object.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"The `items` `enabled`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"mapping\": {\n \"description\": \"The definition of `CreateRulesetRequestDataAttributesRulesItemsMapping` object.\",\n \"nullable\": true,\n \"properties\": {\n \"destination_key\": {\n \"description\": \"The `mapping` `destination_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"if_not_exists\": {\n \"description\": \"The `mapping` `if_not_exists`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"source_keys\": {\n \"description\": \"The `mapping` `source_keys`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"destination_key\",\n \"if_not_exists\",\n \"source_keys\"\n ],\n \"type\": \"object\"\n },\n \"metadata\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The `items` `metadata`.\",\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The `items` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The definition of `CreateRulesetRequestDataAttributesRulesItemsQuery` object.\",\n \"nullable\": true,\n \"properties\": {\n \"addition\": {\n \"description\": \"The definition of `CreateRulesetRequestDataAttributesRulesItemsQueryAddition` object.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The `addition` `key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `addition` `value`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"case_insensitivity\": {\n \"description\": \"The `query` `case_insensitivity`.\",\n \"type\": \"boolean\"\n },\n \"if_not_exists\": {\n \"description\": \"The `query` `if_not_exists`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"query\": {\n \"description\": \"The `query` `query`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"addition\",\n \"if_not_exists\",\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"reference_table\": {\n \"description\": \"The definition of `CreateRulesetRequestDataAttributesRulesItemsReferenceTable` object.\",\n \"nullable\": true,\n \"properties\": {\n \"case_insensitivity\": {\n \"description\": \"The `reference_table` `case_insensitivity`.\",\n \"type\": \"boolean\"\n },\n \"field_pairs\": {\n \"description\": \"The `reference_table` `field_pairs`.\",\n \"items\": {\n \"description\": \"The definition of `CreateRulesetRequestDataAttributesRulesItemsReferenceTableFieldPairsItems` object.\",\n \"properties\": {\n \"input_column\": {\n \"description\": \"The `items` `input_column`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"output_key\": {\n \"description\": \"The `items` `output_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"input_column\",\n \"output_key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"if_not_exists\": {\n \"description\": \"The `reference_table` `if_not_exists`.\",\n \"type\": \"boolean\"\n },\n \"source_keys\": {\n \"description\": \"The `reference_table` `source_keys`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"table_name\": {\n \"description\": \"The `reference_table` `table_name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"field_pairs\",\n \"source_keys\",\n \"table_name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"enabled\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"rules\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `CreateRulesetRequestData` `id`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"create_ruleset\",\n \"description\": \"Create ruleset resource type.\",\n \"enum\": [\n \"create_ruleset\"\n ],\n \"example\": \"create_ruleset\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CREATE_RULESET\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateTenantBasedHandle.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateTenantBasedHandle.json new file mode 100644 index 00000000..c7b56350 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateTenantBasedHandle.json @@ -0,0 +1,262 @@ +{ + "name": "CreateTenantBasedHandle", + "fully_qualified_name": "DatadogApi.CreateTenantBasedHandle@0.1.0", + "description": "Create a tenant-based handle in Datadog for Teams.\n\nUse this tool to create a new tenant-based handle for the Microsoft Teams integration within Datadog. It should be called when you need to configure or add a handle specific to a tenant in Datadog's Microsoft Teams integration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "channel_id", + "required": true, + "description": "ID of the Microsoft Teams channel to associate with the tenant-based handle.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Channel id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.channel_id" + }, + { + "name": "handle_name", + "required": true, + "description": "The name for the tenant-based handle you wish to create in the Datadog Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant-based handle name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "team_id", + "required": true, + "description": "The ID of the Microsoft Teams team to associate with the Datadog handle.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Team id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.team_id" + }, + { + "name": "tenant_id", + "required": true, + "description": "The unique identifier for the tenant in the Datadog Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tenant_id" + }, + { + "name": "resource_type", + "required": true, + "description": "Specifies the resource type as 'tenant-based-handle'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tenant-based-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the tenant-based handle resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateTenantBasedHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.channel_id", + "tool_parameter_name": "channel_id", + "description": "Channel id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Channel id." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "handle_name", + "description": "Tenant-based handle name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant-based handle name." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.team_id", + "tool_parameter_name": "team_id", + "description": "Team id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Team id." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tenant_id", + "tool_parameter_name": "tenant_id", + "description": "Tenant id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant id." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "Specifies the tenant-based handle resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tenant-based-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the tenant-based handle resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "tenant-based-handle", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create tenant-based handle request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Tenant-based handle data from a response.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Tenant-based handle attributes.\",\n \"properties\": {\n \"channel_id\": {\n \"description\": \"Channel id.\",\n \"example\": \"fake-channel-id\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Tenant-based handle name.\",\n \"example\": \"fake-handle-name\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"team_id\": {\n \"description\": \"Team id.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"Tenant id.\",\n \"example\": \"00000000-0000-0000-0000-000000000001\",\n \"maxLength\": 255,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"channel_id\",\n \"team_id\",\n \"tenant_id\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"tenant-based-handle\",\n \"description\": \"Specifies the tenant-based handle resource type.\",\n \"enum\": [\n \"tenant-based-handle\"\n ],\n \"example\": \"tenant-based-handle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TENANT_BASED_HANDLE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Tenant-based handle payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateUserApplicationKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateUserApplicationKey.json new file mode 100644 index 00000000..5d14e064 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateUserApplicationKey.json @@ -0,0 +1,196 @@ +{ + "name": "CreateUserApplicationKey", + "fully_qualified_name": "DatadogApi.CreateUserApplicationKey@0.1.0", + "description": "Create an application key for the current user in Datadog.\n\nUse this tool to generate a new application key for the current Datadog user. This is useful for accessing Datadog APIs that require authentication with user-specific credentials.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_key_name", + "required": true, + "description": "The name of the application key to be created for the current user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "application_key_resource_type", + "required": true, + "description": "Specifies the resource type, should always be 'application_keys'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "application_key_scopes", + "required": false, + "description": "List of scopes to grant the application key for accessing specific resources.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.scopes" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCurrentUserApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/current_user/application_keys", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.name", + "tool_parameter_name": "application_key_name", + "description": "Name of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.scopes", + "tool_parameter_name": "application_key_scopes", + "description": "Array of scopes to grant the application key.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "application_key_resource_type", + "description": "Application Keys resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "application_keys", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to create an application key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object used to create an application key.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes used to create an application Key.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the application key.\",\n \"example\": \"Application Key for managing dashboards\",\n \"type\": \"string\"\n },\n \"scopes\": {\n \"description\": \"Array of scopes to grant the application key.\",\n \"example\": [\n \"dashboards_read\",\n \"dashboards_write\",\n \"dashboards_public_share\"\n ],\n \"items\": {\n \"description\": \"Name of scope.\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"application_keys\",\n \"description\": \"Application Keys resource type.\",\n \"enum\": [\n \"application_keys\"\n ],\n \"example\": \"application_keys\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPLICATION_KEYS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWafCustomRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWafCustomRule.json new file mode 100644 index 00000000..10cb5926 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWafCustomRule.json @@ -0,0 +1,730 @@ +{ + "name": "CreateWafCustomRule", + "fully_qualified_name": "DatadogApi.CreateWafCustomRule@0.1.0", + "description": "Create a new web application firewall custom rule.\n\nUse this tool to define a new custom rule for the web application firewall, enhancing security configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "waf_custom_rule_definition", + "required": true, + "description": "JSON object defining the new WAF custom rule. Includes attributes, conditions, name, path_glob, scope, tags, and type (always 'custom_rule').", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "redirect_request", + "block_request" + ], + "properties": null, + "inner_properties": null, + "description": "Override the default action to take when the WAF custom rule would block." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "location": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The location to redirect to when the WAF custom rule triggers." + }, + "status_code": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The status code to return when the WAF custom rule triggers." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleActionParameters` object." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleAction` object." + }, + "blocking": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule will block the request." + }, + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "match_regex", + "!match_regex", + "phrase_match", + "!phrase_match", + "is_xss", + "is_sqli", + "exact_match", + "!exact_match", + "ip_match", + "!ip_match", + "capture_data" + ], + "properties": null, + "inner_properties": null, + "description": "Operator to use for the WAF Condition." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter." + }, + "inputs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "server.db.statement", + "server.io.fs.file", + "server.io.net.url", + "server.sys.shell.cmd", + "server.request.method", + "server.request.uri.raw", + "server.request.path_params", + "server.request.query", + "server.request.headers.no_cookies", + "server.request.cookies", + "server.request.trailers", + "server.request.body", + "server.response.status", + "server.response.headers.no_cookies", + "server.response.trailers", + "grpc.server.request.metadata", + "grpc.server.request.message", + "grpc.server.method", + "graphql.server.all_resolvers", + "usr.id", + "http.client_ip" + ], + "properties": null, + "inner_properties": null, + "description": "Input from the request on which the condition should apply." + }, + "key_path": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific path for the input." + } + }, + "description": "List of inputs on which at least one should match with the given operator." + }, + "list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and\n!exact_match operator." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_sensitive": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Evaluate the value as case sensitive." + }, + "min_length": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only evaluate this condition if the value has a minimum amount of characters." + } + }, + "inner_properties": null, + "description": "Options for the operator of this condition." + }, + "regex": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Regex to use with the condition. Only used with match_regex and !match_regex operator." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Store the captured value in the specified tag name. Only used with the capture_data operator." + } + }, + "inner_properties": null, + "description": "The scope of the WAF custom rule." + } + }, + "description": "Conditions for which the WAF Custom Rule will triggers, all conditions needs to match in order for the WAF\nrule to trigger" + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Name of the WAF custom rule." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path glob for the WAF custom rule." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The environment scope for the WAF custom rule." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service scope for the WAF custom rule." + } + }, + "description": "The scope of the WAF custom rule." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "attack_attempt", + "business_logic", + "security_response" + ], + "properties": null, + "inner_properties": null, + "description": "The category of the WAF Rule, can be either `business_logic`, `attack_attempt` or `security_response`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the WAF rule, associated with the category will form the security activity." + } + }, + "inner_properties": null, + "description": "Tags associated with the WAF Custom Rule. The concatenation of category and type will form the security\nactivity field associated with the traces." + } + }, + "inner_properties": null, + "description": "Create a new WAF custom rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_rule`." + } + }, + "inner_properties": null, + "description": "Object for a single WAF custom rule." + } + }, + "inner_properties": null, + "description": "The definition of the new WAF Custom Rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateApplicationSecurityWafCustomRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "waf_custom_rule_definition", + "description": "The definition of the new WAF Custom Rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "redirect_request", + "block_request" + ], + "properties": null, + "inner_properties": null, + "description": "Override the default action to take when the WAF custom rule would block." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "location": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The location to redirect to when the WAF custom rule triggers." + }, + "status_code": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The status code to return when the WAF custom rule triggers." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleActionParameters` object." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleAction` object." + }, + "blocking": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule will block the request." + }, + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "match_regex", + "!match_regex", + "phrase_match", + "!phrase_match", + "is_xss", + "is_sqli", + "exact_match", + "!exact_match", + "ip_match", + "!ip_match", + "capture_data" + ], + "properties": null, + "inner_properties": null, + "description": "Operator to use for the WAF Condition." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter." + }, + "inputs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "server.db.statement", + "server.io.fs.file", + "server.io.net.url", + "server.sys.shell.cmd", + "server.request.method", + "server.request.uri.raw", + "server.request.path_params", + "server.request.query", + "server.request.headers.no_cookies", + "server.request.cookies", + "server.request.trailers", + "server.request.body", + "server.response.status", + "server.response.headers.no_cookies", + "server.response.trailers", + "grpc.server.request.metadata", + "grpc.server.request.message", + "grpc.server.method", + "graphql.server.all_resolvers", + "usr.id", + "http.client_ip" + ], + "properties": null, + "inner_properties": null, + "description": "Input from the request on which the condition should apply." + }, + "key_path": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific path for the input." + } + }, + "description": "List of inputs on which at least one should match with the given operator." + }, + "list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and\n!exact_match operator." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_sensitive": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Evaluate the value as case sensitive." + }, + "min_length": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only evaluate this condition if the value has a minimum amount of characters." + } + }, + "inner_properties": null, + "description": "Options for the operator of this condition." + }, + "regex": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Regex to use with the condition. Only used with match_regex and !match_regex operator." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Store the captured value in the specified tag name. Only used with the capture_data operator." + } + }, + "inner_properties": null, + "description": "The scope of the WAF custom rule." + } + }, + "description": "Conditions for which the WAF Custom Rule will triggers, all conditions needs to match in order for the WAF\nrule to trigger" + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Name of the WAF custom rule." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path glob for the WAF custom rule." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The environment scope for the WAF custom rule." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service scope for the WAF custom rule." + } + }, + "description": "The scope of the WAF custom rule." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "attack_attempt", + "business_logic", + "security_response" + ], + "properties": null, + "inner_properties": null, + "description": "The category of the WAF Rule, can be either `business_logic`, `attack_attempt` or `security_response`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the WAF rule, associated with the category will form the security activity." + } + }, + "inner_properties": null, + "description": "Tags associated with the WAF Custom Rule. The concatenation of category and type will form the security\nactivity field associated with the traces." + } + }, + "inner_properties": null, + "description": "Create a new WAF custom rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_rule`." + } + }, + "inner_properties": null, + "description": "Object for a single WAF custom rule." + } + }, + "inner_properties": null, + "description": "The definition of the new WAF Custom Rule." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the custom rule to create.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single WAF custom rule.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Create a new WAF custom rule.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The definition of `ApplicationSecurityWafCustomRuleAction` object.\",\n \"properties\": {\n \"action\": {\n \"default\": \"block_request\",\n \"description\": \"Override the default action to take when the WAF custom rule would block.\",\n \"enum\": [\n \"redirect_request\",\n \"block_request\"\n ],\n \"example\": \"block_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDIRECT_REQUEST\",\n \"BLOCK_REQUEST\"\n ]\n },\n \"parameters\": {\n \"description\": \"The definition of `ApplicationSecurityWafCustomRuleActionParameters` object.\",\n \"properties\": {\n \"location\": {\n \"description\": \"The location to redirect to when the WAF custom rule triggers.\",\n \"example\": \"/blocking\",\n \"type\": \"string\"\n },\n \"status_code\": {\n \"default\": 403,\n \"description\": \"The status code to return when the WAF custom rule triggers.\",\n \"example\": 403,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"blocking\": {\n \"description\": \"Indicates whether the WAF custom rule will block the request.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"conditions\": {\n \"description\": \"Conditions for which the WAF Custom Rule will triggers, all conditions needs to match in order for the WAF\\nrule to trigger\",\n \"items\": {\n \"description\": \"One condition of the WAF Custom Rule.\",\n \"properties\": {\n \"operator\": {\n \"description\": \"Operator to use for the WAF Condition.\",\n \"enum\": [\n \"match_regex\",\n \"!match_regex\",\n \"phrase_match\",\n \"!phrase_match\",\n \"is_xss\",\n \"is_sqli\",\n \"exact_match\",\n \"!exact_match\",\n \"ip_match\",\n \"!ip_match\",\n \"capture_data\"\n ],\n \"example\": \"match_regex\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MATCH_REGEX\",\n \"NOT_MATCH_REGEX\",\n \"PHRASE_MATCH\",\n \"NOT_PHRASE_MATCH\",\n \"IS_XSS\",\n \"IS_SQLI\",\n \"EXACT_MATCH\",\n \"NOT_EXACT_MATCH\",\n \"IP_MATCH\",\n \"NOT_IP_MATCH\",\n \"CAPTURE_DATA\"\n ]\n },\n \"parameters\": {\n \"description\": \"The scope of the WAF custom rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter.\",\n \"example\": \"blocked_users\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"List of inputs on which at least one should match with the given operator.\",\n \"items\": {\n \"description\": \"Input from the request on which the condition should apply.\",\n \"properties\": {\n \"address\": {\n \"description\": \"Input from the request on which the condition should apply.\",\n \"enum\": [\n \"server.db.statement\",\n \"server.io.fs.file\",\n \"server.io.net.url\",\n \"server.sys.shell.cmd\",\n \"server.request.method\",\n \"server.request.uri.raw\",\n \"server.request.path_params\",\n \"server.request.query\",\n \"server.request.headers.no_cookies\",\n \"server.request.cookies\",\n \"server.request.trailers\",\n \"server.request.body\",\n \"server.response.status\",\n \"server.response.headers.no_cookies\",\n \"server.response.trailers\",\n \"grpc.server.request.metadata\",\n \"grpc.server.request.message\",\n \"grpc.server.method\",\n \"graphql.server.all_resolvers\",\n \"usr.id\",\n \"http.client_ip\"\n ],\n \"example\": \"server.db.statement\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SERVER_DB_STATEMENT\",\n \"SERVER_IO_FS_FILE\",\n \"SERVER_IO_NET_URL\",\n \"SERVER_SYS_SHELL_CMD\",\n \"SERVER_REQUEST_METHOD\",\n \"SERVER_REQUEST_URI_RAW\",\n \"SERVER_REQUEST_PATH_PARAMS\",\n \"SERVER_REQUEST_QUERY\",\n \"SERVER_REQUEST_HEADERS_NO_COOKIES\",\n \"SERVER_REQUEST_COOKIES\",\n \"SERVER_REQUEST_TRAILERS\",\n \"SERVER_REQUEST_BODY\",\n \"SERVER_RESPONSE_STATUS\",\n \"SERVER_RESPONSE_HEADERS_NO_COOKIES\",\n \"SERVER_RESPONSE_TRAILERS\",\n \"GRPC_SERVER_REQUEST_METADATA\",\n \"GRPC_SERVER_REQUEST_MESSAGE\",\n \"GRPC_SERVER_METHOD\",\n \"GRAPHQL_SERVER_ALL_RESOLVERS\",\n \"USR_ID\",\n \"HTTP_CLIENT_IP\"\n ]\n },\n \"key_path\": {\n \"description\": \"Specific path for the input.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"list\": {\n \"description\": \"List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and\\n!exact_match operator.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"Options for the operator of this condition.\",\n \"properties\": {\n \"case_sensitive\": {\n \"default\": false,\n \"description\": \"Evaluate the value as case sensitive.\",\n \"type\": \"boolean\"\n },\n \"min_length\": {\n \"default\": 0,\n \"description\": \"Only evaluate this condition if the value has a minimum amount of characters.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"description\": \"Regex to use with the condition. Only used with match_regex and !match_regex operator.\",\n \"example\": \"path.*\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Store the captured value in the specified tag name. Only used with the capture_data operator.\",\n \"example\": \"custom_tag\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"inputs\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"operator\",\n \"parameters\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"Indicates whether the WAF custom rule is enabled.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The Name of the WAF custom rule.\",\n \"example\": \"Block request from a bad useragent\",\n \"type\": \"string\"\n },\n \"path_glob\": {\n \"description\": \"The path glob for the WAF custom rule.\",\n \"example\": \"/api/search/*\",\n \"type\": \"string\"\n },\n \"scope\": {\n \"description\": \"The scope of the WAF custom rule.\",\n \"items\": {\n \"description\": \"The scope of the WAF custom rule.\",\n \"properties\": {\n \"env\": {\n \"description\": \"The environment scope for the WAF custom rule.\",\n \"example\": \"prod\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The service scope for the WAF custom rule.\",\n \"example\": \"billing-service\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"service\",\n \"env\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Tags associated with the WAF Custom Rule. The concatenation of category and type will form the security\\nactivity field associated with the traces.\",\n \"maxProperties\": 32,\n \"properties\": {\n \"category\": {\n \"description\": \"The category of the WAF Rule, can be either `business_logic`, `attack_attempt` or `security_response`.\",\n \"enum\": [\n \"attack_attempt\",\n \"business_logic\",\n \"security_response\"\n ],\n \"example\": \"business_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ATTACK_ATTEMPT\",\n \"BUSINESS_LOGIC\",\n \"SECURITY_RESPONSE\"\n ]\n },\n \"type\": {\n \"description\": \"The type of the WAF rule, associated with the category will form the security activity.\",\n \"example\": \"users.login.success\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"category\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"enabled\",\n \"blocking\",\n \"name\",\n \"tags\",\n \"conditions\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"custom_rule\",\n \"description\": \"The type of the resource. The value should always be `custom_rule`.\",\n \"enum\": [\n \"custom_rule\"\n ],\n \"example\": \"custom_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_RULE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new WAF Custom Rule.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWafExclusionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWafExclusionFilter.json new file mode 100644 index 00000000..b231a286 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWafExclusionFilter.json @@ -0,0 +1,418 @@ +{ + "name": "CreateWafExclusionFilter", + "fully_qualified_name": "DatadogApi.CreateWafExclusionFilter@0.1.0", + "description": "Create a new WAF exclusion filter in Datadog.\n\nUse this tool to create a new Web Application Firewall (WAF) exclusion filter in Datadog. Exclusion filters help in preventing certain requests from being processed by the WAF, acting as passlist entries. Ideal for managing application security settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "exclusion_filter_definition", + "required": true, + "description": "The detailed configuration for the new WAF exclusion filter including attributes like description, IP list, path glob, and scope.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 description for the exclusion filter." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the exclusion filter is enabled." + }, + "ip_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client IP addresses matched by the exclusion filter (CIDR notation is supported)." + }, + "on_match": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor" + ], + "properties": null, + "inner_properties": null, + "description": "The action taken when the exclusion filter matches. When set to `monitor`, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The HTTP path glob expression matched by the exclusion filter." + }, + "rules_target": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target a single WAF rule based on its identifier." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the targeted WAF rules." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the targeted WAF rules." + } + }, + "inner_properties": null, + "description": "Target multiple WAF rules based on their tags." + } + }, + "description": "The WAF rules targeted by the exclusion filter." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this environment." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this service." + } + }, + "description": "The services where the exclusion filter is deployed." + } + }, + "inner_properties": null, + "description": "Attributes for creating a WAF exclusion filter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "exclusion_filter" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the resource. The value should always be `exclusion_filter`." + } + }, + "inner_properties": null, + "description": "Object for creating a single WAF exclusion filter." + } + }, + "inner_properties": null, + "description": "The definition of the new WAF exclusion filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateApplicationSecurityWafExclusionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "exclusion_filter_definition", + "description": "The definition of the new WAF exclusion filter.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 description for the exclusion filter." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the exclusion filter is enabled." + }, + "ip_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client IP addresses matched by the exclusion filter (CIDR notation is supported)." + }, + "on_match": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor" + ], + "properties": null, + "inner_properties": null, + "description": "The action taken when the exclusion filter matches. When set to `monitor`, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The HTTP path glob expression matched by the exclusion filter." + }, + "rules_target": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target a single WAF rule based on its identifier." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the targeted WAF rules." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the targeted WAF rules." + } + }, + "inner_properties": null, + "description": "Target multiple WAF rules based on their tags." + } + }, + "description": "The WAF rules targeted by the exclusion filter." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this environment." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this service." + } + }, + "description": "The services where the exclusion filter is deployed." + } + }, + "inner_properties": null, + "description": "Attributes for creating a WAF exclusion filter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "exclusion_filter" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the resource. The value should always be `exclusion_filter`." + } + }, + "inner_properties": null, + "description": "Object for creating a single WAF exclusion filter." + } + }, + "inner_properties": null, + "description": "The definition of the new WAF exclusion filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object for creating a single WAF exclusion filter.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for creating a single WAF exclusion filter.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for creating a WAF exclusion filter.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A description for the exclusion filter.\",\n \"example\": \"Exclude false positives on a path\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Indicates whether the exclusion filter is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"ip_list\": {\n \"description\": \"The client IP addresses matched by the exclusion filter (CIDR notation is supported).\",\n \"items\": {\n \"example\": \"198.51.100.72\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"on_match\": {\n \"description\": \"The action taken when the exclusion filter matches. When set to `monitor`, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked.\",\n \"enum\": [\n \"monitor\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR\"\n ]\n },\n \"parameters\": {\n \"description\": \"A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character.\",\n \"items\": {\n \"example\": \"list.search.query\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path_glob\": {\n \"description\": \"The HTTP path glob expression matched by the exclusion filter.\",\n \"example\": \"/accounts/*\",\n \"type\": \"string\"\n },\n \"rules_target\": {\n \"description\": \"The WAF rules targeted by the exclusion filter.\",\n \"items\": {\n \"description\": \"Target WAF rules based either on an identifier or tags.\",\n \"properties\": {\n \"rule_id\": {\n \"description\": \"Target a single WAF rule based on its identifier.\",\n \"example\": \"dog-913-009\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Target multiple WAF rules based on their tags.\",\n \"properties\": {\n \"category\": {\n \"description\": \"The category of the targeted WAF rules.\",\n \"example\": \"attack_attempt\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the targeted WAF rules.\",\n \"example\": \"lfi\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"scope\": {\n \"description\": \"The services where the exclusion filter is deployed.\",\n \"items\": {\n \"description\": \"Deploy on services based on their environment and/or service name.\",\n \"properties\": {\n \"env\": {\n \"description\": \"Deploy on this environment.\",\n \"example\": \"www\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Deploy on this service.\",\n \"example\": \"prod\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"description\",\n \"enabled\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"exclusion_filter\",\n \"description\": \"Type of the resource. The value should always be `exclusion_filter`.\",\n \"enum\": [\n \"exclusion_filter\"\n ],\n \"example\": \"exclusion_filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EXCLUSION_FILTER\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new WAF exclusion filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkflowWebhookHandle.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkflowWebhookHandle.json new file mode 100644 index 00000000..d49ebe7e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkflowWebhookHandle.json @@ -0,0 +1,196 @@ +{ + "name": "CreateWorkflowWebhookHandle", + "fully_qualified_name": "DatadogApi.CreateWorkflowWebhookHandle@0.1.0", + "description": "Create a webhook handle for Datadog Microsoft Teams integration.\n\nUse this tool to create a Workflows webhook handle within the Datadog Microsoft Teams integration. It is useful when setting up or managing integrations between Datadog workflows and Microsoft Teams for real-time alerts and notifications.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "webhook_handle_name", + "required": true, + "description": "Name of the Workflows Webhook handle for Datadog Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook handle name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "webhook_url", + "required": true, + "description": "The URL for the Workflows Webhook in the Datadog Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook URL." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.url" + }, + { + "name": "webhook_handle_resource_type", + "required": true, + "description": "Specifies the resource type for the Workflows webhook handle. Must be 'workflows-webhook-handle'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows-webhook-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the Workflows webhook handle resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateWorkflowsWebhookHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.name", + "tool_parameter_name": "webhook_handle_name", + "description": "Workflows Webhook handle name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook handle name." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.url", + "tool_parameter_name": "webhook_url", + "description": "Workflows Webhook URL.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook URL." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "webhook_handle_resource_type", + "description": "Specifies the Workflows webhook handle resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows-webhook-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the Workflows webhook handle resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "workflows-webhook-handle", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create Workflows webhook handle request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Workflows Webhook handle data from a response.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Workflows Webhook handle attributes.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Workflows Webhook handle name.\",\n \"example\": \"fake-handle-name\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Workflows Webhook URL.\",\n \"example\": \"https://fake.url.com\",\n \"maxLength\": 255,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"workflows-webhook-handle\",\n \"description\": \"Specifies the Workflows webhook handle resource type.\",\n \"enum\": [\n \"workflows-webhook-handle\"\n ],\n \"example\": \"workflows-webhook-handle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"WORKFLOWS_WEBHOOK_HANDLE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Workflows Webhook handle payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkloadProtectionPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkloadProtectionPolicy.json new file mode 100644 index 00000000..7ffd3e6e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkloadProtectionPolicy.json @@ -0,0 +1,295 @@ +{ + "name": "CreateWorkloadProtectionPolicy", + "fully_qualified_name": "DatadogApi.CreateWorkloadProtectionPolicy@0.1.0", + "description": "Create a new Workload Protection policy for cloud workloads.\n\nThis tool allows you to create a new Workload Protection policy using specified parameters. It is used to enhance security for cloud workloads by defining protection policies. Note: This endpoint is not available for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "policy_name", + "required": true, + "description": "The name of the workload protection policy to be created.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "resource_type", + "required": true, + "description": "Specifies the type of the resource. Must always be set to 'policy'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policy" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `policy`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "policy_description", + "required": false, + "description": "Provide a description for the new workload protection policy.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "host_tags_for_policy_deployment", + "required": false, + "description": "List of host tags to define where the policy is deployed. Each tag must be a string.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.hostTags" + }, + { + "name": "host_tags_configuration", + "required": false, + "description": "Host tags for policy deployment: inner values linked with AND, outer with OR.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.hostTagsLists" + }, + { + "name": "policy_enabled", + "required": false, + "description": "Set to true to enable the workload protection policy.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the policy is enabled" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCSMThreatsAgentPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/policy", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.description", + "tool_parameter_name": "policy_description", + "description": "The description of the policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the policy" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "policy_enabled", + "description": "Whether the policy is enabled", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the policy is enabled" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.hostTags", + "tool_parameter_name": "host_tags_for_policy_deployment", + "description": "The host tags defining where this policy is deployed", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.hostTagsLists", + "tool_parameter_name": "host_tags_configuration", + "description": "The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "policy_name", + "description": "The name of the policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the policy" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource, must always be `policy`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policy" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `policy`" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "policy", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the Agent policy to create\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single Agent rule\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Create a new Cloud Workload Security Agent policy\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the policy\",\n \"example\": \"My agent policy\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Whether the policy is enabled\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"hostTags\": {\n \"description\": \"The host tags defining where this policy is deployed\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostTagsLists\": {\n \"description\": \"The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR\",\n \"items\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the policy\",\n \"example\": \"my_agent_policy\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"policy\",\n \"description\": \"The type of the resource, must always be `policy`\",\n \"enum\": [\n \"policy\"\n ],\n \"example\": \"policy\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"POLICY\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new Agent policy\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkloadProtectionRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkloadProtectionRule.json new file mode 100644 index 00000000..b2d68e19 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/CreateWorkloadProtectionRule.json @@ -0,0 +1,704 @@ +{ + "name": "CreateWorkloadProtectionRule", + "fully_qualified_name": "DatadogApi.CreateWorkloadProtectionRule@0.1.0", + "description": "Create a new Workload Protection agent rule.\n\nUse this tool to create a new Workload Protection agent rule with specified parameters. Note that this endpoint is not available for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_definition", + "required": true, + "description": "A JSON object defining the new Workload Protection agent rule, including actions, metadata, scope, and constraint details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent." + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule." + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled." + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule." + }, + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The platforms the Agent rule is supported on." + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Agent rule." + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved." + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule." + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Create a new Cloud Workload Security Agent rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "The definition of the new agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateCSMThreatsAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "agent_rule_definition", + "description": "The definition of the new agent rule", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent." + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule." + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled." + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule." + }, + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The platforms the Agent rule is supported on." + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Agent rule." + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved." + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule." + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Create a new Cloud Workload Security Agent rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "The definition of the new agent rule" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the Agent rule to create\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single Agent rule\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Create a new Cloud Workload Security Agent rule.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"The array of actions the rule can perform if triggered\",\n \"items\": {\n \"description\": \"The action the rule can perform if triggered\",\n \"properties\": {\n \"filter\": {\n \"description\": \"SECL expression used to target the container to apply the action on\",\n \"type\": \"string\"\n },\n \"hash\": {\n \"additionalProperties\": {},\n \"description\": \"An empty object indicating the hash action\",\n \"type\": \"object\"\n },\n \"kill\": {\n \"description\": \"Kill system call applied on the container matching the rule\",\n \"properties\": {\n \"signal\": {\n \"description\": \"Supported signals for the kill system call\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"The metadata action applied on the scope matching the rule\",\n \"properties\": {\n \"image_tag\": {\n \"description\": \"The image tag of the metadata action\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The service of the metadata action\",\n \"type\": \"string\"\n },\n \"short_image\": {\n \"description\": \"The short image of the metadata action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"set\": {\n \"description\": \"The set action applied on the scope matching the rule\",\n \"properties\": {\n \"append\": {\n \"description\": \"Whether the value should be appended to the field.\",\n \"type\": \"boolean\"\n },\n \"default_value\": {\n \"description\": \"The default value of the set action\",\n \"type\": \"string\"\n },\n \"expression\": {\n \"description\": \"The expression of the set action.\",\n \"type\": \"string\"\n },\n \"field\": {\n \"description\": \"The field of the set action\",\n \"type\": \"string\"\n },\n \"inherited\": {\n \"description\": \"Whether the value should be inherited.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The name of the set action\",\n \"type\": \"string\"\n },\n \"scope\": {\n \"description\": \"The scope of the set action.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"The size of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"ttl\": {\n \"description\": \"The time to live of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"The value of the set action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"agent_version\": {\n \"description\": \"Constrain the rule to specific versions of the Datadog Agent.\",\n \"type\": \"string\"\n },\n \"blocking\": {\n \"description\": \"The blocking policies that the rule belongs to.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"The description of the Agent rule.\",\n \"example\": \"My Agent rule\",\n \"type\": \"string\"\n },\n \"disabled\": {\n \"description\": \"The disabled policies that the rule belongs to.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"Whether the Agent rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"expression\": {\n \"description\": \"The SECL expression of the Agent rule.\",\n \"example\": \"exec.file.name == \\\"sh\\\"\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"The platforms the Agent rule is supported on.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"monitoring\": {\n \"description\": \"The monitoring policies that the rule belongs to.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the Agent rule.\",\n \"example\": \"my_agent_rule\",\n \"type\": \"string\"\n },\n \"policy_id\": {\n \"description\": \"The ID of the policy where the Agent rule is saved.\",\n \"example\": \"a8c8e364-6556-434d-b798-a4c23de29c0b\",\n \"type\": \"string\"\n },\n \"product_tags\": {\n \"description\": \"The list of product tags associated with the rule.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"silent\": {\n \"description\": \"Whether the rule is silent.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"agent_rule\",\n \"description\": \"The type of the resource, must always be `agent_rule`\",\n \"enum\": [\n \"agent_rule\"\n ],\n \"example\": \"agent_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AGENT_RULE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the new agent rule\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteActionConnection.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteActionConnection.json new file mode 100644 index 00000000..f3158336 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteActionConnection.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteActionConnection", + "fully_qualified_name": "DatadogApi.DeleteActionConnection@0.1.0", + "description": "Delete an existing action connection in Datadog.\n\nUse this tool to delete a specific action connection in Datadog. Appropriate permissions via a registered application key are required to perform this action.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "action_connection_id", + "required": true, + "description": "The unique identifier for the action connection to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the action connection" + }, + "inferrable": true, + "http_endpoint_parameter_name": "connection_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteActionConnection'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/connections/{connection_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "connection_id", + "tool_parameter_name": "action_connection_id", + "description": "The ID of the action connection", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the action connection" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteApmRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteApmRetentionFilter.json new file mode 100644 index 00000000..4e3bf96f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteApmRetentionFilter.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteApmRetentionFilter", + "fully_qualified_name": "DatadogApi.DeleteApmRetentionFilter@0.1.0", + "description": "Delete a specific APM retention filter from your organization.\n\nUse this tool to delete a specific retention filter in Datadog's APM configuration. Note that default filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be deleted.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "retention_filter_id", + "required": true, + "description": "The ID of the retention filter to delete. Default filters cannot be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteApmRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/retention-filters/{filter_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "filter_id", + "tool_parameter_name": "retention_filter_id", + "description": "The ID of the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteApp.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteApp.json new file mode 100644 index 00000000..167a7f07 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteApp.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteApp", + "fully_qualified_name": "DatadogApi.DeleteApp@0.1.0", + "description": "Delete a specific app in Datadog.\n\nUse this tool to delete a specific app in Datadog. Ensure you have the necessary application key registered or permissions configured in the UI before attempting to delete.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_id", + "required": true, + "description": "The ID of the app to delete in Datadog. Ensure this ID is accurate to avoid unintentional deletions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to delete." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteApp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "app_id", + "description": "The ID of the app to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to delete." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAuthnMapping.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAuthnMapping.json new file mode 100644 index 00000000..7b882c62 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAuthnMapping.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteAuthnMapping", + "fully_qualified_name": "DatadogApi.DeleteAuthnMapping@0.1.0", + "description": "Delete an AuthN Mapping using its UUID.\n\nUse this tool to delete a specific AuthN Mapping by providing its unique identifier (UUID).", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "authn_mapping_uuid", + "required": true, + "description": "The unique identifier (UUID) of the AuthN Mapping to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the AuthN Mapping." + }, + "inferrable": true, + "http_endpoint_parameter_name": "authn_mapping_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteAuthNMapping'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/authn_mappings/{authn_mapping_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "authn_mapping_id", + "tool_parameter_name": "authn_mapping_uuid", + "description": "The UUID of the AuthN Mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the AuthN Mapping." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAwsAccountConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAwsAccountConfig.json new file mode 100644 index 00000000..420c19d6 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAwsAccountConfig.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteAwsAccountConfig", + "fully_qualified_name": "DatadogApi.DeleteAwsAccountConfig@0.1.0", + "description": "Delete an AWS account integration by config ID.\n\nUse this tool to delete an AWS account integration configuration in Datadog by specifying the config ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_configuration_id", + "required": true, + "description": "Unique Datadog ID for the AWS Account Integration Config. Obtain this ID via the 'List all AWS integrations' Datadog endpoint.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "aws_account_config_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteAWSAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/accounts/{aws_account_config_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "aws_account_config_id", + "tool_parameter_name": "aws_account_configuration_id", + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAwsScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAwsScanOptions.json new file mode 100644 index 00000000..4b8c46d2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAwsScanOptions.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteAwsScanOptions", + "fully_qualified_name": "DatadogApi.DeleteAwsScanOptions@0.1.0", + "description": "Delete Agentless scan options for an AWS account.\n\nUse this tool to delete Agentless scan options configured for a specific AWS account. Ideal for managing AWS account security settings through Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_id", + "required": true, + "description": "The unique identifier for the AWS account whose scan options you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of an AWS account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteAwsScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "aws_account_id", + "description": "The ID of an AWS account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of an AWS account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAzureSubscriptionScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAzureSubscriptionScanOptions.json new file mode 100644 index 00000000..26d6cd5e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteAzureSubscriptionScanOptions.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteAzureSubscriptionScanOptions", + "fully_qualified_name": "DatadogApi.DeleteAzureSubscriptionScanOptions@0.1.0", + "description": "Delete scan options for an Azure subscription.\n\nUse this tool to delete agentless scan options for a specified Azure subscription. It should be called when there is a need to remove scan settings associated with Azure resources.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "azure_subscription_id", + "required": true, + "description": "The unique identifier for the Azure subscription whose scan options you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "subscription_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteAzureScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure/{subscription_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "subscription_id", + "tool_parameter_name": "azure_subscription_id", + "description": "The Azure subscription ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteBudget.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteBudget.json new file mode 100644 index 00000000..38d3a703 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteBudget.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteBudget", + "fully_qualified_name": "DatadogApi.DeleteBudget@0.1.0", + "description": "Delete a specified budget.\n\nUse this tool to delete a budget by its ID. It should be called when you want to remove an existing budget from the system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "budget_id", + "required": true, + "description": "The unique identifier for the budget to be deleted. This ID is required to specify which budget to remove from the system.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budget id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "budget_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteBudget'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/budget/{budget_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "budget_id", + "tool_parameter_name": "budget_id", + "description": "Budget id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budget id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteBulkTagsMetrics.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteBulkTagsMetrics.json new file mode 100644 index 00000000..49b0703f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteBulkTagsMetrics.json @@ -0,0 +1,196 @@ +{ + "name": "DeleteBulkTagsMetrics", + "fully_qualified_name": "DatadogApi.DeleteBulkTagsMetrics@0.1.0", + "description": "Delete custom lists of queryable tag keys for metrics.\n\nThis tool deletes all custom queryable tag keys for a given set of metrics identified by a name prefix. It is used with application keys that have 'Manage Tags for Metrics' permission and can notify specified account emails on completion.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name_prefix", + "required": true, + "description": "A text prefix to match against metric names for tag deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A text prefix to match against metric names." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "metric_bulk_configure_tags_resource", + "required": true, + "description": "The identifier for the metric bulk configure tags resource, which should be 'metric_bulk_configure_tags'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "metric_bulk_configure_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric bulk configure tags resource." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "notification_emails", + "required": false, + "description": "A list of account emails to notify when the configuration is applied.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of account emails to notify when the configuration is applied." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.emails" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteBulkTagsMetricsConfiguration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/config/bulk-tags", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.emails", + "tool_parameter_name": "notification_emails", + "description": "A list of account emails to notify when the configuration is applied.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of account emails to notify when the configuration is applied." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "metric_name_prefix", + "description": "A text prefix to match against metric names.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A text prefix to match against metric names." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "metric_bulk_configure_tags_resource", + "description": "The metric bulk configure tags resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "metric_bulk_configure_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric bulk configure tags resource." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "metric_bulk_configure_tags", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Wrapper object for a single bulk tag deletion request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Request object to bulk delete all tag configurations for metrics matching the given prefix.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Optional parameters for bulk deleting metric tag configurations.\",\n \"properties\": {\n \"emails\": {\n \"description\": \"A list of account emails to notify when the configuration is applied.\",\n \"example\": [\n \"sue@example.com\",\n \"bob@example.com\"\n ],\n \"items\": {\n \"description\": \"An email address.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"A text prefix to match against metric names.\",\n \"example\": \"kafka.lag\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"metric_bulk_configure_tags\",\n \"description\": \"The metric bulk configure tags resource.\",\n \"enum\": [\n \"metric_bulk_configure_tags\"\n ],\n \"example\": \"metric_bulk_configure_tags\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BULK_MANAGE_TAGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseComment.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseComment.json new file mode 100644 index 00000000..65533b01 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseComment.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteCaseComment", + "fully_qualified_name": "DatadogApi.DeleteCaseComment@0.1.0", + "description": "Deletes a specific comment from a case.\n\nUse this tool to delete a comment from a specified case by providing the case and comment identifiers. It is useful for managing and maintaining relevant information within cases by removing unnecessary or outdated comments.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier or key of the case for which the comment will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "timeline_cell_uuid", + "required": true, + "description": "The UUID of the timeline cell containing the comment to be deleted. Required for specifying the exact comment.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timeline cell's UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "cell_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCaseComment'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/comment/{cell_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "cell_id", + "tool_parameter_name": "timeline_cell_uuid", + "description": "Timeline cell's UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timeline cell's UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseCustomAttribute.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseCustomAttribute.json new file mode 100644 index 00000000..b5a013ab --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseCustomAttribute.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteCaseCustomAttribute", + "fully_qualified_name": "DatadogApi.DeleteCaseCustomAttribute@0.1.0", + "description": "Removes a custom attribute from a specified case.\n\nThis tool is used to delete a custom attribute from a specific case in Datadog. It should be called when you need to remove a particular custom attribute key from a case.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier or key of the case from which the custom attribute is to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "case_custom_attribute_key", + "required": true, + "description": "The key of the custom attribute to be removed from a case.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case Custom attribute's key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_attribute_key" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCaseCustomAttribute'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/custom_attributes/{custom_attribute_key}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_attribute_key", + "tool_parameter_name": "case_custom_attribute_key", + "description": "Case Custom attribute's key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case Custom attribute's key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseType.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseType.json new file mode 100644 index 00000000..a5415348 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCaseType.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCaseType", + "fully_qualified_name": "DatadogApi.DeleteCaseType@0.1.0", + "description": "Delete a specific case type in Datadog.\n\nUse this tool to delete a specific case type by providing the case type ID. This is useful for managing and organizing case types within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_type_uuid", + "required": true, + "description": "The unique identifier (UUID) of the case type to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_type_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCaseType'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/types/{case_type_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "case_type_id", + "tool_parameter_name": "case_type_uuid", + "description": "Case type's UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCatalogEntity.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCatalogEntity.json new file mode 100644 index 00000000..f6bb1c15 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCatalogEntity.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCatalogEntity", + "fully_qualified_name": "DatadogApi.DeleteCatalogEntity@0.1.0", + "description": "Delete a single entity from the Software Catalog.\n\nThis tool deletes a specified entity in the Software Catalog using its entity ID. Call this tool when you need to remove an entity from the Datadog Software Catalog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "catalog_entity_identifier", + "required": true, + "description": "The UUID or Entity Reference for the entity to be deleted from the Software Catalog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID or Entity Ref." + }, + "inferrable": true, + "http_endpoint_parameter_name": "entity_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCatalogEntity'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/catalog/entity/{entity_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "entity_id", + "tool_parameter_name": "catalog_entity_identifier", + "description": "UUID or Entity Ref.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID or Entity Ref." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCatalogKind.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCatalogKind.json new file mode 100644 index 00000000..bffc60a5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCatalogKind.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCatalogKind", + "fully_qualified_name": "DatadogApi.DeleteCatalogKind@0.1.0", + "description": "Delete a kind from the Software Catalog.\n\nUse this tool to delete a specific kind from the Software Catalog using its identifier. This is useful for managing and organizing the catalog contents by removing obsolete or incorrect entries.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "catalog_kind_identifier", + "required": true, + "description": "The unique identifier for the kind to delete from the Software Catalog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Entity kind." + }, + "inferrable": true, + "http_endpoint_parameter_name": "kind_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCatalogKind'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/catalog/kind/{kind_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "kind_id", + "tool_parameter_name": "catalog_kind_identifier", + "description": "Entity kind.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Entity kind." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCloudWorkloadSecurityAgentRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCloudWorkloadSecurityAgentRule.json new file mode 100644 index 00000000..6547dbc5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCloudWorkloadSecurityAgentRule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCloudWorkloadSecurityAgentRule", + "fully_qualified_name": "DatadogApi.DeleteCloudWorkloadSecurityAgentRule@0.1.0", + "description": "Delete a specific cloud workload security agent rule.\n\nThis tool deletes a specific cloud workload security agent rule in the Datadog system, applicable only for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_identifier", + "required": true, + "description": "The unique identifier for the specific agent rule to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "agent_rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCloudWorkloadSecurityAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "agent_rule_id", + "tool_parameter_name": "agent_rule_identifier", + "description": "The ID of the Agent rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCloudflareAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCloudflareAccount.json new file mode 100644 index 00000000..48e7501e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCloudflareAccount.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCloudflareAccount", + "fully_qualified_name": "DatadogApi.DeleteCloudflareAccount@0.1.0", + "description": "Delete a Cloudflare account via Datadog integration.\n\nUse this tool to delete a specified Cloudflare account from Datadog's integrations. Call this tool when you need to remove an account linked to Cloudflare within the Datadog platform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloudflare_account_id", + "required": true, + "description": "The ID of the Cloudflare account to delete from Datadog. This should be a string matching the account ID format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCloudflareAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "cloudflare_account_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteConfluentAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteConfluentAccount.json new file mode 100644 index 00000000..79454288 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteConfluentAccount.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteConfluentAccount", + "fully_qualified_name": "DatadogApi.DeleteConfluentAccount@0.1.0", + "description": "Delete a Confluent account using the account ID.\n\nThis tool deletes a specified Confluent account by account ID in Datadog's system. It should be used when a user wants to remove a Confluent Cloud integration account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "The unique identifier for the Confluent Account to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteConfluentAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteConfluentResource.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteConfluentResource.json new file mode 100644 index 00000000..b191e045 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteConfluentResource.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteConfluentResource", + "fully_qualified_name": "DatadogApi.DeleteConfluentResource@0.1.0", + "description": "Deletes a specified Confluent resource in a Datadog account.\n\nUse this tool to delete a Confluent resource associated with a specific account in Datadog by providing the account ID and resource ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "The unique identifier for the Confluent account linked to the resource to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "confluent_resource_id", + "required": true, + "description": "A string representing the unique ID of the Confluent resource to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account Resource ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "resource_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteConfluentResource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resource_id", + "tool_parameter_name": "confluent_resource_id", + "description": "Confluent Account Resource ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account Resource ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomAllocationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomAllocationRule.json new file mode 100644 index 00000000..5b9a7b45 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomAllocationRule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCustomAllocationRule", + "fully_qualified_name": "DatadogApi.DeleteCustomAllocationRule@0.1.0", + "description": "Delete an existing custom allocation rule by ID.\n\nCall this tool to delete an existing custom allocation rule using its ID in Datadog's cost management API.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_allocation_rule_id", + "required": true, + "description": "The unique identifier of the custom allocation rule to be deleted.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the custom allocation rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCustomAllocationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/arbitrary_rule/{rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "custom_allocation_rule_id", + "description": "The unique identifier of the custom allocation rule", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the custom allocation rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomAttributeConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomAttributeConfig.json new file mode 100644 index 00000000..f8c6d2b9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomAttributeConfig.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteCustomAttributeConfig", + "fully_qualified_name": "DatadogApi.DeleteCustomAttributeConfig@0.1.0", + "description": "Deletes a custom attribute configuration for a case type.\n\nUse this tool to delete a specified custom attribute configuration from a case type in Datadog. It should be called when you need to remove an attribute configuration identified by a specific `case_type_id` and `custom_attribute_id`. Returns a confirmation of the deletion.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_type_uuid", + "required": true, + "description": "The UUID of the case type for which the custom attribute configuration should be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_type_id" + }, + { + "name": "custom_attribute_uuid", + "required": true, + "description": "The UUID of the case custom attribute to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case Custom attribute's UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_attribute_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCustomAttributeConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/types/{case_type_id}/custom_attributes/{custom_attribute_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "case_type_id", + "tool_parameter_name": "case_type_uuid", + "description": "Case type's UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_attribute_id", + "tool_parameter_name": "custom_attribute_uuid", + "description": "Case Custom attribute's UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case Custom attribute's UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomCostFile.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomCostFile.json new file mode 100644 index 00000000..d28dc637 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomCostFile.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCustomCostFile", + "fully_qualified_name": "DatadogApi.DeleteCustomCostFile@0.1.0", + "description": "Delete a specified custom costs file in Datadog.\n\nUse this tool to delete a specific custom costs file by providing its file ID. It can be called when a user needs to manage their cost files by removing outdated or unnecessary custom cost entries in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_cost_file_id", + "required": true, + "description": "The unique identifier of the custom costs file to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "file_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCustomCostsFile'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/custom_costs/{file_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "file_id", + "tool_parameter_name": "custom_cost_file_id", + "description": "File ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomFramework.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomFramework.json new file mode 100644 index 00000000..b00b071a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomFramework.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteCustomFramework", + "fully_qualified_name": "DatadogApi.DeleteCustomFramework@0.1.0", + "description": "Delete a custom framework from Datadog.\n\nThis tool deletes a specified custom framework in Datadog's cloud security management system. Use it when you need to remove an existing custom security framework by its handle and version.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "framework_handle", + "required": true, + "description": "The unique identifier for the custom framework to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework handle" + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle" + }, + { + "name": "framework_version", + "required": true, + "description": "Specify the version of the custom framework to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework version" + }, + "inferrable": true, + "http_endpoint_parameter_name": "version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCustomFramework'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "handle", + "tool_parameter_name": "framework_handle", + "description": "The framework handle", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework handle" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "version", + "tool_parameter_name": "framework_version", + "description": "The framework version", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework version" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomLogDestination.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomLogDestination.json new file mode 100644 index 00000000..43565547 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteCustomLogDestination.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteCustomLogDestination", + "fully_qualified_name": "DatadogApi.DeleteCustomLogDestination@0.1.0", + "description": "Delete a specific custom log destination.\n\nCall this tool to delete a specific custom log destination within your organization on Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_destination_id", + "required": true, + "description": "The unique identifier for the custom log destination to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom destination." + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_destination_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteLogsCustomDestination'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/custom-destinations/{custom_destination_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "custom_destination_id", + "tool_parameter_name": "custom_destination_id", + "description": "The ID of the custom destination.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom destination." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDashboardFromList.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDashboardFromList.json new file mode 100644 index 00000000..e7733225 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDashboardFromList.json @@ -0,0 +1,223 @@ +{ + "name": "DeleteDashboardFromList", + "fully_qualified_name": "DatadogApi.DeleteDashboardFromList@0.1.0", + "description": "Remove dashboards from a specified list in Datadog.\n\nUse this tool to delete one or more dashboards from an existing dashboard list in Datadog by specifying the list ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dashboard_list_identifier", + "required": true, + "description": "The unique integer ID of the dashboard list from which dashboards will be deleted.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to delete items from." + }, + "inferrable": true, + "http_endpoint_parameter_name": "dashboard_list_id" + }, + { + "name": "dashboards_to_delete", + "required": true, + "description": "A JSON array of dashboards to delete, each with an ID and type. The dashboard type can be 'custom_timeboard', 'custom_screenboard', 'integration_screenboard', 'integration_timeboard', or 'host_timeboard'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "dashboards": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the dashboard." + } + }, + "description": "List of dashboards to delete from the dashboard list." + } + }, + "inner_properties": null, + "description": "Dashboards to delete from the dashboard list." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteDashboardListItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "dashboard_list_id", + "tool_parameter_name": "dashboard_list_identifier", + "description": "ID of the dashboard list to delete items from.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to delete items from." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "dashboards_to_delete", + "description": "Dashboards to delete from the dashboard list.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "dashboards": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the dashboard." + } + }, + "description": "List of dashboards to delete from the dashboard list." + } + }, + "inner_properties": null, + "description": "Dashboards to delete from the dashboard list." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request containing a list of dashboards to delete.\",\n \"properties\": {\n \"dashboards\": {\n \"description\": \"List of dashboards to delete from the dashboard list.\",\n \"items\": {\n \"description\": \"A dashboard within a list.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the dashboard.\",\n \"example\": \"q5j-nti-fv6\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the dashboard.\",\n \"enum\": [\n \"custom_timeboard\",\n \"custom_screenboard\",\n \"integration_screenboard\",\n \"integration_timeboard\",\n \"host_timeboard\"\n ],\n \"example\": \"host_timeboard\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_TIMEBOARD\",\n \"CUSTOM_SCREENBOARD\",\n \"INTEGRATION_SCREENBOARD\",\n \"INTEGRATION_TIMEBOARD\",\n \"HOST_TIMEBOARD\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Dashboards to delete from the dashboard list.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDataPipeline.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDataPipeline.json new file mode 100644 index 00000000..aae474dc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDataPipeline.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteDataPipeline", + "fully_qualified_name": "DatadogApi.DeleteDataPipeline@0.1.0", + "description": "Deletes a data pipeline from the Datadog configuration.\n\nUse this tool to remove a specific data pipeline by its ID from the Datadog configuration. Useful for managing and maintaining pipeline configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "pipeline_identifier", + "required": true, + "description": "The unique ID of the pipeline that you want to delete from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the pipeline to delete." + }, + "inferrable": true, + "http_endpoint_parameter_name": "pipeline_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeletePipeline'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/{pipeline_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "pipeline_id", + "tool_parameter_name": "pipeline_identifier", + "description": "The ID of the pipeline to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the pipeline to delete." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogApiKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogApiKey.json new file mode 100644 index 00000000..e75ed309 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogApiKey.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteDatadogApiKey", + "fully_qualified_name": "DatadogApi.DeleteDatadogApiKey@0.1.0", + "description": "Delete an API key from Datadog.\n\nUse this tool to delete an existing API key in Datadog by providing the API key ID. Call this tool when you need to manage and remove unnecessary or compromised keys from your Datadog account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "api_key_id", + "required": true, + "description": "The unique identifier of the API key to delete in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the API key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "api_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteAPIKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/api_keys/{api_key_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "api_key_id", + "tool_parameter_name": "api_key_id", + "description": "The ID of the API key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the API key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogAppKey.json new file mode 100644 index 00000000..c75f2ae3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogAppKey.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteDatadogAppKey", + "fully_qualified_name": "DatadogApi.DeleteDatadogAppKey@0.1.0", + "description": "Deletes an application key in Datadog.\n\nUse this tool to delete an existing application key in Datadog when it is no longer needed or if security requires its removal.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_key_id", + "required": true, + "description": "The unique ID of the Datadog application key to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/application_keys/{app_key_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogDatastore.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogDatastore.json new file mode 100644 index 00000000..83a9e102 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatadogDatastore.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteDatadogDatastore", + "fully_qualified_name": "DatadogApi.DeleteDatadogDatastore@0.1.0", + "description": "Delete a Datadog datastore using its unique ID.\n\nUse this tool to delete a specific datastore in Datadog by providing its unique identifier. Call this tool when a datastore is no longer needed and requires removal.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_unique_id", + "required": true, + "description": "The unique identifier of the datastore to delete in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteDatastore'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "datastore_id", + "tool_parameter_name": "datastore_unique_id", + "description": "The unique identifier of the datastore to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDataset.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDataset.json new file mode 100644 index 00000000..f3a13ad0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDataset.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteDataset", + "fully_qualified_name": "DatadogApi.DeleteDataset@0.1.0", + "description": "Deletes a dataset using its ID.\n\nUse this tool to delete a dataset by providing its ID. It should be called when you need to remove an existing dataset from the system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dataset_identifier", + "required": true, + "description": "The unique ID of the dataset to be deleted. Required for deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a defined dataset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "dataset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteDataset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/datasets/{dataset_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "dataset_id", + "tool_parameter_name": "dataset_identifier", + "description": "The ID of a defined dataset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a defined dataset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatastoreItem.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatastoreItem.json new file mode 100644 index 00000000..f876098d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteDatastoreItem.json @@ -0,0 +1,229 @@ +{ + "name": "DeleteDatastoreItem", + "fully_qualified_name": "DatadogApi.DeleteDatastoreItem@0.1.0", + "description": "Delete an item from a datastore by its key.\n\nUse this tool to delete a specific item from a datastore when you have the key and datastore ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_id", + "required": true, + "description": "A string representing the unique identifier of the datastore from which the item will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + }, + { + "name": "item_unique_identifier", + "required": false, + "description": "Optional unique identifier of the item to delete. Use if available for more precise deletion.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional unique identifier of the item to delete." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.id" + }, + { + "name": "item_primary_key", + "required": false, + "description": "The primary key value identifying the item to delete. Max length is 256 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The primary key value that identifies the item to delete. Cannot exceed 256 characters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.item_key" + }, + { + "name": "resource_type_for_datastore_items", + "required": false, + "description": "The resource type for datastore items. Must be 'items'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastore items." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteDatastoreItem'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "datastore_id", + "tool_parameter_name": "datastore_id", + "description": "The unique identifier of the datastore to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.id", + "tool_parameter_name": "item_unique_identifier", + "description": "Optional unique identifier of the item to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional unique identifier of the item to delete." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.item_key", + "tool_parameter_name": "item_primary_key", + "description": "The primary key value that identifies the item to delete. Cannot exceed 256 characters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The primary key value that identifies the item to delete. Cannot exceed 256 characters." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type_for_datastore_items", + "description": "The resource type for datastore items.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastore items." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "items", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to delete a specific item from a datastore by its primary key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data wrapper containing the information needed to identify and delete a specific datastore item.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes specifying which datastore item to delete by its primary key.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Optional unique identifier of the item to delete.\",\n \"example\": \"a7656bcc-51d4-4884-adf7-4d0d9a3e0633\",\n \"type\": \"string\"\n },\n \"item_key\": {\n \"description\": \"The primary key value that identifies the item to delete. Cannot exceed 256 characters.\",\n \"example\": \"primaryKey\",\n \"maxLength\": 256,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"item_key\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"items\",\n \"description\": \"The resource type for datastore items.\",\n \"enum\": [\n \"items\"\n ],\n \"example\": \"items\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ITEMS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteEscalationPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteEscalationPolicy.json new file mode 100644 index 00000000..89fffac1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteEscalationPolicy.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteEscalationPolicy", + "fully_qualified_name": "DatadogApi.DeleteEscalationPolicy@0.1.0", + "description": "Delete an On-Call escalation policy.\n\nUse this tool to delete an existing On-Call escalation policy by providing its policy ID. This is useful for managing or updating your escalation policies within the Datadog platform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "escalation_policy_id", + "required": true, + "description": "The unique ID of the escalation policy to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the escalation policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteOnCallEscalationPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/escalation-policies/{policy_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "escalation_policy_id", + "description": "The ID of the escalation policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the escalation policy" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteFastlyAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteFastlyAccount.json new file mode 100644 index 00000000..fe471279 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteFastlyAccount.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteFastlyAccount", + "fully_qualified_name": "DatadogApi.DeleteFastlyAccount@0.1.0", + "description": "Deletes a specified Fastly account integration.\n\nUse this tool to delete a Fastly account integration from Datadog. Ideal when an integration is no longer needed or requires removal.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "The unique identifier of the Fastly account to delete. Required for the deletion process.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteFastlyAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteFastlyService.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteFastlyService.json new file mode 100644 index 00000000..161cad1e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteFastlyService.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteFastlyService", + "fully_qualified_name": "DatadogApi.DeleteFastlyService@0.1.0", + "description": "Delete a Fastly service for an account.\n\nUse this tool to delete a specific Fastly service associated with an account in Datadog. Call this tool when you need to remove an existing service configured through the Fastly integration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "The ID of the Fastly account associated with the service to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "fastly_service_id", + "required": true, + "description": "The unique identifier for the Fastly service to delete. Required to specify the exact service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Service ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteFastlyService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "service_id", + "tool_parameter_name": "fastly_service_id", + "description": "Fastly Service ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Service ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteGcpScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteGcpScanOptions.json new file mode 100644 index 00000000..9cbd38ca --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteGcpScanOptions.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteGcpScanOptions", + "fully_qualified_name": "DatadogApi.DeleteGcpScanOptions@0.1.0", + "description": "Delete Agentless scan options for a GCP project.\n\nUse this tool to remove the agentless scanning configuration for a specified GCP project. Ideal for managing and updating project scan settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "gcp_project_id", + "required": true, + "description": "The unique identifier for the Google Cloud Platform (GCP) project whose scan options you wish to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteGcpScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp/{project_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "project_id", + "tool_parameter_name": "gcp_project_id", + "description": "The GCP project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteGcpStsAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteGcpStsAccount.json new file mode 100644 index 00000000..6f8ae497 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteGcpStsAccount.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteGcpStsAccount", + "fully_qualified_name": "DatadogApi.DeleteGcpStsAccount@0.1.0", + "description": "Delete an STS-enabled GCP account in Datadog.\n\nUse this tool to remove a specified STS-enabled Google Cloud Platform account from Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "gcp_sts_account_id", + "required": true, + "description": "The unique ID of the GCP STS-enabled service account to delete from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your GCP STS enabled service account's unique ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteGCPSTSAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/gcp/accounts/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "gcp_sts_account_id", + "description": "Your GCP STS enabled service account's unique ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your GCP STS enabled service account's unique ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteHistoricalDetectionJob.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteHistoricalDetectionJob.json new file mode 100644 index 00000000..df14ae1f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteHistoricalDetectionJob.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteHistoricalDetectionJob", + "fully_qualified_name": "DatadogApi.DeleteHistoricalDetectionJob@0.1.0", + "description": "Delete an existing historical detection job in Datadog.\n\nUse this tool to delete a specific historical detection job in Datadog's SIEM. This is helpful when you need to manage or clean up old detection jobs by specifying the job ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "job_id", + "required": true, + "description": "The unique identifier for the historical job to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "inferrable": true, + "http_endpoint_parameter_name": "job_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteHistoricalJob'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "job_id", + "tool_parameter_name": "job_id", + "description": "The ID of the job.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncident.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncident.json new file mode 100644 index 00000000..75468aba --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncident.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteIncident", + "fully_qualified_name": "DatadogApi.DeleteIncident@0.1.0", + "description": "Deletes an existing incident from the organization.\n\nUse this tool to remove an incident from your organization's records in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteIncident'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentImpact.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentImpact.json new file mode 100644 index 00000000..f853b9a2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentImpact.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteIncidentImpact", + "fully_qualified_name": "DatadogApi.DeleteIncidentImpact@0.1.0", + "description": "Delete a specific incident impact by ID.\n\nUse this tool to delete an impact associated with a specific incident using the incident and impact IDs. Suitable for managing and cleaning up incident data in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_id", + "required": true, + "description": "The UUID of the incident to be deleted. Required for identifying the specific incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_impact_uuid", + "required": true, + "description": "The UUID of the incident impact to be deleted. This is required to identify which specific impact to remove.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident impact." + }, + "inferrable": true, + "http_endpoint_parameter_name": "impact_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteIncidentImpact'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/impacts/{impact_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_id", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "impact_id", + "tool_parameter_name": "incident_impact_uuid", + "description": "The UUID of the incident impact.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident impact." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentIntegrationMetadata.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentIntegrationMetadata.json new file mode 100644 index 00000000..0e61fb2a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentIntegrationMetadata.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteIncidentIntegrationMetadata", + "fully_qualified_name": "DatadogApi.DeleteIncidentIntegrationMetadata@0.1.0", + "description": "Remove an incident integration metadata entry.\n\nUse this tool to delete metadata associated with an incident integration. Call it when you need to remove specific integration details from an incident.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The UUID of the incident you want to delete integration metadata for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_integration_metadata_uuid", + "required": true, + "description": "The UUID of the incident integration metadata to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident integration metadata." + }, + "inferrable": true, + "http_endpoint_parameter_name": "integration_metadata_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteIncidentIntegration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integration_metadata_id", + "tool_parameter_name": "incident_integration_metadata_uuid", + "description": "The UUID of the incident integration metadata.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident integration metadata." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentNotificationRule.json new file mode 100644 index 00000000..83d33b80 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentNotificationRule.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteIncidentNotificationRule", + "fully_qualified_name": "DatadogApi.DeleteIncidentNotificationRule@0.1.0", + "description": "Delete an incident notification rule by its ID.\n\nUse this tool to delete a specific incident notification rule in Datadog by providing its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "notification_rule_id", + "required": true, + "description": "The unique identifier of the notification rule to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "include_resources", + "required": false, + "description": "Comma-separated list of resources to include, such as `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteIncidentNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-rules/{id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_resources", + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "notification_rule_id", + "description": "The ID of the notification rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentNotificationTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentNotificationTemplate.json new file mode 100644 index 00000000..b41d2477 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentNotificationTemplate.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteIncidentNotificationTemplate", + "fully_qualified_name": "DatadogApi.DeleteIncidentNotificationTemplate@0.1.0", + "description": "Deletes a notification template by its ID.\n\nUse this tool to delete a specific incident notification template by providing its ID. It should be called when a notification template is no longer needed or requires removal.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "notification_template_id", + "required": true, + "description": "The unique ID of the incident notification template to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "relationships_to_include", + "required": false, + "description": "Comma-separated list of relationships to include. Options: `created_by_user`, `last_modified_by_user`, `incident_type`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteIncidentNotificationTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-templates/{id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "relationships_to_include", + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "notification_template_id", + "description": "The ID of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentTodo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentTodo.json new file mode 100644 index 00000000..231c35f3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentTodo.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteIncidentTodo", + "fully_qualified_name": "DatadogApi.DeleteIncidentTodo@0.1.0", + "description": "Delete a specified incident todo in Datadog.\n\nUse this tool to delete a specific todo item associated with an incident in Datadog. This is helpful for managing and updating incident tasks as needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident to which the todo belongs. This is necessary to specify the incident context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_todo_uuid", + "required": true, + "description": "The unique UUID for the incident todo to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident todo." + }, + "inferrable": true, + "http_endpoint_parameter_name": "todo_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteIncidentTodo'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "todo_id", + "tool_parameter_name": "incident_todo_uuid", + "description": "The UUID of the incident todo.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident todo." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentType.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentType.json new file mode 100644 index 00000000..33280ffc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteIncidentType.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteIncidentType", + "fully_qualified_name": "DatadogApi.DeleteIncidentType@0.1.0", + "description": "Deletes a specified incident type from Datadog configuration.\n\nUse this tool to remove an incident type from your Datadog configuration. It should be called when there is a need to delete a specific incident type identified by its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_type_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident type to be deleted in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_type_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteIncidentType'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/types/{incident_type_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "incident_type_id", + "tool_parameter_name": "incident_type_uuid", + "description": "The UUID of the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident type." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteLogMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteLogMetric.json new file mode 100644 index 00000000..7d2eaac8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteLogMetric.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteLogMetric", + "fully_qualified_name": "DatadogApi.DeleteLogMetric@0.1.0", + "description": "Delete a specific log-based metric from your organization.\n\nCall this tool to remove a specific log-based metric from your Datadog organization by specifying the metric ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "log_metric_name", + "required": true, + "description": "The name of the log-based metric you want to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteLogsMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/metrics/{metric_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "log_metric_name", + "description": "The name of the log-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteLogsArchive.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteLogsArchive.json new file mode 100644 index 00000000..b2bae68b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteLogsArchive.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteLogsArchive", + "fully_qualified_name": "DatadogApi.DeleteLogsArchive@0.1.0", + "description": "Delete a specific logs archive from your organization.\n\nUse this tool to permanently delete a specified logs archive in your Datadog organization. The tool should be called when you need to remove an unnecessary or outdated archive.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_id", + "required": true, + "description": "The unique identifier for the archive to be deleted from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "archive_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteLogsArchive'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "archive_id", + "tool_parameter_name": "archive_id", + "description": "The ID of the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMetricTagConfiguration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMetricTagConfiguration.json new file mode 100644 index 00000000..15bd53cd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMetricTagConfiguration.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteMetricTagConfiguration", + "fully_qualified_name": "DatadogApi.DeleteMetricTagConfiguration@0.1.0", + "description": "Delete a metric's tag configuration.\n\nUse this tool to delete the tag configuration for a specific metric in Datadog. Ensure the application key has 'Manage Tags for Metrics' permission.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the metric whose tag configuration is to be deleted. Ensure the application key has the necessary permissions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteTagConfiguration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorNotificationRule.json new file mode 100644 index 00000000..3a7f919d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorNotificationRule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteMonitorNotificationRule", + "fully_qualified_name": "DatadogApi.DeleteMonitorNotificationRule@0.1.0", + "description": "Delete a monitor notification rule by ID.\n\nUse this tool to delete a specific monitor notification rule in Datadog by providing the rule ID. Useful for managing and cleaning up notification rules that are no longer needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_notification_rule_id", + "required": true, + "description": "The unique identifier for the monitor notification rule to delete in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor notification rule to delete." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteMonitorNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/notification_rule/{rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "monitor_notification_rule_id", + "description": "ID of the monitor notification rule to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor notification rule to delete." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorPolicy.json new file mode 100644 index 00000000..09b58607 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorPolicy.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteMonitorPolicy", + "fully_qualified_name": "DatadogApi.DeleteMonitorPolicy@0.1.0", + "description": "Deletes a specific monitor configuration policy.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_policy_id", + "required": true, + "description": "ID of the monitor configuration policy to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor configuration policy." + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteMonitorConfigPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/policy/{policy_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "monitor_policy_id", + "description": "ID of the monitor configuration policy.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor configuration policy." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorUserTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorUserTemplate.json new file mode 100644 index 00000000..d73085b4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMonitorUserTemplate.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteMonitorUserTemplate", + "fully_qualified_name": "DatadogApi.DeleteMonitorUserTemplate@0.1.0", + "description": "Deletes a monitor user template by its ID on Datadog.\n\nUse this tool to delete an existing monitor user template in Datadog by specifying the template's ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_user_template_id", + "required": true, + "description": "ID of the monitor user template to be deleted in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteMonitorUserTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/template/{template_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "template_id", + "tool_parameter_name": "monitor_user_template_id", + "description": "ID of the monitor user template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMsTeamsTenantHandle.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMsTeamsTenantHandle.json new file mode 100644 index 00000000..e6b9b707 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMsTeamsTenantHandle.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteMsTeamsTenantHandle", + "fully_qualified_name": "DatadogApi.DeleteMsTeamsTenantHandle@0.1.0", + "description": "Delete a tenant-based handle from Datadog's Microsoft Teams integration.\n\nUse this tool to remove a specific tenant-based handle from the Microsoft Teams integration in Datadog. This is useful for managing or updating integration settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "tenant_handle_id", + "required": true, + "description": "The unique identifier for the tenant-based handle to be deleted from the Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteTenantBasedHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "handle_id", + "tool_parameter_name": "tenant_handle_id", + "description": "Your tenant-based handle id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMultipleDatadogApps.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMultipleDatadogApps.json new file mode 100644 index 00000000..331ce4a0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteMultipleDatadogApps.json @@ -0,0 +1,182 @@ +{ + "name": "DeleteMultipleDatadogApps", + "fully_qualified_name": "DatadogApi.DeleteMultipleDatadogApps@0.1.0", + "description": "Delete multiple apps in Datadog using app IDs.\n\nThis tool deletes multiple applications from Datadog in a single request using a list of app IDs. It requires a registered application key or configured UI permissions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_ids_to_delete", + "required": true, + "description": "An array of objects with each object containing the 'id' (string) of the app to delete and 'type' set as 'appDefinitions'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to delete." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "appDefinitions" + ], + "properties": null, + "inner_properties": null, + "description": "The app definition type." + } + }, + "description": "An array of objects containing the IDs of the apps to delete." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteApps'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "app_ids_to_delete", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to delete." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "appDefinitions" + ], + "properties": null, + "inner_properties": null, + "description": "The app definition type." + } + }, + "description": "An array of objects containing the IDs of the apps to delete." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A request object for deleting multiple apps by ID.\",\n \"example\": {\n \"data\": [\n {\n \"id\": \"aea2ed17-b45f-40d0-ba59-c86b7972c901\",\n \"type\": \"appDefinitions\"\n },\n {\n \"id\": \"f69bb8be-6168-4fe7-a30d-370256b6504a\",\n \"type\": \"appDefinitions\"\n },\n {\n \"id\": \"ab1ed73e-13ad-4426-b0df-a0ff8876a088\",\n \"type\": \"appDefinitions\"\n }\n ]\n },\n \"properties\": {\n \"data\": {\n \"description\": \"An array of objects containing the IDs of the apps to delete.\",\n \"items\": {\n \"description\": \"An object containing the ID of an app to delete.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the app to delete.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"appDefinitions\",\n \"description\": \"The app definition type.\",\n \"enum\": [\n \"appDefinitions\"\n ],\n \"example\": \"appDefinitions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPDEFINITIONS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOktaAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOktaAccount.json new file mode 100644 index 00000000..2a827da2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOktaAccount.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteOktaAccount", + "fully_qualified_name": "DatadogApi.DeleteOktaAccount@0.1.0", + "description": "Delete an Okta account from Datadog integration.\n\nUse this tool to delete an Okta account integrated with Datadog. Call this tool when an Okta account needs to be removed from Datadog's integration platform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "okta_account_id", + "required": true, + "description": "A string representing the ID of the Okta account to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteOktaAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/okta/accounts/{account_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "okta_account_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOnCallSchedule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOnCallSchedule.json new file mode 100644 index 00000000..217634f7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOnCallSchedule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteOnCallSchedule", + "fully_qualified_name": "DatadogApi.DeleteOnCallSchedule@0.1.0", + "description": "Delete an On-Call schedule in Datadog.\n\nUse this tool to delete a specific on-call schedule identified by its schedule ID in Datadog when managing schedules.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "schedule_id", + "required": true, + "description": "The unique identifier for the on-call schedule you wish to delete in Datadog. This is a required field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "schedule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteOnCallSchedule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "schedule_id", + "tool_parameter_name": "schedule_id", + "description": "The ID of the schedule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOpsgenieService.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOpsgenieService.json new file mode 100644 index 00000000..8b6c393c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOpsgenieService.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteOpsgenieService", + "fully_qualified_name": "DatadogApi.DeleteOpsgenieService@0.1.0", + "description": "Delete a service in Datadog's Opsgenie integration.\n\nUse this tool to remove a specific service from the Datadog Opsgenie integration. Call this when you need to delete an Opsgenie service using its integration service ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_uuid", + "required": true, + "description": "The UUID of the service to be deleted in the Datadog Opsgenie integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "integration_service_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteOpsgenieService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/opsgenie/services/{integration_service_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "integration_service_id", + "tool_parameter_name": "service_uuid", + "description": "The UUID of the service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the service." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOrgConnection.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOrgConnection.json new file mode 100644 index 00000000..b28fffcf --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteOrgConnection.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteOrgConnection", + "fully_qualified_name": "DatadogApi.DeleteOrgConnection@0.1.0", + "description": "Delete an existing organization connection.\n\nCall this tool to delete a specified organization connection. Use it when you need to remove a link between organizations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "connection_id", + "required": true, + "description": "The unique identifier of the organization connection to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org connection." + }, + "inferrable": true, + "http_endpoint_parameter_name": "connection_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteOrgConnections'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/org_connections/{connection_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "connection_id", + "tool_parameter_name": "connection_id", + "description": "The unique identifier of the org connection.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org connection." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeletePowerpack.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeletePowerpack.json new file mode 100644 index 00000000..7a287e20 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeletePowerpack.json @@ -0,0 +1,126 @@ +{ + "name": "DeletePowerpack", + "fully_qualified_name": "DatadogApi.DeletePowerpack@0.1.0", + "description": "Delete a specified powerpack from Datadog.\n\nThis tool deletes a powerpack in Datadog using the specified powerpack ID. Call this tool when you need to remove a powerpack from your Datadog account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "powerpack_id", + "required": true, + "description": "The unique identifier for the powerpack to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Powerpack id" + }, + "inferrable": true, + "http_endpoint_parameter_name": "powerpack_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeletePowerpack'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/powerpacks/{powerpack_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "powerpack_id", + "tool_parameter_name": "powerpack_id", + "description": "Powerpack id", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Powerpack id" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteReferenceTable.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteReferenceTable.json new file mode 100644 index 00000000..6f8323e5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteReferenceTable.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteReferenceTable", + "fully_qualified_name": "DatadogApi.DeleteReferenceTable@0.1.0", + "description": "Delete a reference table by ID.\n\nUse this tool to delete a specific reference table by providing its ID. Useful for managing and cleaning up reference data in your Datadog environment.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "reference_table_id", + "required": true, + "description": "The unique identifier of the reference table to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table to delete" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteTable'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/reference-tables/tables/{id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "id", + "tool_parameter_name": "reference_table_id", + "description": "The ID of the reference table to delete", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table to delete" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRestrictionPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRestrictionPolicy.json new file mode 100644 index 00000000..0f31a8b2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRestrictionPolicy.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteRestrictionPolicy", + "fully_qualified_name": "DatadogApi.DeleteRestrictionPolicy@0.1.0", + "description": "Delete a restriction policy for a specified resource.\n\nUse this tool to delete the restriction policy associated with a specific resource by providing its ID. It should be called when a policy needs to be removed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "resource_identifier", + "required": true, + "description": "Identifier formatted as `type:id` for the resource. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, and more.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules." + }, + "inferrable": true, + "http_endpoint_parameter_name": "resource_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteRestrictionPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/restriction_policy/{resource_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "resource_id", + "tool_parameter_name": "resource_identifier", + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRestrictionQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRestrictionQuery.json new file mode 100644 index 00000000..df55f64f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRestrictionQuery.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteRestrictionQuery", + "fully_qualified_name": "DatadogApi.DeleteRestrictionQuery@0.1.0", + "description": "Deletes a restriction query from Datadog logs configuration.\n\nUse this tool to delete a specific restriction query within Datadog's logs configuration. It should be called when you need to remove a restriction query by its unique ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "restriction_query_id", + "required": true, + "description": "The unique ID of the restriction query to be deleted from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "restriction_query_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteRestrictionQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "restriction_query_id", + "tool_parameter_name": "restriction_query_id", + "description": "The ID of the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumApplication.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumApplication.json new file mode 100644 index 00000000..2ad90f53 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumApplication.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteRumApplication", + "fully_qualified_name": "DatadogApi.DeleteRumApplication@0.1.0", + "description": "Deletes an existing RUM application in your organization.\n\nUse this tool to delete an existing Real User Monitoring (RUM) application. Called when you need to remove a RUM application from your Datadog organization.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The unique identifier for the RUM application you wish to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteRUMApplication'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumMetric.json new file mode 100644 index 00000000..b5934ab1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumMetric.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteRumMetric", + "fully_qualified_name": "DatadogApi.DeleteRumMetric@0.1.0", + "description": "Delete a specific RUM-based metric from your organization.\n\nCall this tool to remove a specific RUM-based metric using its ID from your Datadog organization.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_metric_id", + "required": true, + "description": "The ID of the RUM-based metric to be deleted from your Datadog organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteRumMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/config/metrics/{metric_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "rum_metric_id", + "description": "The name of the rum-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumRetentionFilter.json new file mode 100644 index 00000000..c818aceb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteRumRetentionFilter.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteRumRetentionFilter", + "fully_qualified_name": "DatadogApi.DeleteRumRetentionFilter@0.1.0", + "description": "Deletes a RUM retention filter for a specific application.\n\nThis tool deletes a specified RUM retention filter for a given application in Datadog. It should be called when you need to remove a retention filter from a RUM application to stop retaining specific types of data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The ID of the RUM application from which to delete the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + }, + { + "name": "retention_filter_id", + "required": true, + "description": "The ID of the retention filter to delete from the RUM application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retention filter ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rf_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rf_id", + "tool_parameter_name": "retention_filter_id", + "description": "Retention filter ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retention filter ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScanningGroup.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScanningGroup.json new file mode 100644 index 00000000..2b2d042f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScanningGroup.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteScanningGroup", + "fully_qualified_name": "DatadogApi.DeleteScanningGroup@0.1.0", + "description": "Delete a specified scanning group in Datadog.\n\nUse this tool to delete a specified scanning group in Datadog's sensitive data scanner configuration. It should be called when you need to remove an existing group by its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "group_id", + "required": true, + "description": "The ID of the scanning group to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a group of rules." + }, + "inferrable": true, + "http_endpoint_parameter_name": "group_id" + }, + { + "name": "api_version", + "required": false, + "description": "Optional version number of the API to use for the request.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "meta.version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteScanningGroup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/groups/{group_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "group_id", + "tool_parameter_name": "group_id", + "description": "The ID of a group of rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a group of rules." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "meta.version", + "tool_parameter_name": "api_version", + "description": "Version of the API (optional).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Delete group request.\",\n \"properties\": {\n \"meta\": {\n \"description\": \"Meta payload containing information about the API.\",\n \"properties\": {\n \"version\": {\n \"description\": \"Version of the API (optional).\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"meta\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScanningRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScanningRule.json new file mode 100644 index 00000000..2b01084e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScanningRule.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteScanningRule", + "fully_qualified_name": "DatadogApi.DeleteScanningRule@0.1.0", + "description": "Delete a specific scanning rule by ID.\n\nUse this tool to remove a sensitive data scanning rule in Datadog by providing the rule's ID. It should be called when a specific scanning rule needs to be deleted.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_id", + "required": true, + "description": "The unique identifier for the scanning rule to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "api_version", + "required": false, + "description": "Specify the API version to use for the request (optional).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "meta.version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteScanningRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/rules/{rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "meta.version", + "tool_parameter_name": "api_version", + "description": "Version of the API (optional).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Delete rule request.\",\n \"properties\": {\n \"meta\": {\n \"description\": \"Meta payload containing information about the API.\",\n \"properties\": {\n \"version\": {\n \"description\": \"Version of the API (optional).\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"meta\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScorecardRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScorecardRule.json new file mode 100644 index 00000000..bf28c62b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteScorecardRule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteScorecardRule", + "fully_qualified_name": "DatadogApi.DeleteScorecardRule@0.1.0", + "description": "Deletes a scorecard rule by its ID.\n\nUse this tool to delete a specific rule in a scorecard by providing its ID. This is useful for managing and updating scorecard configurations by removing obsolete or incorrect rules.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_id", + "required": true, + "description": "The ID of the scorecard rule to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteScorecardRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/scorecard/rules/{rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSecurityFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSecurityFilter.json new file mode 100644 index 00000000..e1edba44 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSecurityFilter.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteSecurityFilter", + "fully_qualified_name": "DatadogApi.DeleteSecurityFilter@0.1.0", + "description": "Delete a specific security filter in Datadog.\n\nUse this tool to delete a specified security filter by its ID in Datadog's security monitoring configuration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_filter_id", + "required": true, + "description": "The ID of the security filter to delete in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the security filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "security_filter_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteSecurityFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "security_filter_id", + "tool_parameter_name": "security_filter_id", + "description": "The ID of the security filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the security filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSecurityMonitoringRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSecurityMonitoringRule.json new file mode 100644 index 00000000..d65b397e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSecurityMonitoringRule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteSecurityMonitoringRule", + "fully_qualified_name": "DatadogApi.DeleteSecurityMonitoringRule@0.1.0", + "description": "Delete an existing security monitoring rule.\n\nUse this tool to delete a specified security monitoring rule in Datadog. Note that default rules cannot be deleted.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_rule_id", + "required": true, + "description": "The unique identifier of the security rule to be deleted. Default rules cannot be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "security_rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteServiceAccountAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteServiceAccountAppKey.json new file mode 100644 index 00000000..55de3192 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteServiceAccountAppKey.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteServiceAccountAppKey", + "fully_qualified_name": "DatadogApi.DeleteServiceAccountAppKey@0.1.0", + "description": "Delete an application key from a service account.\n\nCall this tool to remove an application key associated with a specific service account in Datadog. This tool is useful for managing access and maintaining security by ensuring unused or compromised keys are deleted.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_account_id", + "required": true, + "description": "The unique identifier for the service account from which the application key will be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_account_id" + }, + { + "name": "application_key_id", + "required": true, + "description": "The unique identifier for the application key to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteServiceAccountApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "service_account_id", + "tool_parameter_name": "service_account_id", + "description": "The ID of the service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteServiceDefinition.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteServiceDefinition.json new file mode 100644 index 00000000..54a0927a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteServiceDefinition.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteServiceDefinition", + "fully_qualified_name": "DatadogApi.DeleteServiceDefinition@0.1.0", + "description": "Deletes a service definition from Datadog.\n\nUse this tool to remove a specific service definition from the Datadog Service Catalog. Ideal for cleaning up or managing services that are no longer needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_name", + "required": true, + "description": "The name of the service to delete from the Datadog Service Catalog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteServiceDefinition'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/services/definitions/{service_name}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "service_name", + "tool_parameter_name": "service_name", + "description": "The name of the service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the service." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSpanMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSpanMetric.json new file mode 100644 index 00000000..7eaa58a3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSpanMetric.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteSpanMetric", + "fully_qualified_name": "DatadogApi.DeleteSpanMetric@0.1.0", + "description": "Delete a specific span-based metric from your organization.\n\nUse this tool to delete a span-based metric by specifying its metric ID. It helps manage and maintain the span metrics within your organization by removing unnecessary or obsolete data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_id", + "required": true, + "description": "The unique identifier for the span-based metric to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteSpansMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/metrics/{metric_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "metric_id", + "description": "The name of the span-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSuppressionRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSuppressionRule.json new file mode 100644 index 00000000..dd727e00 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteSuppressionRule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteSuppressionRule", + "fully_qualified_name": "DatadogApi.DeleteSuppressionRule@0.1.0", + "description": "Delete a specific suppression rule in Datadog.\n\nUse this tool to delete a specific suppression rule from Datadog's security monitoring configuration. Call it when you need to remove an existing suppression rule using its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "suppression_rule_id", + "required": true, + "description": "The unique identifier of the suppression rule to be deleted in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the suppression rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "suppression_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteSecurityMonitoringSuppression'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/{suppression_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "suppression_id", + "tool_parameter_name": "suppression_rule_id", + "description": "The ID of the suppression rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the suppression rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteTagPipelineRuleset.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteTagPipelineRuleset.json new file mode 100644 index 00000000..a298a38a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteTagPipelineRuleset.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteTagPipelineRuleset", + "fully_qualified_name": "DatadogApi.DeleteTagPipelineRuleset@0.1.0", + "description": "Delete an existing tag pipeline ruleset by ID.\n\nUse this tool to delete a specific tag pipeline ruleset in Datadog by providing its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "ruleset_id", + "required": true, + "description": "The unique identifier for the tag pipeline ruleset to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the ruleset" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ruleset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteTagPipelinesRuleset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/tags/enrichment/{ruleset_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "ruleset_id", + "tool_parameter_name": "ruleset_id", + "description": "The unique identifier of the ruleset", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the ruleset" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteTeam.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteTeam.json new file mode 100644 index 00000000..e68f63b9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteTeam.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteTeam", + "fully_qualified_name": "DatadogApi.DeleteTeam@0.1.0", + "description": "Remove a team using its ID in Datadog.\n\nThis tool should be called to permanently delete a team in Datadog by specifying the team's unique ID. Use this when a team is no longer needed and should be removed from the system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team to be deleted in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteUserApplicationKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteUserApplicationKey.json new file mode 100644 index 00000000..7c3d0ddc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteUserApplicationKey.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteUserApplicationKey", + "fully_qualified_name": "DatadogApi.DeleteUserApplicationKey@0.1.0", + "description": "Delete an application key owned by the current user.\n\nThis tool deletes an application key associated with the current user in Datadog. It should be called when the user needs to remove access or invalidate an application key.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_key_id", + "required": true, + "description": "The ID of the application key to be deleted. Required to identify which key to remove.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCurrentUserApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/current_user/application_keys/{app_key_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWafCustomRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWafCustomRule.json new file mode 100644 index 00000000..f0ee4636 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWafCustomRule.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteWafCustomRule", + "fully_qualified_name": "DatadogApi.DeleteWafCustomRule@0.1.0", + "description": "Delete a specific WAF custom rule by ID.\n\nUse this tool to delete a WAF custom rule using its unique identifier. Applicable when managing application security or modifying WAF configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_rule_id", + "required": true, + "description": "The unique identifier for the WAF custom rule to be deleted. Required for identifying the specific rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteApplicationSecurityWafCustomRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "custom_rule_id", + "tool_parameter_name": "custom_rule_id", + "description": "The ID of the custom rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWafExclusionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWafExclusionFilter.json new file mode 100644 index 00000000..6d4aef74 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWafExclusionFilter.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteWafExclusionFilter", + "fully_qualified_name": "DatadogApi.DeleteWafExclusionFilter@0.1.0", + "description": "Delete a WAF exclusion filter using its ID.\n\nUse this tool to delete a specific Web Application Firewall (WAF) exclusion filter by providing its identifier. Call this tool when you need to remove an unnecessary or outdated exclusion filter from the configuration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "waf_exclusion_filter_id", + "required": true, + "description": "The unique identifier of the WAF exclusion filter to be deleted. Use this ID to specify which filter to remove.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the WAF exclusion filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "exclusion_filter_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteApplicationSecurityWafExclusionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "exclusion_filter_id", + "tool_parameter_name": "waf_exclusion_filter_id", + "description": "The identifier of the WAF exclusion filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the WAF exclusion filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkflow.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkflow.json new file mode 100644 index 00000000..79d328d5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkflow.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteWorkflow", + "fully_qualified_name": "DatadogApi.DeleteWorkflow@0.1.0", + "description": "Delete a specified workflow by its ID.\n\nUse this tool to delete an existing workflow by providing the workflow ID. Ensure you have the necessary permissions or a registered application key from Datadog before calling this tool.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_id", + "required": true, + "description": "The ID of the workflow to be deleted. Ensure it is a valid and existing workflow ID in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "inferrable": true, + "http_endpoint_parameter_name": "workflow_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteWorkflow'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows/{workflow_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "workflow_id", + "tool_parameter_name": "workflow_id", + "description": "The ID of the workflow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkflowWebhookHandle.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkflowWebhookHandle.json new file mode 100644 index 00000000..02d36995 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkflowWebhookHandle.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteWorkflowWebhookHandle", + "fully_qualified_name": "DatadogApi.DeleteWorkflowWebhookHandle@0.1.0", + "description": "Delete a Workflows webhook handle in Datadog.\n\nUse this tool to delete a specific Workflows webhook handle from the Datadog Microsoft Teams integration. This should be called when you need to remove an existing webhook handle.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "webhook_handle_id", + "required": true, + "description": "The unique identifier of the Workflows webhook handle to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteWorkflowsWebhookHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "handle_id", + "tool_parameter_name": "webhook_handle_id", + "description": "Your Workflows webhook handle id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkloadProtectionAgentRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkloadProtectionAgentRule.json new file mode 100644 index 00000000..7661a1ec --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkloadProtectionAgentRule.json @@ -0,0 +1,159 @@ +{ + "name": "DeleteWorkloadProtectionAgentRule", + "fully_qualified_name": "DatadogApi.DeleteWorkloadProtectionAgentRule@0.1.0", + "description": "Delete a specific Workload Protection agent rule.\n\nThis tool deletes a specified Workload Protection agent rule in Datadog, excluding the Government (US1-FED) site. Use this when needing to remove an existing agent rule by its unique identifier.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_identifier", + "required": true, + "description": "The unique identifier for the Agent rule to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "agent_rule_id" + }, + { + "name": "agent_policy_id", + "required": false, + "description": "The unique identifier of the Workload Protection agent policy to delete.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCSMThreatsAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "agent_policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "agent_rule_id", + "tool_parameter_name": "agent_rule_identifier", + "description": "The ID of the Agent rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkloadProtectionPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkloadProtectionPolicy.json new file mode 100644 index 00000000..4fa3c99b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DeleteWorkloadProtectionPolicy.json @@ -0,0 +1,126 @@ +{ + "name": "DeleteWorkloadProtectionPolicy", + "fully_qualified_name": "DatadogApi.DeleteWorkloadProtectionPolicy@0.1.0", + "description": "Delete a specific Workload Protection policy.\n\nUse this tool to remove a specified Workload Protection policy from Datadog. Note: Not available for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_policy_id", + "required": true, + "description": "The unique ID of the agent policy to be deleted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteCSMThreatsAgentPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/{policy_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "agent_policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DisableRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DisableRole.json new file mode 100644 index 00000000..f8ed5fcb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DisableRole.json @@ -0,0 +1,126 @@ +{ + "name": "DisableRole", + "fully_qualified_name": "DatadogApi.DisableRole@0.1.0", + "description": "Disables a specified role within Datadog.\n\nCall this tool to disable a specific role in Datadog by providing its role ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_identifier", + "required": true, + "description": "The unique identifier for the role to be disabled in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DisableUser.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DisableUser.json new file mode 100644 index 00000000..ee2a071a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DisableUser.json @@ -0,0 +1,126 @@ +{ + "name": "DisableUser", + "fully_qualified_name": "DatadogApi.DisableUser@0.1.0", + "description": "Disable a specific user in the system.\n\nThis tool disables a user account and should be used by administrator users to manage user access. It indicates whether the operation was successful or not.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_identifier", + "required": true, + "description": "The unique identifier of the user to be disabled.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DisableUser'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users/{user_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "The ID of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadCloudWorkloadPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadCloudWorkloadPolicy.json new file mode 100644 index 00000000..8d75f3ed --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadCloudWorkloadPolicy.json @@ -0,0 +1,91 @@ +{ + "name": "DownloadCloudWorkloadPolicy", + "fully_qualified_name": "DatadogApi.DownloadCloudWorkloadPolicy@0.1.0", + "description": "Downloads a Workload Protection policy file for agents.\n\nGenerates and downloads a Workload Protection policy file from active agent rules, specifically for the US1-FED site. This file is used to update the policy on your agents.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'DownloadCloudWorkloadPolicyFile'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security/cloud_workload/policy/download", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadCsmThreatsPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadCsmThreatsPolicy.json new file mode 100644 index 00000000..fc359c96 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadCsmThreatsPolicy.json @@ -0,0 +1,91 @@ +{ + "name": "DownloadCsmThreatsPolicy", + "fully_qualified_name": "DatadogApi.DownloadCsmThreatsPolicy@0.1.0", + "description": "Generate and download Workload Protection policy file.\n\nThis tool generates a Workload Protection policy file based on active agent rules and downloads it as a `.policy` file. It is used to update the policy running in your environment. Note that this is not available for US1-FED site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'DownloadCSMThreatsPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/download", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadSloReport.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadSloReport.json new file mode 100644 index 00000000..f9ea5a80 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/DownloadSloReport.json @@ -0,0 +1,126 @@ +{ + "name": "DownloadSloReport", + "fully_qualified_name": "DatadogApi.DownloadSloReport@0.1.0", + "description": "Download a completed SLO report from Datadog.\n\nUse this tool to download an SLO report from Datadog after the report job has completed. It is recommended to download the report as soon as it becomes available, as reports may not be stored indefinitely.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "report_id", + "required": true, + "description": "The unique identifier for the SLO report job to download.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the report job." + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSLOReport'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/slo/report/{report_id}/download", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "report_id", + "tool_parameter_name": "report_id", + "description": "The ID of the report job.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the report job." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditAuthnMapping.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditAuthnMapping.json new file mode 100644 index 00000000..19e37efe --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditAuthnMapping.json @@ -0,0 +1,281 @@ +{ + "name": "EditAuthnMapping", + "fully_qualified_name": "DatadogApi.EditAuthnMapping@0.1.0", + "description": "Edit an AuthN Mapping in Datadog.\n\nThis tool allows editing an authentication mapping in Datadog. It should be called when modifications to an existing AuthN Mapping are needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "authn_mapping_uuid", + "required": true, + "description": "The UUID of the AuthN Mapping to edit.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the AuthN Mapping." + }, + "inferrable": true, + "http_endpoint_parameter_name": "authn_mapping_id" + }, + { + "name": "authn_mapping_update_data", + "required": true, + "description": "JSON object containing details for updating an AuthN Mapping, including attributes and relationships.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attribute_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Key portion of a key/value pair of the attribute sent from the Identity Provider." + }, + "attribute_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value portion of a key/value pair of the attribute sent from the Identity Provider." + } + }, + "inner_properties": null, + "description": "Key/Value pair of attributes used for update request." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the AuthN Mapping." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Relationship of AuthN Mapping update object to a Role or Team." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "authn_mappings" + ], + "properties": null, + "inner_properties": null, + "description": "AuthN Mappings resource type." + } + }, + "inner_properties": null, + "description": "Data for updating an AuthN Mapping." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateAuthNMapping'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/authn_mappings/{authn_mapping_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "authn_mapping_id", + "tool_parameter_name": "authn_mapping_uuid", + "description": "The UUID of the AuthN Mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the AuthN Mapping." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "authn_mapping_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attribute_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Key portion of a key/value pair of the attribute sent from the Identity Provider." + }, + "attribute_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value portion of a key/value pair of the attribute sent from the Identity Provider." + } + }, + "inner_properties": null, + "description": "Key/Value pair of attributes used for update request." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the AuthN Mapping." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Relationship of AuthN Mapping update object to a Role or Team." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "authn_mappings" + ], + "properties": null, + "inner_properties": null, + "description": "AuthN Mappings resource type." + } + }, + "inner_properties": null, + "description": "Data for updating an AuthN Mapping." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to update an AuthN Mapping.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data for updating an AuthN Mapping.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Key/Value pair of attributes used for update request.\",\n \"properties\": {\n \"attribute_key\": {\n \"description\": \"Key portion of a key/value pair of the attribute sent from the Identity Provider.\",\n \"example\": \"member-of\",\n \"type\": \"string\"\n },\n \"attribute_value\": {\n \"description\": \"Value portion of a key/value pair of the attribute sent from the Identity Provider.\",\n \"example\": \"Development\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the AuthN Mapping.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Relationship of AuthN Mapping update object to a Role or Team.\",\n \"oneOf\": [\n {\n \"description\": \"Relationship of AuthN Mapping to a Role.\",\n \"properties\": {\n \"role\": {\n \"description\": \"Relationship to role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"role\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Relationship of AuthN Mapping to a Team.\",\n \"properties\": {\n \"team\": {\n \"description\": \"Relationship to team.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to Team object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the team.\",\n \"example\": \"f9bb8444-af7f-11ec-ac2c-da7ad0900001\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"team\",\n \"description\": \"Team type\",\n \"enum\": [\n \"team\"\n ],\n \"example\": \"team\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"team\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"default\": \"authn_mappings\",\n \"description\": \"AuthN Mappings resource type.\",\n \"enum\": [\n \"authn_mappings\"\n ],\n \"example\": \"authn_mappings\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AUTHN_MAPPINGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditDataset.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditDataset.json new file mode 100644 index 00000000..b5eb914f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditDataset.json @@ -0,0 +1,299 @@ +{ + "name": "EditDataset", + "fully_qualified_name": "DatadogApi.EditDataset@0.1.0", + "description": "Edit the dataset using the specified ID.\n\nCall this tool to edit the details of a dataset in Datadog using its ID. It updates the dataset's configuration or metadata.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dataset_id", + "required": true, + "description": "The unique ID of the dataset to be edited in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a defined dataset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "dataset_id" + }, + { + "name": "dataset_payload", + "required": true, + "description": "JSON object containing dataset metadata and configurations. Includes attributes like 'name', 'principals', and 'product_filters'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 dataset." + }, + "principals": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of access principals, formatted as `principal_type:id`. Principal can be 'team' or 'role'." + }, + "product_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the list of tag-based filters used to restrict access to telemetry data for a specific product.\nThese filters act as access control rules. Each filter must follow the tag query syntax used by\nDatadog (such as `@tag.key:value`), and only one tag or attribute may be used to define the access strategy\nper telemetry type." + }, + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product the dataset is for. Possible values are 'apm', 'rum',\n'metrics', 'logs', 'error_tracking', and 'cloud_cost'." + } + }, + "description": "List of product-specific filters." + } + }, + "inner_properties": null, + "description": "Dataset metadata and configurations." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "dataset" + ], + "properties": null, + "inner_properties": null, + "description": "Resource type, always set to `dataset`." + } + }, + "inner_properties": null, + "description": "**Datasets Object Constraints**\n- **Tag limit per dataset**:\n - Each restricted dataset supports a maximum of 10 key:value pairs per product.\n\n- **Tag key rules per telemetry type**:\n - Only one tag key or attribute may be used to define access within a single telemetry type.\n - The same or different tag key may be used across different telemetry types.\n\n- **Tag value uniqueness**:\n - Tag values must be unique within a single dataset.\n - A tag value used in one dataset cannot be reused in another dataset of the same telemetry type." + } + }, + "inner_properties": null, + "description": "Dataset payload" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateDataset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/datasets/{dataset_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "dataset_id", + "tool_parameter_name": "dataset_id", + "description": "The ID of a defined dataset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a defined dataset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "dataset_payload", + "description": "Dataset payload", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 dataset." + }, + "principals": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of access principals, formatted as `principal_type:id`. Principal can be 'team' or 'role'." + }, + "product_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the list of tag-based filters used to restrict access to telemetry data for a specific product.\nThese filters act as access control rules. Each filter must follow the tag query syntax used by\nDatadog (such as `@tag.key:value`), and only one tag or attribute may be used to define the access strategy\nper telemetry type." + }, + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the product the dataset is for. Possible values are 'apm', 'rum',\n'metrics', 'logs', 'error_tracking', and 'cloud_cost'." + } + }, + "description": "List of product-specific filters." + } + }, + "inner_properties": null, + "description": "Dataset metadata and configurations." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "dataset" + ], + "properties": null, + "inner_properties": null, + "description": "Resource type, always set to `dataset`." + } + }, + "inner_properties": null, + "description": "**Datasets Object Constraints**\n- **Tag limit per dataset**:\n - Each restricted dataset supports a maximum of 10 key:value pairs per product.\n\n- **Tag key rules per telemetry type**:\n - Only one tag key or attribute may be used to define access within a single telemetry type.\n - The same or different tag key may be used across different telemetry types.\n\n- **Tag value uniqueness**:\n - Tag values must be unique within a single dataset.\n - A tag value used in one dataset cannot be reused in another dataset of the same telemetry type." + } + }, + "inner_properties": null, + "description": "Dataset payload" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Edit request for a dataset.\",\n \"properties\": {\n \"data\": {\n \"description\": \"**Datasets Object Constraints**\\n- **Tag limit per dataset**:\\n - Each restricted dataset supports a maximum of 10 key:value pairs per product.\\n\\n- **Tag key rules per telemetry type**:\\n - Only one tag key or attribute may be used to define access within a single telemetry type.\\n - The same or different tag key may be used across different telemetry types.\\n\\n- **Tag value uniqueness**:\\n - Tag values must be unique within a single dataset.\\n - A tag value used in one dataset cannot be reused in another dataset of the same telemetry type.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Dataset metadata and configurations.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the dataset.\",\n \"example\": \"Security Audit Dataset\",\n \"type\": \"string\"\n },\n \"principals\": {\n \"description\": \"List of access principals, formatted as `principal_type:id`. Principal can be 'team' or 'role'.\",\n \"example\": [\n \"role:94172442-be03-11e9-a77a-3b7612558ac1\"\n ],\n \"items\": {\n \"example\": \"role:94172442-be03-11e9-a77a-3b7612558ac1\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"product_filters\": {\n \"description\": \"List of product-specific filters.\",\n \"items\": {\n \"description\": \"Product-specific filters for the dataset.\",\n \"properties\": {\n \"filters\": {\n \"description\": \"Defines the list of tag-based filters used to restrict access to telemetry data for a specific product.\\nThese filters act as access control rules. Each filter must follow the tag query syntax used by\\nDatadog (such as `@tag.key:value`), and only one tag or attribute may be used to define the access strategy\\nper telemetry type.\",\n \"example\": [\n \"@application.id:ABCD\"\n ],\n \"items\": {\n \"example\": \"@application.id:ABCD\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"product\": {\n \"description\": \"Name of the product the dataset is for. Possible values are 'apm', 'rum',\\n'metrics', 'logs', 'error_tracking', and 'cloud_cost'.\",\n \"example\": \"logs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"product\",\n \"filters\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"product_filters\",\n \"principals\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"dataset\",\n \"description\": \"Resource type, always set to `dataset`.\",\n \"enum\": [\n \"dataset\"\n ],\n \"example\": \"dataset\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATASET\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Dataset payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditMonitorConfigPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditMonitorConfigPolicy.json new file mode 100644 index 00000000..3211a1ad --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditMonitorConfigPolicy.json @@ -0,0 +1,269 @@ +{ + "name": "EditMonitorConfigPolicy", + "fully_qualified_name": "DatadogApi.EditMonitorConfigPolicy@0.1.0", + "description": "Edit an existing monitor configuration policy in Datadog.\n\nThis tool allows you to update the configuration of an existing monitor policy in Datadog by specifying the policy ID. Use it when changes to monitor policies are required.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_policy_id", + "required": true, + "description": "The ID of the monitor configuration policy to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor configuration policy." + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + }, + { + "name": "monitor_policy_update", + "required": true, + "description": "JSON object detailing the update to the monitor configuration policy, including attributes, policy type, and ID.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "policy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Configuration for the policy." + }, + "policy_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tag" + ], + "properties": null, + "inner_properties": null, + "description": "The monitor configuration policy type." + } + }, + "inner_properties": null, + "description": "Policy and policy type for a monitor configuration policy." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of this monitor configuration policy." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-config-policy" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor configuration policy resource type." + } + }, + "inner_properties": null, + "description": "A monitor configuration policy data." + } + }, + "inner_properties": null, + "description": "Description of the update." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateMonitorConfigPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/policy/{policy_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "monitor_policy_id", + "description": "ID of the monitor configuration policy.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor configuration policy." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "monitor_policy_update", + "description": "Description of the update.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "policy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Configuration for the policy." + }, + "policy_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tag" + ], + "properties": null, + "inner_properties": null, + "description": "The monitor configuration policy type." + } + }, + "inner_properties": null, + "description": "Policy and policy type for a monitor configuration policy." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of this monitor configuration policy." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-config-policy" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor configuration policy resource type." + } + }, + "inner_properties": null, + "description": "A monitor configuration policy data." + } + }, + "inner_properties": null, + "description": "Description of the update." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for editing a monitor configuration policy.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A monitor configuration policy data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Policy and policy type for a monitor configuration policy.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"Configuration for the policy.\",\n \"oneOf\": [\n {\n \"description\": \"Tag attributes of a monitor configuration policy.\",\n \"properties\": {\n \"tag_key\": {\n \"description\": \"The key of the tag.\",\n \"example\": \"datacenter\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"tag_key_required\": {\n \"description\": \"If a tag key is required for monitor creation.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"valid_tag_values\": {\n \"description\": \"Valid values for the tag.\",\n \"example\": [\n \"prod\",\n \"staging\"\n ],\n \"items\": {\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n ]\n },\n \"policy_type\": {\n \"default\": \"tag\",\n \"description\": \"The monitor configuration policy type.\",\n \"enum\": [\n \"tag\"\n ],\n \"example\": \"tag\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TAG\"\n ]\n }\n },\n \"required\": [\n \"policy_type\",\n \"policy\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of this monitor configuration policy.\",\n \"example\": \"00000000-0000-1234-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"monitor-config-policy\",\n \"description\": \"Monitor configuration policy resource type.\",\n \"enum\": [\n \"monitor-config-policy\"\n ],\n \"example\": \"monitor-config-policy\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_CONFIG_POLICY\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Description of the update.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditRestrictionQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditRestrictionQuery.json new file mode 100644 index 00000000..f9846cb0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditRestrictionQuery.json @@ -0,0 +1,196 @@ +{ + "name": "EditRestrictionQuery", + "fully_qualified_name": "DatadogApi.EditRestrictionQuery@0.1.0", + "description": "Edit an existing restriction query in Datadog.\n\nUse this tool to modify restriction queries in Datadog's log configuration. Call this when you need to update specific restriction parameters for log queries.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "restriction_query_id", + "required": true, + "description": "The ID of the restriction query to be edited.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "restriction_query_id" + }, + { + "name": "restriction_query_string", + "required": false, + "description": "The restriction query string to update for the restriction query in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.restriction_query" + }, + { + "name": "restriction_query_resource_type", + "required": false, + "description": "The type of restriction query resource. Must be 'logs_restriction_queries'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_restriction_queries" + ], + "properties": null, + "inner_properties": null, + "description": "Restriction query resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateRestrictionQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "restriction_query_id", + "tool_parameter_name": "restriction_query_id", + "description": "The ID of the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.restriction_query", + "tool_parameter_name": "restriction_query_string", + "description": "The restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The restriction query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "restriction_query_resource_type", + "description": "Restriction query resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_restriction_queries" + ], + "properties": null, + "inner_properties": null, + "description": "Restriction query resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "logs_restriction_queries", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update a restriction query.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the update of a restriction query.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the edited restriction query.\",\n \"properties\": {\n \"restriction_query\": {\n \"description\": \"The restriction query.\",\n \"example\": \"env:sandbox\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"logs_restriction_queries\",\n \"description\": \"Restriction query resource type.\",\n \"enum\": [\n \"logs_restriction_queries\"\n ],\n \"example\": \"logs_restriction_queries\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS_RESTRICTION_QUERIES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditRole.json new file mode 100644 index 00000000..293adda4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditRole.json @@ -0,0 +1,387 @@ +{ + "name": "EditRole", + "fully_qualified_name": "DatadogApi.EditRole@0.1.0", + "description": "Edit a role with administrator application keys.\n\nUse this tool to edit an existing role in Datadog. It's designed for administrators using application keys to make updates to specified roles.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_identifier", + "required": true, + "description": "The unique identifier for the role to be edited.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + }, + { + "name": "role_update_data", + "required": true, + "description": "JSON object containing the updated role data, including attributes like name, created_at, modified_at, user_count, and relationships like permissions.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the role." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of last role modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the role." + }, + "user_count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user count." + } + }, + "inner_properties": null, + "description": "Attributes of the role." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "permissions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + } + }, + "description": "Relationships to permission objects." + } + }, + "inner_properties": null, + "description": "Relationship to multiple permissions objects." + } + }, + "inner_properties": null, + "description": "Relationships of the role object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "inner_properties": null, + "description": "Data related to the update of a role." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "role_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the role." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of last role modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the role." + }, + "user_count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user count." + } + }, + "inner_properties": null, + "description": "Attributes of the role." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "permissions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + } + }, + "description": "Relationships to permission objects." + } + }, + "inner_properties": null, + "description": "Relationship to multiple permissions objects." + } + }, + "inner_properties": null, + "description": "Relationships of the role object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + } + }, + "inner_properties": null, + "description": "Data related to the update of a role." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update a role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the update of a role.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the role.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Creation time of the role.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"modified_at\": {\n \"description\": \"Time of last role modification.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the role.\",\n \"type\": \"string\"\n },\n \"user_count\": {\n \"description\": \"The user count.\",\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"00000000-0000-1111-0000-000000000000\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Relationships of the role object.\",\n \"properties\": {\n \"permissions\": {\n \"description\": \"Relationship to multiple permissions objects.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationships to permission objects.\",\n \"items\": {\n \"description\": \"Relationship to permission object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the permission.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"permissions\",\n \"description\": \"Permissions resource type.\",\n \"enum\": [\n \"permissions\"\n ],\n \"example\": \"permissions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PERMISSIONS\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditSecuritySignalIncidents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditSecuritySignalIncidents.json new file mode 100644 index 00000000..ac13d200 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditSecuritySignalIncidents.json @@ -0,0 +1,192 @@ +{ + "name": "EditSecuritySignalIncidents", + "fully_qualified_name": "DatadogApi.EditSecuritySignalIncidents@0.1.0", + "description": "Modify incidents linked to a security signal.\n\nThis tool allows for updating the incidents related to a specific security monitoring signal. Use it when you need to change how a security signal is associated with incidents.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "signal_id", + "required": true, + "description": "The unique identifier for the security signal to modify.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "signal_id" + }, + { + "name": "incident_ids", + "required": true, + "description": "An array of incident IDs to associate with the security signal.", + "value_schema": { + "val_type": "array", + "inner_val_type": "integer", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of incidents that are associated with this signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.incident_ids" + }, + { + "name": "signal_version", + "required": false, + "description": "Version of the updated signal. Ensure the client-side version is not lower than the server-side version to avoid rejection.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the updated signal. If server side version is higher, update will be rejected." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'EditSecurityMonitoringSignalIncidents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}/incidents", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "signal_id", + "tool_parameter_name": "signal_id", + "description": "The ID of the signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.incident_ids", + "tool_parameter_name": "incident_ids", + "description": "Array of incidents that are associated with this signal.", + "value_schema": { + "val_type": "array", + "inner_val_type": "integer", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of incidents that are associated with this signal." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.version", + "tool_parameter_name": "signal_version", + "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the updated signal. If server side version is higher, update will be rejected." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request body for changing the related incidents of a given security monitoring signal.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data containing the patch for changing the related incidents of a signal.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes describing the new list of related signals for a security signal.\",\n \"properties\": {\n \"incident_ids\": {\n \"description\": \"Array of incidents that are associated with this signal.\",\n \"example\": [\n 2066\n ],\n \"items\": {\n \"description\": \"Public ID attribute of the incident that is associated with the signal.\",\n \"example\": 2066,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": \"array\"\n },\n \"version\": {\n \"description\": \"Version of the updated signal. If server side version is higher, update will be rejected.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"incident_ids\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Attributes describing the signal update.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditServiceAccountKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditServiceAccountKey.json new file mode 100644 index 00000000..edd54bea --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditServiceAccountKey.json @@ -0,0 +1,295 @@ +{ + "name": "EditServiceAccountKey", + "fully_qualified_name": "DatadogApi.EditServiceAccountKey@0.1.0", + "description": "Edit an application key for a service account.\n\nUse this tool to modify the details of an existing application key owned by a specific service account. This can help in updating permissions or other key parameters as needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_account_id", + "required": true, + "description": "The unique identifier for the service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_account_id" + }, + { + "name": "application_key_id", + "required": true, + "description": "The unique identifier for the application key to be edited.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + }, + { + "name": "app_key_identifier", + "required": true, + "description": "The unique identifier of the application key to be edited.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "application_key_resource_type", + "required": true, + "description": "Specify the type of resource for the application key. Must be 'application_keys'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "application_key_name", + "required": false, + "description": "Name of the application key to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "application_key_scopes", + "required": false, + "description": "Array of scopes to grant the application key. Each scope is a string representing a permission or capability.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.scopes" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateServiceAccountApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "service_account_id", + "tool_parameter_name": "service_account_id", + "description": "The ID of the service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "application_key_name", + "description": "Name of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.scopes", + "tool_parameter_name": "application_key_scopes", + "description": "Array of scopes to grant the application key.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "app_key_identifier", + "description": "ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the application key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "application_key_resource_type", + "description": "Application Keys resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "application_keys", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to update an application key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object used to update an application key.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes used to update an application Key.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the application key.\",\n \"example\": \"Application Key for managing dashboards\",\n \"type\": \"string\"\n },\n \"scopes\": {\n \"description\": \"Array of scopes to grant the application key.\",\n \"example\": [\n \"dashboards_read\",\n \"dashboards_write\",\n \"dashboards_public_share\"\n ],\n \"items\": {\n \"description\": \"Name of scope.\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the application key.\",\n \"example\": \"00112233-4455-6677-8899-aabbccddeeff\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"application_keys\",\n \"description\": \"Application Keys resource type.\",\n \"enum\": [\n \"application_keys\"\n ],\n \"example\": \"application_keys\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPLICATION_KEYS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditSignalAssignee.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditSignalAssignee.json new file mode 100644 index 00000000..dc2d8ace --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditSignalAssignee.json @@ -0,0 +1,324 @@ +{ + "name": "EditSignalAssignee", + "fully_qualified_name": "DatadogApi.EditSignalAssignee@0.1.0", + "description": "Modify the triage assignee of a security signal.\n\nUse this tool to change the person assigned to handle a security monitoring signal in Datadog. This is helpful when reassigning tasks to different team members for better workload distribution or expertise alignment.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "signal_id", + "required": true, + "description": "The unique identifier for the security signal to modify its assignee.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "signal_id" + }, + { + "name": "assignee_uuid", + "required": true, + "description": "UUID assigned by Datadog to identify the user account for the signal's assignee.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID assigned by Datadog to this user account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.assignee.uuid" + }, + { + "name": "user_account_handle", + "required": false, + "description": "The handle for the user account to be assigned the security signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The handle for this user account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.assignee.handle" + }, + { + "name": "assignee_gravatar_icon", + "required": false, + "description": "URL for the Gravatar icon associated with the user account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Gravatar icon associated to the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.assignee.icon" + }, + { + "name": "user_account_numerical_id", + "required": false, + "description": "Numerical ID assigned by Datadog to the user account. Required for identifying the assignee.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numerical ID assigned by Datadog to this user account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.assignee.id" + }, + { + "name": "assignee_name", + "required": false, + "description": "The name for the user account to be assigned the security signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for this user account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.assignee.name" + }, + { + "name": "signal_version_number", + "required": false, + "description": "Integer representing the version of the updated signal. If the server-side version is higher, the update will be rejected.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the updated signal. If server side version is higher, update will be rejected." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'EditSecurityMonitoringSignalAssignee'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}/assignee", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "signal_id", + "tool_parameter_name": "signal_id", + "description": "The ID of the signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.assignee.handle", + "tool_parameter_name": "user_account_handle", + "description": "The handle for this user account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The handle for this user account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.assignee.icon", + "tool_parameter_name": "assignee_gravatar_icon", + "description": "Gravatar icon associated to the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Gravatar icon associated to the user." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.assignee.id", + "tool_parameter_name": "user_account_numerical_id", + "description": "Numerical ID assigned by Datadog to this user account.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Numerical ID assigned by Datadog to this user account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.assignee.name", + "tool_parameter_name": "assignee_name", + "description": "The name for this user account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for this user account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.assignee.uuid", + "tool_parameter_name": "assignee_uuid", + "description": "UUID assigned by Datadog to this user account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID assigned by Datadog to this user account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.version", + "tool_parameter_name": "signal_version_number", + "description": "Version of the updated signal. If server side version is higher, update will be rejected.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the updated signal. If server side version is higher, update will be rejected." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request body for changing the assignee of a given security monitoring signal.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data containing the patch for changing the assignee of a signal.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes describing the new assignee of a security signal.\",\n \"properties\": {\n \"assignee\": {\n \"description\": \"Object representing a given user entity.\",\n \"properties\": {\n \"handle\": {\n \"description\": \"The handle for this user account.\",\n \"type\": \"string\"\n },\n \"icon\": {\n \"description\": \"Gravatar icon associated to the user.\",\n \"example\": \"/path/to/matching/gravatar/icon\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Numerical ID assigned by Datadog to this user account.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"The name for this user account.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"uuid\": {\n \"description\": \"UUID assigned by Datadog to this user account.\",\n \"example\": \"773b045d-ccf8-4808-bd3b-955ef6a8c940\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"uuid\"\n ],\n \"type\": \"object\"\n },\n \"version\": {\n \"description\": \"Version of the updated signal. If server side version is higher, update will be rejected.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"assignee\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Attributes describing the signal update.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditUserAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditUserAppKey.json new file mode 100644 index 00000000..8fbfc04a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EditUserAppKey.json @@ -0,0 +1,262 @@ +{ + "name": "EditUserAppKey", + "fully_qualified_name": "DatadogApi.EditUserAppKey@0.1.0", + "description": "Edit an application key owned by the current user.\n\nUse this tool to modify an existing application key for the current user. This is useful when you need to update permissions or other details associated with your application keys.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_key_id", + "required": true, + "description": "The ID of the application key to be edited. Must be a valid string ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + }, + { + "name": "app_key_identifier", + "required": true, + "description": "ID of the application key to be edited.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "application_key_resource_type", + "required": true, + "description": "Specifies the resource type for the application key. Use the value 'application_keys'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "application_key_name", + "required": false, + "description": "New name for the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "application_key_scopes", + "required": false, + "description": "List of scopes to grant the application key. Each scope is a string defining permissions.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.scopes" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCurrentUserApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/current_user/application_keys/{app_key_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "application_key_name", + "description": "Name of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.scopes", + "tool_parameter_name": "application_key_scopes", + "description": "Array of scopes to grant the application key.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "app_key_identifier", + "description": "ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the application key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "application_key_resource_type", + "description": "Application Keys resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "application_keys", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to update an application key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object used to update an application key.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes used to update an application Key.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the application key.\",\n \"example\": \"Application Key for managing dashboards\",\n \"type\": \"string\"\n },\n \"scopes\": {\n \"description\": \"Array of scopes to grant the application key.\",\n \"example\": [\n \"dashboards_read\",\n \"dashboards_write\",\n \"dashboards_public_share\"\n ],\n \"items\": {\n \"description\": \"Name of scope.\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the application key.\",\n \"example\": \"00112233-4455-6677-8899-aabbccddeeff\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"application_keys\",\n \"description\": \"Application Keys resource type.\",\n \"enum\": [\n \"application_keys\"\n ],\n \"example\": \"application_keys\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPLICATION_KEYS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EscalateOnCallPage.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EscalateOnCallPage.json new file mode 100644 index 00000000..5a279c75 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EscalateOnCallPage.json @@ -0,0 +1,126 @@ +{ + "name": "EscalateOnCallPage", + "fully_qualified_name": "DatadogApi.EscalateOnCallPage@0.1.0", + "description": "Escalate an on-call page to notify the responsible team.\n\nUse this tool to escalate an on-call page when immediate attention is needed from the responsible team.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "on_call_page_id", + "required": true, + "description": "The unique identifier for the on-call page to be escalated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'EscalateOnCallPage'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/pages/{page_id}/escalate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "page_id", + "tool_parameter_name": "on_call_page_id", + "description": "The page ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EstimateMetricsOutput.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EstimateMetricsOutput.json new file mode 100644 index 00000000..9ee57246 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/EstimateMetricsOutput.json @@ -0,0 +1,291 @@ +{ + "name": "EstimateMetricsOutput", + "fully_qualified_name": "DatadogApi.EstimateMetricsOutput@0.1.0", + "description": "Estimate cardinality of a metric with specific settings.\n\nUse this tool to get the estimated cardinality for a metric based on a specific tag, percentile, and number of aggregations configuration. This is useful for analyzing metric data within Datadog using Metrics without Limits\u2122.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "Specifies the name of the metric for which to estimate cardinality.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + }, + { + "name": "filtered_tag_keys", + "required": false, + "description": "Filtered tag keys that the metric is configured to query with, specified as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filtered tag keys that the metric is configured to query with." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[groups]" + }, + { + "name": "lookback_hours", + "required": false, + "description": "Specify the number of hours to look back from the current time to estimate cardinality. Defaults to 0 if not provided.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of hours of look back (from now) to estimate cardinality with. If unspecified, it defaults to 0 hours." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[hours_ago]" + }, + { + "name": "ignore_num_aggregations", + "required": false, + "description": "This argument is deprecated and has no impact on volume estimation. It is ignored in the current tool implementation.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deprecated. Number of aggregations has no impact on volume." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[num_aggregations]" + }, + { + "name": "lookback_timespan_hours", + "required": false, + "description": "A window, in hours, from the lookback to estimate cardinality. Minimum is 1 hour.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A window, in hours, from the look back to estimate cardinality with. The minimum and default is 1 hour." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[timespan_h]" + }, + { + "name": "include_percentile_aggregators", + "required": false, + "description": "Boolean to estimate cardinality if distribution metrics have additional percentile aggregators.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A boolean, for distribution metrics only, to estimate cardinality if the metric includes additional percentile aggregators." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[pct]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'EstimateMetricsOutputSeries'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/estimate", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[groups]", + "tool_parameter_name": "filtered_tag_keys", + "description": "Filtered tag keys that the metric is configured to query with.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filtered tag keys that the metric is configured to query with." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[hours_ago]", + "tool_parameter_name": "lookback_hours", + "description": "The number of hours of look back (from now) to estimate cardinality with. If unspecified, it defaults to 0 hours.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of hours of look back (from now) to estimate cardinality with. If unspecified, it defaults to 0 hours." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[num_aggregations]", + "tool_parameter_name": "ignore_num_aggregations", + "description": "Deprecated. Number of aggregations has no impact on volume.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deprecated. Number of aggregations has no impact on volume." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[pct]", + "tool_parameter_name": "include_percentile_aggregators", + "description": "A boolean, for distribution metrics only, to estimate cardinality if the metric includes additional percentile aggregators.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A boolean, for distribution metrics only, to estimate cardinality if the metric includes additional percentile aggregators." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[timespan_h]", + "tool_parameter_name": "lookback_timespan_hours", + "description": "A window, in hours, from the look back to estimate cardinality with. The minimum and default is 1 hour.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A window, in hours, from the look back to estimate cardinality with. The minimum and default is 1 hour." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ExecuteWorkflow.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ExecuteWorkflow.json new file mode 100644 index 00000000..5e0c3214 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ExecuteWorkflow.json @@ -0,0 +1,195 @@ +{ + "name": "ExecuteWorkflow", + "fully_qualified_name": "DatadogApi.ExecuteWorkflow@0.1.0", + "description": "Execute a specified workflow in Datadog.\n\nInitiates the execution of a workflow in Datadog using the provided workflow ID. Ensure that a registered application key or appropriate UI configuration is used for authentication.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_identifier", + "required": true, + "description": "The unique ID of the Datadog workflow to be executed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "inferrable": true, + "http_endpoint_parameter_name": "workflow_id" + }, + { + "name": "workflow_execution_parameters", + "required": true, + "description": "JSON object containing input parameters and additional information for the workflow instance execution.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payload": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The input parameters to the workflow." + } + }, + "inner_properties": null, + "description": "Additional information for creating a workflow instance." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateWorkflowInstance'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "workflow_id", + "tool_parameter_name": "workflow_identifier", + "description": "The ID of the workflow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "workflow_execution_parameters", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "payload": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The input parameters to the workflow." + } + }, + "inner_properties": null, + "description": "Additional information for creating a workflow instance." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to create a workflow instance.\",\n \"properties\": {\n \"meta\": {\n \"description\": \"Additional information for creating a workflow instance.\",\n \"properties\": {\n \"payload\": {\n \"additionalProperties\": {},\n \"description\": \"The input parameters to the workflow.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAllScorecardOutcomes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAllScorecardOutcomes.json new file mode 100644 index 00000000..dd6e42e4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAllScorecardOutcomes.json @@ -0,0 +1,423 @@ +{ + "name": "FetchAllScorecardOutcomes", + "fully_qualified_name": "DatadogApi.FetchAllScorecardOutcomes@0.1.0", + "description": "Retrieve all rule outcomes from scorecards.\n\nUse this tool to fetch all outcomes from scorecards in Datadog. It's useful for obtaining detailed results of applied rules.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "The number of results per page, with a maximum of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_offset", + "required": false, + "description": "Specific offset to use as the beginning of the returned page, represented as an integer.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "include_rule_details", + "required": false, + "description": "Specify if related rule details should be included in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include related rule details in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "specified_outcome_values", + "required": false, + "description": "Comma-separated list of specific outcome attributes to return. Limits the response to these attributes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specified values in the outcome attributes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fields[outcome]" + }, + { + "name": "rule_fields_to_return", + "required": false, + "description": "Specify which fields to return in the included rule details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specified values in the included rule details." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fields[rule]" + }, + { + "name": "filter_outcomes_by_service_name", + "required": false, + "description": "Filter outcomes based on a specific service name. Provide the service name as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the outcomes on a specific service name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[outcome][service_name]" + }, + { + "name": "outcome_state_filter", + "required": false, + "description": "Filter the scorecard outcomes by a specific state. Accepts a state value as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the outcomes by a specific state." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[outcome][state]" + }, + { + "name": "filter_by_rule_id", + "required": false, + "description": "Filter outcomes based on specific rule ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter outcomes based on rule ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][id]" + }, + { + "name": "filter_by_rule_name", + "required": false, + "description": "Filter outcomes based on a specific rule name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter outcomes based on rule name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][name]" + }, + { + "name": "filter_rule_enabled", + "required": false, + "description": "Filter outcomes based on whether a rule is enabled (true) or disabled (false).", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter outcomes on whether a rule is enabled/disabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][enabled]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListScorecardOutcomes'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/scorecard/outcomes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_rule_details", + "description": "Include related rule details in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include related rule details in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fields[outcome]", + "tool_parameter_name": "specified_outcome_values", + "description": "Return only specified values in the outcome attributes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specified values in the outcome attributes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fields[rule]", + "tool_parameter_name": "rule_fields_to_return", + "description": "Return only specified values in the included rule details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specified values in the included rule details." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[outcome][service_name]", + "tool_parameter_name": "filter_outcomes_by_service_name", + "description": "Filter the outcomes on a specific service name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the outcomes on a specific service name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[outcome][state]", + "tool_parameter_name": "outcome_state_filter", + "description": "Filter the outcomes by a specific state.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the outcomes by a specific state." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][enabled]", + "tool_parameter_name": "filter_rule_enabled", + "description": "Filter outcomes on whether a rule is enabled/disabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter outcomes on whether a rule is enabled/disabled." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][id]", + "tool_parameter_name": "filter_by_rule_id", + "description": "Filter outcomes based on rule ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter outcomes based on rule ID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][name]", + "tool_parameter_name": "filter_by_rule_name", + "description": "Filter outcomes based on rule name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter outcomes based on rule name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAwsIntegrationPermissions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAwsIntegrationPermissions.json new file mode 100644 index 00000000..1909fdab --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAwsIntegrationPermissions.json @@ -0,0 +1,91 @@ +{ + "name": "FetchAwsIntegrationPermissions", + "fully_qualified_name": "DatadogApi.FetchAwsIntegrationPermissions@0.1.0", + "description": "Retrieve AWS IAM permissions for Datadog integration.\n\nCall this tool to obtain the list of AWS IAM permissions required for integrating AWS with Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetAWSIntegrationIAMPermissions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/iam_permissions", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAwsScanSettings.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAwsScanSettings.json new file mode 100644 index 00000000..4314100f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAwsScanSettings.json @@ -0,0 +1,126 @@ +{ + "name": "FetchAwsScanSettings", + "fully_qualified_name": "DatadogApi.FetchAwsScanSettings@0.1.0", + "description": "Fetches Agentless scan options for AWS accounts.\n\nUse this tool to retrieve the configuration of Agentless scan options for a specified AWS account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_id", + "required": true, + "description": "The unique ID of an AWS account for fetching scan options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of an AWS account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAwsScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws/{account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "aws_account_id", + "description": "The ID of an AWS account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of an AWS account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAzureScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAzureScanOptions.json new file mode 100644 index 00000000..577681dd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchAzureScanOptions.json @@ -0,0 +1,91 @@ +{ + "name": "FetchAzureScanOptions", + "fully_qualified_name": "DatadogApi.FetchAzureScanOptions@0.1.0", + "description": "Fetches the scan options for Azure accounts from Datadog.\n\nCall this tool to retrieve the current scan options configured for Azure accounts in Datadog. It provides details about the configuration settings used in agentless scanning for these accounts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListAzureScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchConfluentResource.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchConfluentResource.json new file mode 100644 index 00000000..e0590d05 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchConfluentResource.json @@ -0,0 +1,159 @@ +{ + "name": "FetchConfluentResource", + "fully_qualified_name": "DatadogApi.FetchConfluentResource@0.1.0", + "description": "Retrieve a Confluent resource using account and resource IDs.\n\nUse this tool to obtain information about a specific Confluent resource linked to a particular account by providing the account and resource IDs.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "The ID of the Confluent account to retrieve the resource for. This should be a string value representing the account identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "confluent_resource_id", + "required": true, + "description": "The ID of the Confluent resource associated with the specified account. Provide this to retrieve the resource details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account Resource ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "resource_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetConfluentResource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resource_id", + "tool_parameter_name": "confluent_resource_id", + "description": "Confluent Account Resource ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account Resource ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchCustomCostsFile.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchCustomCostsFile.json new file mode 100644 index 00000000..a84c2cf7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchCustomCostsFile.json @@ -0,0 +1,126 @@ +{ + "name": "FetchCustomCostsFile", + "fully_qualified_name": "DatadogApi.FetchCustomCostsFile@0.1.0", + "description": "Fetch a specified Custom Costs file by file ID from Datadog.\n\nUse this tool to retrieve a specific Custom Costs file from Datadog by providing the file ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "file_identifier", + "required": true, + "description": "A unique identifier for the Custom Costs file to be retrieved from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "file_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCustomCostsFile'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/custom_costs/{file_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "file_id", + "tool_parameter_name": "file_identifier", + "description": "File ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "File ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchDashboardListItems.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchDashboardListItems.json new file mode 100644 index 00000000..7b07c2b9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchDashboardListItems.json @@ -0,0 +1,126 @@ +{ + "name": "FetchDashboardListItems", + "fully_qualified_name": "DatadogApi.FetchDashboardListItems@0.1.0", + "description": "Fetch details of dashboards in a list.\n\nUse this tool to retrieve the details of dashboards contained in a specific dashboard list by providing the list ID. It returns the dashboard definitions for that list.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dashboard_list_id", + "required": true, + "description": "The unique integer ID of the dashboard list from which to retrieve dashboard definitions.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to get items from." + }, + "inferrable": true, + "http_endpoint_parameter_name": "dashboard_list_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetDashboardListItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "dashboard_list_id", + "tool_parameter_name": "dashboard_list_id", + "description": "ID of the dashboard list to get items from.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to get items from." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchGcpScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchGcpScanOptions.json new file mode 100644 index 00000000..cbad56a5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchGcpScanOptions.json @@ -0,0 +1,91 @@ +{ + "name": "FetchGcpScanOptions", + "fully_qualified_name": "DatadogApi.FetchGcpScanOptions@0.1.0", + "description": "Fetch GCP project scan options.\n\nThis tool retrieves the scan options configured for all Google Cloud Platform (GCP) projects, facilitating the assessment of agentless scanning configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListGcpScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchMonthlyCostAttribution.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchMonthlyCostAttribution.json new file mode 100644 index 00000000..9d5ba13b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchMonthlyCostAttribution.json @@ -0,0 +1,363 @@ +{ + "name": "FetchMonthlyCostAttribution", + "fully_qualified_name": "DatadogApi.FetchMonthlyCostAttribution@0.1.0", + "description": "Retrieve monthly cost attribution data by tag.\n\nFetch detailed monthly cost attribution by tag for both multi-org and single root-org accounts. Use this to track and report cost allocations within an organization after the 19th of each month. Ensure to handle pagination if necessary to acquire all records.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_month", + "required": true, + "description": "Datetime in ISO-8601 format, UTC, precise to month `[YYYY-MM]`. Represents the start of the costing period.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning in this month." + }, + "inferrable": true, + "http_endpoint_parameter_name": "start_month" + }, + { + "name": "cost_types_fields", + "required": true, + "description": "Comma-separated list specifying cost types and proportions. Use `*` to retrieve all fields. Example: `infra_host_on_demand_cost,infra_host_percentage_in_account`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list specifying cost types (e.g., `_on_demand_cost`, `_committed_cost`, `_total_cost`) and the\nproportions (`_percentage_in_org`, `_percentage_in_account`). Use `*` to retrieve all fields.\nExample: `infra_host_on_demand_cost,infra_host_percentage_in_account`\nTo obtain the complete list of active billing dimensions that can be used to replace\n`` in the field names, make a request to the [Get active billing dimensions API](https://docs.datadoghq.com/api/latest/usage-metering/#get-active-billing-dimensions-for-cost-attribution)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fields" + }, + { + "name": "end_month", + "required": false, + "description": "The final month for cost calculation. Use ISO-8601 format `[YYYY-MM]` to specify the month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month." + }, + "inferrable": true, + "http_endpoint_parameter_name": "end_month" + }, + { + "name": "sort_by_direction", + "required": false, + "description": "Specifies the direction to sort cost attribution data. Use 'desc' for descending or 'asc' for ascending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "desc", + "asc" + ], + "properties": null, + "inner_properties": null, + "description": "The direction to sort by: `[desc, asc]`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_direction" + }, + { + "name": "sort_by_billing_dimension", + "required": false, + "description": "Billing dimension to sort by. Defaults to sorting by total cost. Example: 'infra_host'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The billing dimension to sort by. Always sorted by total cost. Example: `infra_host`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_name" + }, + { + "name": "tag_keys_for_cost_grouping", + "required": false, + "description": "Comma-separated list of tag keys used to group costs. If empty, costs won't be grouped by tag. Check `tag_config_source` in the API response for available tags.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of tag keys used to group cost. If no value is provided the cost will not be broken down by tags.\nTo see which tags are available, look for the value of `tag_config_source` in the API response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tag_breakdown_keys" + }, + { + "name": "pagination_next_record_id", + "required": false, + "description": "Identifier for fetching the next set of results in a paginated response. Use the 'next_record_id' from the previous response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a next_record_id provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "next_record_id" + }, + { + "name": "include_child_organization_costs", + "required": false, + "description": "Include child organization costs in the response. Defaults to true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include child org cost in the response. Defaults to `true`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include_descendants" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetMonthlyCostAttribution'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost_by_tag/monthly_cost_attribution", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "start_month", + "tool_parameter_name": "start_month", + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning in this month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning in this month." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "end_month", + "tool_parameter_name": "end_month", + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fields", + "tool_parameter_name": "cost_types_fields", + "description": "Comma-separated list specifying cost types (e.g., `_on_demand_cost`, `_committed_cost`, `_total_cost`) and the\nproportions (`_percentage_in_org`, `_percentage_in_account`). Use `*` to retrieve all fields.\nExample: `infra_host_on_demand_cost,infra_host_percentage_in_account`\nTo obtain the complete list of active billing dimensions that can be used to replace\n`` in the field names, make a request to the [Get active billing dimensions API](https://docs.datadoghq.com/api/latest/usage-metering/#get-active-billing-dimensions-for-cost-attribution).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list specifying cost types (e.g., `_on_demand_cost`, `_committed_cost`, `_total_cost`) and the\nproportions (`_percentage_in_org`, `_percentage_in_account`). Use `*` to retrieve all fields.\nExample: `infra_host_on_demand_cost,infra_host_percentage_in_account`\nTo obtain the complete list of active billing dimensions that can be used to replace\n`` in the field names, make a request to the [Get active billing dimensions API](https://docs.datadoghq.com/api/latest/usage-metering/#get-active-billing-dimensions-for-cost-attribution)." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort_direction", + "tool_parameter_name": "sort_by_direction", + "description": "The direction to sort by: `[desc, asc]`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "desc", + "asc" + ], + "properties": null, + "inner_properties": null, + "description": "The direction to sort by: `[desc, asc]`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "desc", + "documentation_urls": [] + }, + { + "name": "sort_name", + "tool_parameter_name": "sort_by_billing_dimension", + "description": "The billing dimension to sort by. Always sorted by total cost. Example: `infra_host`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The billing dimension to sort by. Always sorted by total cost. Example: `infra_host`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tag_breakdown_keys", + "tool_parameter_name": "tag_keys_for_cost_grouping", + "description": "Comma separated list of tag keys used to group cost. If no value is provided the cost will not be broken down by tags.\nTo see which tags are available, look for the value of `tag_config_source` in the API response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of tag keys used to group cost. If no value is provided the cost will not be broken down by tags.\nTo see which tags are available, look for the value of `tag_config_source` in the API response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "next_record_id", + "tool_parameter_name": "pagination_next_record_id", + "description": "List following results with a next_record_id provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a next_record_id provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include_descendants", + "tool_parameter_name": "include_child_organization_costs", + "description": "Include child org cost in the response. Defaults to `true`.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include child org cost in the response. Defaults to `true`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": true, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchRecentAwsOnDemandTasks.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchRecentAwsOnDemandTasks.json new file mode 100644 index 00000000..b51582f2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchRecentAwsOnDemandTasks.json @@ -0,0 +1,91 @@ +{ + "name": "FetchRecentAwsOnDemandTasks", + "fully_qualified_name": "DatadogApi.FetchRecentAwsOnDemandTasks@0.1.0", + "description": "Retrieve the latest AWS on demand tasks.\n\nFetches the most recent 1000 AWS on demand tasks. Useful for monitoring or analyzing recent AWS activities managed by Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListAwsOnDemandTasks'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/ondemand/aws", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchScorecardRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchScorecardRules.json new file mode 100644 index 00000000..1ce8d998 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FetchScorecardRules.json @@ -0,0 +1,423 @@ +{ + "name": "FetchScorecardRules", + "fully_qualified_name": "DatadogApi.FetchScorecardRules@0.1.0", + "description": "Fetch all scorecard rules from Datadog.\n\nUse this tool to retrieve a list of all scorecard rules from Datadog's API. This is useful for managing and reviewing rules related to scorecards.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Number of rules to return per page. Maximum value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_offset", + "required": false, + "description": "Specific offset to use as the beginning of the returned page for fetching scorecard rules.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "include_scorecard_details", + "required": false, + "description": "Specify related scorecard details to include in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include related scorecard details in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "filter_rule_by_id", + "required": false, + "description": "Filter the rules based on a specific rule ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the rules on a rule ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][id]" + }, + { + "name": "filter_rules_by_name", + "required": false, + "description": "Specify a rule name to filter the scorecard rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter rules on the rule name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][name]" + }, + { + "name": "filter_rule_description", + "required": false, + "description": "Filter rules based on their description. Provide a string to match against the rule descriptions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter rules on the rule description." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][description]" + }, + { + "name": "specific_rule_fields", + "required": false, + "description": "Specify which rule fields to include in the response. Provide a comma-separated list of field names.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specific fields in the response for rule attributes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fields[rule]" + }, + { + "name": "specific_scorecard_fields", + "required": false, + "description": "Specify which fields to include in the response for scorecard attributes. Use comma-separated values.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specific fields in the included response for scorecard attributes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fields[scorecard]" + }, + { + "name": "filter_for_enabled_rules", + "required": false, + "description": "Set to true to filter for enabled rules only.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter for enabled rules only." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][enabled]" + }, + { + "name": "filter_custom_rules_only", + "required": false, + "description": "Set to true to include only custom rules in the results.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter for custom rules only." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule][custom]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListScorecardRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/scorecard/rules", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_scorecard_details", + "description": "Include related scorecard details in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include related scorecard details in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][id]", + "tool_parameter_name": "filter_rule_by_id", + "description": "Filter the rules on a rule ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter the rules on a rule ID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][enabled]", + "tool_parameter_name": "filter_for_enabled_rules", + "description": "Filter for enabled rules only.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter for enabled rules only." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][custom]", + "tool_parameter_name": "filter_custom_rules_only", + "description": "Filter for custom rules only.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter for custom rules only." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][name]", + "tool_parameter_name": "filter_rules_by_name", + "description": "Filter rules on the rule name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter rules on the rule name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule][description]", + "tool_parameter_name": "filter_rule_description", + "description": "Filter rules on the rule description.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter rules on the rule description." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fields[rule]", + "tool_parameter_name": "specific_rule_fields", + "description": "Return only specific fields in the response for rule attributes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specific fields in the response for rule attributes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fields[scorecard]", + "tool_parameter_name": "specific_scorecard_fields", + "description": "Return only specific fields in the included response for scorecard attributes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only specific fields in the included response for scorecard attributes." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FindSecurityAlerts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FindSecurityAlerts.json new file mode 100644 index 00000000..ea00d4e3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/FindSecurityAlerts.json @@ -0,0 +1,297 @@ +{ + "name": "FindSecurityAlerts", + "fully_qualified_name": "DatadogApi.FindSecurityAlerts@0.1.0", + "description": "Retrieve historical security monitoring signals from Datadog.\n\nThis tool is used to search and retrieve historical security monitoring signals in Datadog. Ideal for extracting past security incident data and analysis.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "minimum_timestamp", + "required": false, + "description": "The start timestamp for filtering requested security signals. Use ISO 8601 format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "search_query_for_security_signals", + "required": false, + "description": "Search query to filter and list specific security signals. Use keywords and operators to refine results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query for listing security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "maximum_timestamp_for_signals", + "required": false, + "description": "The maximum timestamp for requested security signals, formatted as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "String used to fetch the next set of results based on a previous query's cursor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "max_security_signals", + "required": false, + "description": "Specify the maximum number of security signals to retrieve in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_order", + "required": false, + "description": "The criteria for sorting security signals, either 'timestamp' or '-timestamp'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The sort parameters used for querying security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchSecurityMonitoringHistsignals'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/histsignals/search", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "minimum_timestamp", + "description": "The minimum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "search_query_for_security_signals", + "description": "Search query for listing security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query for listing security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "maximum_timestamp_for_signals", + "description": "The maximum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "A list of results using the cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "max_security_signals", + "description": "The maximum number of security signals in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "The sort parameters used for querying security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The sort parameters used for querying security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a security signal list.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"Search filters for listing security signals.\",\n \"properties\": {\n \"from\": {\n \"description\": \"The minimum timestamp for requested security signals.\",\n \"example\": \"2019-01-02T09:42:36.320Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Search query for listing security signals.\",\n \"example\": \"security:attack status:high\",\n \"type\": \"string\"\n },\n \"to\": {\n \"description\": \"The maximum timestamp for requested security signals.\",\n \"example\": \"2019-01-03T09:42:36.320Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"The paging attributes for listing security signals.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"A list of results using the cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum number of security signals in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"The sort parameters used for querying security signals.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GenerateAwsExternalId.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GenerateAwsExternalId.json new file mode 100644 index 00000000..8bc7366d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GenerateAwsExternalId.json @@ -0,0 +1,91 @@ +{ + "name": "GenerateAwsExternalId", + "fully_qualified_name": "DatadogApi.GenerateAwsExternalId@0.1.0", + "description": "Generate a new external ID for AWS authentication.\n\nThis tool is used to generate a new external ID for AWS role-based authentication through Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'CreateNewAWSExternalID'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/generate_new_external_id", + "http_method": "POST", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetActionConnection.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetActionConnection.json new file mode 100644 index 00000000..ced7f728 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetActionConnection.json @@ -0,0 +1,126 @@ +{ + "name": "GetActionConnection", + "fully_qualified_name": "DatadogApi.GetActionConnection@0.1.0", + "description": "Retrieve an existing Action Connection from Datadog.\n\nUse this tool to get details about an existing Action Connection in Datadog. This requires a registered application key.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "action_connection_id", + "required": true, + "description": "The ID of the action connection to retrieve. Required for fetching details of a specific connection.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the action connection" + }, + "inferrable": true, + "http_endpoint_parameter_name": "connection_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetActionConnection'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/connections/{connection_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "connection_id", + "tool_parameter_name": "action_connection_id", + "description": "The ID of the action connection", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the action connection" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetActiveBillingDimensions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetActiveBillingDimensions.json new file mode 100644 index 00000000..3026ca52 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetActiveBillingDimensions.json @@ -0,0 +1,91 @@ +{ + "name": "GetActiveBillingDimensions", + "fully_qualified_name": "DatadogApi.GetActiveBillingDimensions@0.1.0", + "description": "Retrieve active billing dimensions for cost attribution.\n\nCall this tool to get active billing dimensions used for attributing costs. Useful for understanding cost distribution across different dimensions. The data is available by the 19th of the following month.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetActiveBillingDimensions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost_by_tag/active_billing_dimensions", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAgentlessScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAgentlessScanOptions.json new file mode 100644 index 00000000..c3a6076b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAgentlessScanOptions.json @@ -0,0 +1,126 @@ +{ + "name": "GetAgentlessScanOptions", + "fully_qualified_name": "DatadogApi.GetAgentlessScanOptions@0.1.0", + "description": "Fetch Azure Agentless scan options for a subscription.\n\nUse this tool to retrieve the Agentless scan options for an activated Azure subscription. This is useful for understanding the scanning configurations applied to the subscription.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "azure_subscription_id", + "required": true, + "description": "The Azure subscription ID to retrieve the Agentless scan options for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "subscription_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAzureScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure/{subscription_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "subscription_id", + "tool_parameter_name": "azure_subscription_id", + "description": "The Azure subscription ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAggregatedConnections.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAggregatedConnections.json new file mode 100644 index 00000000..a7f3d79b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAggregatedConnections.json @@ -0,0 +1,258 @@ +{ + "name": "GetAggregatedConnections", + "fully_qualified_name": "DatadogApi.GetAggregatedConnections@0.1.0", + "description": "Retrieve all aggregated network connections from Datadog.\n\nThis tool is used to get a comprehensive view of all aggregated network connections. It's ideal for monitoring and analyzing network activity.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_time_unix_timestamp", + "required": false, + "description": "Unix timestamp for the start of the query window. Defaults to 15 minutes before `end_time_unix_timestamp` if not provided.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the `to` timestamp. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "end_query_window", + "required": false, + "description": "Unix timestamp for the end of the query window. Defaults to current time if not provided.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "to" + }, + { + "name": "group_by_fields", + "required": false, + "description": "Comma-separated list of fields to group connections by, with a maximum of 10 fields.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of fields to group connections by. The maximum number of group_by(s) is 10." + }, + "inferrable": true, + "http_endpoint_parameter_name": "group_by" + }, + { + "name": "filter_by_tags", + "required": false, + "description": "Comma-separated list of tags to filter connections by for more targeted querying.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter connections by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tags" + }, + { + "name": "connection_limit", + "required": false, + "description": "Set the number of connections to be returned, maximum 7500, default 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of connections to be returned. The maximum value is 7500. The default is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAggregatedConnections'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/network/connections/aggregate", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "from", + "tool_parameter_name": "start_time_unix_timestamp", + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the `to` timestamp. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the `to` timestamp. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "to", + "tool_parameter_name": "end_query_window", + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "group_by", + "tool_parameter_name": "group_by_fields", + "description": "Comma-separated list of fields to group connections by. The maximum number of group_by(s) is 10.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of fields to group connections by. The maximum number of group_by(s) is 10." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tags", + "tool_parameter_name": "filter_by_tags", + "description": "Comma-separated list of tags to filter connections by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter connections by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "connection_limit", + "description": "The number of connections to be returned. The maximum value is 7500. The default is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of connections to be returned. The maximum value is 7500. The default is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 100, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAggregatedDnsTraffic.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAggregatedDnsTraffic.json new file mode 100644 index 00000000..42ddd67a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAggregatedDnsTraffic.json @@ -0,0 +1,258 @@ +{ + "name": "GetAggregatedDnsTraffic", + "fully_qualified_name": "DatadogApi.GetAggregatedDnsTraffic@0.1.0", + "description": "Retrieve all aggregated DNS traffic data.\n\nThis tool fetches all the aggregated DNS traffic data using Datadog's API. It should be called when you need information about DNS traffic patterns or metrics.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_query_timestamp", + "required": false, + "description": "Unix timestamp for the query window start. Defaults to 15 min before `to` timestamp if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the `to` timestamp. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "end_timestamp", + "required": false, + "description": "Unix timestamp (seconds since epoch) for the end of the query window. Defaults to current time if not provided.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "to" + }, + { + "name": "group_dns_traffic_by_fields", + "required": false, + "description": "Comma-separated list of fields to group DNS traffic by. Defaults to `network.dns_query` if unspecified. Use `server_ungrouped` to avoid grouping. Maximum of 10 fields.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of fields to group DNS traffic by. The server side defaults to `network.dns_query` if unspecified. `server_ungrouped` may be used if groups are not desired. The maximum number of group_by(s) is 10." + }, + "inferrable": true, + "http_endpoint_parameter_name": "group_by" + }, + { + "name": "filter_dns_traffic_by_tags", + "required": false, + "description": "Comma-separated list of tags to filter the DNS traffic data within the query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter DNS traffic by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tags" + }, + { + "name": "max_dns_entries", + "required": false, + "description": "Number of aggregated DNS entries to return, up to a maximum of 7500. Default is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of aggregated DNS entries to be returned. The maximum value is 7500. The default is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAggregatedDns'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/network/dns/aggregate", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "from", + "tool_parameter_name": "start_query_timestamp", + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the `to` timestamp. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window. If not provided, the start of the query window is 15 minutes before the `to` timestamp. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "to", + "tool_parameter_name": "end_timestamp", + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window. If not provided, the end of the query window is the current time. If neither `from` nor `to` are provided, the query window is `[now - 15m, now]`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "group_by", + "tool_parameter_name": "group_dns_traffic_by_fields", + "description": "Comma-separated list of fields to group DNS traffic by. The server side defaults to `network.dns_query` if unspecified. `server_ungrouped` may be used if groups are not desired. The maximum number of group_by(s) is 10.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of fields to group DNS traffic by. The server side defaults to `network.dns_query` if unspecified. `server_ungrouped` may be used if groups are not desired. The maximum number of group_by(s) is 10." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tags", + "tool_parameter_name": "filter_dns_traffic_by_tags", + "description": "Comma-separated list of tags to filter DNS traffic by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter DNS traffic by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "max_dns_entries", + "description": "The number of aggregated DNS entries to be returned. The maximum value is 7500. The default is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of aggregated DNS entries to be returned. The maximum value is 7500. The default is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 100, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllCustomAttributes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllCustomAttributes.json new file mode 100644 index 00000000..cdaab4d7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllCustomAttributes.json @@ -0,0 +1,91 @@ +{ + "name": "GetAllCustomAttributes", + "fully_qualified_name": "DatadogApi.GetAllCustomAttributes@0.1.0", + "description": "Retrieve all custom attributes for cases in Datadog.\n\nUse this tool to fetch all the custom attributes associated with cases in Datadog. This can be useful for understanding the different custom data fields available for case management.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetAllCustomAttributes'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/types/custom_attributes", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllDatasets.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllDatasets.json new file mode 100644 index 00000000..7df9f5f4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllDatasets.json @@ -0,0 +1,91 @@ +{ + "name": "GetAllDatasets", + "fully_qualified_name": "DatadogApi.GetAllDatasets@0.1.0", + "description": "Retrieve all datasets configured for your organization.\n\nCall this tool to obtain a list of all datasets that have been configured for an organization, using the Datadog API.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetAllDatasets'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/datasets", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllMonitorUserTemplates.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllMonitorUserTemplates.json new file mode 100644 index 00000000..0e0ea1ad --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllMonitorUserTemplates.json @@ -0,0 +1,91 @@ +{ + "name": "GetAllMonitorUserTemplates", + "fully_qualified_name": "DatadogApi.GetAllMonitorUserTemplates@0.1.0", + "description": "Retrieve all monitor user templates from Datadog.\n\nUse this tool to get a list of all monitor user templates available in Datadog. It can help in managing and reviewing template configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListMonitorUserTemplates'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/template", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllProjects.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllProjects.json new file mode 100644 index 00000000..eb7d2212 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllProjects.json @@ -0,0 +1,91 @@ +{ + "name": "GetAllProjects", + "fully_qualified_name": "DatadogApi.GetAllProjects@0.1.0", + "description": "Retrieve a list of all projects from Datadog.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetProjects'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/projects", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllTeamLinks.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllTeamLinks.json new file mode 100644 index 00000000..6df6b78f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAllTeamLinks.json @@ -0,0 +1,126 @@ +{ + "name": "GetAllTeamLinks", + "fully_qualified_name": "DatadogApi.GetAllTeamLinks@0.1.0", + "description": "Retrieve all links for a specific team.\n\nUse this tool to obtain all the links associated with a given team in Datadog. It is helpful when you need to gather all relevant links for team collaboration or resource management.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team whose links are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTeamLinks'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/links", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApiKeyDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApiKeyDetails.json new file mode 100644 index 00000000..514a352f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApiKeyDetails.json @@ -0,0 +1,159 @@ +{ + "name": "GetApiKeyDetails", + "fully_qualified_name": "DatadogApi.GetApiKeyDetails@0.1.0", + "description": "Retrieves details of a specific Datadog API key.\n\nUse this tool to obtain information about a specific API key from Datadog by providing the API key ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "api_key_id", + "required": true, + "description": "The unique identifier for the Datadog API key to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the API key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "api_key_id" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Comma-separated list of resource paths (`created_by`, `modified_by`) to include in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAPIKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/api_keys/{api_key_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "api_key_id", + "tool_parameter_name": "api_key_id", + "description": "The ID of the API key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the API key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApmRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApmRetentionFilter.json new file mode 100644 index 00000000..69996fc4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApmRetentionFilter.json @@ -0,0 +1,126 @@ +{ + "name": "GetApmRetentionFilter", + "fully_qualified_name": "DatadogApi.GetApmRetentionFilter@0.1.0", + "description": "Retrieve details of a specific APM retention filter.\n\nUse this tool to get detailed information about an APM retention filter by specifying the filter ID. It helps in managing and understanding APM data retention configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "retention_filter_id", + "required": true, + "description": "The unique identifier for the specific APM retention filter to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetApmRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/retention-filters/{filter_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter_id", + "tool_parameter_name": "retention_filter_id", + "description": "The ID of the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApmRetentionFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApmRetentionFilters.json new file mode 100644 index 00000000..fd1e63d4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApmRetentionFilters.json @@ -0,0 +1,91 @@ +{ + "name": "GetApmRetentionFilters", + "fully_qualified_name": "DatadogApi.GetApmRetentionFilters@0.1.0", + "description": "Retrieve the list of APM retention filters from Datadog.\n\nThis tool is used to obtain a list of APM retention filters in Datadog. It should be called when there's a need to review or analyze the current retention filter settings in APM configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListApmRetentionFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/retention-filters", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAppDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAppDetails.json new file mode 100644 index 00000000..52be9bc7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAppDetails.json @@ -0,0 +1,159 @@ +{ + "name": "GetAppDetails", + "fully_qualified_name": "DatadogApi.GetAppDetails@0.1.0", + "description": "Retrieve comprehensive details of a Datadog app.\n\nThis tool fetches the full definition of a specified app from Datadog. It's useful when you need detailed information about an app for monitoring or management purposes. Ensure you have a registered application key or configured permissions as required by Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_id", + "required": true, + "description": "The unique ID of the Datadog app to retrieve details for. Required for fetching app information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + }, + { + "name": "app_version", + "required": false, + "description": "Specify the app version to retrieve. Use a version number starting from 1, or special values `latest` and `deployed` for the latest or published version, respectively.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values `latest` and `deployed` can be used to retrieve the latest version or the published version, respectively." + }, + "inferrable": true, + "http_endpoint_parameter_name": "version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetApp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "version", + "tool_parameter_name": "app_version", + "description": "The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values `latest` and `deployed` can be used to retrieve the latest version or the published version, respectively.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The version number of the app to retrieve. If not specified, the latest version is returned. Version numbers start at 1 and increment with each update. The special values `latest` and `deployed` can be used to retrieve the latest version or the published version, respectively." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "app_id", + "tool_parameter_name": "application_id", + "description": "The ID of the app to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAppKeyRegistration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAppKeyRegistration.json new file mode 100644 index 00000000..8ccf2018 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAppKeyRegistration.json @@ -0,0 +1,126 @@ +{ + "name": "GetAppKeyRegistration", + "fully_qualified_name": "DatadogApi.GetAppKeyRegistration@0.1.0", + "description": "Retrieve details of an existing App Key Registration.\n\nThis tool retrieves information about a specific App Key Registration by its ID. Use it to obtain details of an app key currently registered in the Datadog system via its unique identifier.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_key_id", + "required": true, + "description": "The unique ID of the app key to fetch its registration details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAppKeyRegistration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/app_key_registrations/{app_key_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "app_key_id", + "description": "The ID of the app key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApplicationKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApplicationKey.json new file mode 100644 index 00000000..dd6d0594 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetApplicationKey.json @@ -0,0 +1,159 @@ +{ + "name": "GetApplicationKey", + "fully_qualified_name": "DatadogApi.GetApplicationKey@0.1.0", + "description": "Retrieve an application key for your organization from Datadog.\n\nUse this tool to obtain information about a specific application key in your Datadog account. This can be useful for managing and auditing access keys.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_key_id", + "required": true, + "description": "The unique identifier for the application key to retrieve details from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + }, + { + "name": "include_related_resource", + "required": false, + "description": "Resource path for related resources to include in the response. Currently, only `owned_by` is supported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/application_keys/{app_key_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_resource", + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetArchiveReadRoles.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetArchiveReadRoles.json new file mode 100644 index 00000000..1c43ad80 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetArchiveReadRoles.json @@ -0,0 +1,126 @@ +{ + "name": "GetArchiveReadRoles", + "fully_qualified_name": "DatadogApi.GetArchiveReadRoles@0.1.0", + "description": "Retrieve roles with read access to a specific archive.\n\nUse this tool to obtain a list of all roles that have read access to a specified archive in Datadog. It helps manage and review access control for archive data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_identifier", + "required": true, + "description": "The unique identifier for the archive to retrieve read access roles from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "archive_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListArchiveReadRoles'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}/readers", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "archive_id", + "tool_parameter_name": "archive_identifier", + "description": "The ID of the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAuditLogs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAuditLogs.json new file mode 100644 index 00000000..8184ae7b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAuditLogs.json @@ -0,0 +1,297 @@ +{ + "name": "GetAuditLogs", + "fully_qualified_name": "DatadogApi.GetAuditLogs@0.1.0", + "description": "Retrieve events matching an Audit Logs search query.\n\nThis tool calls the Datadog API to retrieve audit log events that match a specified search query. It provides the latest events with pagination support.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "audit_logs_search_query", + "required": false, + "description": "Search query using Audit Logs syntax to filter events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following Audit Logs syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "start_time_filter", + "required": false, + "description": "Specify the minimum timestamp for requested events in the format YYYY-MM-DDTHH:MM:SSZ.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "max_event_timestamp", + "required": false, + "description": "Specify the maximum timestamp for requested events in ISO 8601 format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "sort_order_of_events", + "required": false, + "description": "Specify the order of events in the results. Use 'timestamp' for ascending and '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "cursor_for_following_results", + "required": false, + "description": "Cursor to fetch subsequent pages of results. Use the cursor from the previous query's response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "max_events_per_response", + "required": false, + "description": "Specifies the maximum number of events to return in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListAuditLogs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/audit/events", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "audit_logs_search_query", + "description": "Search query following Audit Logs syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following Audit Logs syntax." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "start_time_filter", + "description": "Minimum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "max_event_timestamp", + "description": "Maximum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order_of_events", + "description": "Order of events in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "cursor_for_following_results", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_events_per_response", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAuthnMapping.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAuthnMapping.json new file mode 100644 index 00000000..59a40bb2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAuthnMapping.json @@ -0,0 +1,126 @@ +{ + "name": "GetAuthnMapping", + "fully_qualified_name": "DatadogApi.GetAuthnMapping@0.1.0", + "description": "Retrieve an AuthN Mapping by its UUID.\n\nUse this tool to obtain details of a specific AuthN Mapping in Datadog by providing its UUID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "authn_mapping_uuid", + "required": true, + "description": "The UUID of the AuthN Mapping to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the AuthN Mapping." + }, + "inferrable": true, + "http_endpoint_parameter_name": "authn_mapping_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAuthNMapping'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/authn_mappings/{authn_mapping_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "authn_mapping_id", + "tool_parameter_name": "authn_mapping_uuid", + "description": "The UUID of the AuthN Mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the AuthN Mapping." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsAccountIntegrationConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsAccountIntegrationConfig.json new file mode 100644 index 00000000..24c7d8ca --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsAccountIntegrationConfig.json @@ -0,0 +1,126 @@ +{ + "name": "GetAwsAccountIntegrationConfig", + "fully_qualified_name": "DatadogApi.GetAwsAccountIntegrationConfig@0.1.0", + "description": "Retrieve AWS Account Integration Config by ID.\n\nUse this tool to obtain detailed information about a specific AWS account integration configuration, identified by its config ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_integration_config_id", + "required": true, + "description": "Unique Datadog ID of the AWS Account Integration Config. Obtain it using the List all AWS integrations endpoint.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "aws_account_config_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAWSAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/accounts/{aws_account_config_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "aws_account_config_id", + "tool_parameter_name": "aws_account_integration_config_id", + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsCloudwatchNamespaces.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsCloudwatchNamespaces.json new file mode 100644 index 00000000..48d8b85c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsCloudwatchNamespaces.json @@ -0,0 +1,91 @@ +{ + "name": "GetAwsCloudwatchNamespaces", + "fully_qualified_name": "DatadogApi.GetAwsCloudwatchNamespaces@0.1.0", + "description": "Retrieve available AWS CloudWatch namespaces for Datadog integration.\n\nThis tool fetches a list of AWS CloudWatch namespaces that can send metrics to Datadog. It should be called when needing to understand which AWS services can integrate with Datadog for monitoring and analysis purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListAWSNamespaces'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/available_namespaces", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsCurConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsCurConfig.json new file mode 100644 index 00000000..4e218fbe --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsCurConfig.json @@ -0,0 +1,126 @@ +{ + "name": "GetAwsCurConfig", + "fully_qualified_name": "DatadogApi.GetAwsCurConfig@0.1.0", + "description": "Retrieve a specific AWS CUR configuration.\n\nThis tool is used to fetch the AWS Cost and Usage Report (CUR) configuration for a specific cloud account ID. It is ideal for users who need to check or audit AWS usage configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_account_id", + "required": true, + "description": "The unique integer identifier of the AWS cloud account for which to fetch the CUR configuration.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the cloud account" + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCostAWSCURConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/aws_cur_config/{cloud_account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "cloud_account_id", + "description": "The unique identifier of the cloud account", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the cloud account" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsIamPermissions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsIamPermissions.json new file mode 100644 index 00000000..0ce8df2c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsIamPermissions.json @@ -0,0 +1,91 @@ +{ + "name": "GetAwsIamPermissions", + "fully_qualified_name": "DatadogApi.GetAwsIamPermissions@0.1.0", + "description": "Get required AWS IAM permissions for resource collection.\n\nThis tool retrieves all necessary AWS IAM permissions for integrating with AWS. Use it to ensure that the integration has the required permissions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetAWSIntegrationIAMPermissionsResourceCollection'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/iam_permissions/resource_collection", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsIntegrationIamPermissions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsIntegrationIamPermissions.json new file mode 100644 index 00000000..30ee94e5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsIntegrationIamPermissions.json @@ -0,0 +1,91 @@ +{ + "name": "GetAwsIntegrationIamPermissions", + "fully_qualified_name": "DatadogApi.GetAwsIntegrationIamPermissions@0.1.0", + "description": "Fetch standard AWS IAM permissions for integration.\n\nRetrieve all standard AWS IAM permissions needed for setting up AWS integration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetAWSIntegrationIAMPermissionsStandard'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/iam_permissions/standard", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsOnDemandTaskData.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsOnDemandTaskData.json new file mode 100644 index 00000000..3f64f0e5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsOnDemandTaskData.json @@ -0,0 +1,126 @@ +{ + "name": "GetAwsOnDemandTaskData", + "fully_qualified_name": "DatadogApi.GetAwsOnDemandTaskData@0.1.0", + "description": "Fetch data of a specific AWS on-demand task in Datadog.\n\nUse this tool to retrieve information about a specific AWS on-demand task from Datadog's agentless scanning service. It should be called when detailed information about a task is needed, identified by its task ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_task_uuid", + "required": true, + "description": "The UUID of the AWS on-demand task to fetch data for. This is a unique identifier for the task.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the task." + }, + "inferrable": true, + "http_endpoint_parameter_name": "task_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAwsOnDemandTask'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/ondemand/aws/{task_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "task_id", + "tool_parameter_name": "aws_task_uuid", + "description": "The UUID of the task.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the task." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsScanOptions.json new file mode 100644 index 00000000..792d666a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAwsScanOptions.json @@ -0,0 +1,91 @@ +{ + "name": "GetAwsScanOptions", + "fully_qualified_name": "DatadogApi.GetAwsScanOptions@0.1.0", + "description": "Fetch AWS scan options for configured accounts.\n\nUse this tool to retrieve the scan options that have been set up for AWS accounts in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListAwsScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAzureConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAzureConfig.json new file mode 100644 index 00000000..226a9bec --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetAzureConfig.json @@ -0,0 +1,126 @@ +{ + "name": "GetAzureConfig", + "fully_qualified_name": "DatadogApi.GetAzureConfig@0.1.0", + "description": "Retrieve details of a specific Azure configuration.\n\nThis tool is used to get detailed information about a specific Azure configuration using the cloud account ID. It should be called when you need to access the configuration details for Azure within the Datadog service.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "azure_cloud_account_id", + "required": true, + "description": "The unique identifier for the Azure cloud account to retrieve the configuration.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the cloud account" + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCostAzureUCConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/azure_uc_config/{cloud_account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "azure_cloud_account_id", + "description": "The unique identifier of the cloud account", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the cloud account" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetBillingDimensionMapping.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetBillingDimensionMapping.json new file mode 100644 index 00000000..44e53e60 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetBillingDimensionMapping.json @@ -0,0 +1,159 @@ +{ + "name": "GetBillingDimensionMapping", + "fully_qualified_name": "DatadogApi.GetBillingDimensionMapping@0.1.0", + "description": "Retrieve the mapping of billing dimensions to API keys.\n\nUse this tool to obtain the mapping of billing dimensions to corresponding keys for usage metering API endpoints. This information is updated monthly and accessible only to parent-level organizations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "billing_month", + "required": false, + "description": "Date in ISO-8601 format (UTC) for the starting month of mappings. Defaults to the current month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, and for mappings beginning this month. Defaults to the current month." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[month]" + }, + { + "name": "billing_dimension_view", + "required": false, + "description": "Specify 'active' for current contract mappings or 'all' for all mappings. Defaults to 'active'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether to retrieve active billing dimension mappings for the contract or for all available mappings. Allowed views have the string `active` or `all`. Defaults to `active`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[view]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetBillingDimensionMapping'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/usage/billing_dimension_mapping", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[month]", + "tool_parameter_name": "billing_month", + "description": "Datetime in ISO-8601 format, UTC, and for mappings beginning this month. Defaults to the current month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, and for mappings beginning this month. Defaults to the current month." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[view]", + "tool_parameter_name": "billing_dimension_view", + "description": "String to specify whether to retrieve active billing dimension mappings for the contract or for all available mappings. Allowed views have the string `active` or `all`. Defaults to `active`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether to retrieve active billing dimension mappings for the contract or for all available mappings. Allowed views have the string `active` or `all`. Defaults to `active`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "active", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetBudgetDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetBudgetDetails.json new file mode 100644 index 00000000..10d5594a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetBudgetDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetBudgetDetails", + "fully_qualified_name": "DatadogApi.GetBudgetDetails@0.1.0", + "description": "Retrieve detailed information about a specific budget.\n\nUse this tool to get detailed information about a budget by providing the budget ID. Ideal for tracking budget allocations and spending.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "budget_identifier", + "required": true, + "description": "The unique identifier for the budget to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budget id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "budget_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetBudget'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/budget/{budget_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "budget_id", + "tool_parameter_name": "budget_identifier", + "description": "Budget id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Budget id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCaseDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCaseDetails.json new file mode 100644 index 00000000..6a2f1900 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCaseDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetCaseDetails", + "fully_qualified_name": "DatadogApi.GetCaseDetails@0.1.0", + "description": "Retrieve detailed information for a specific case.\n\nThis tool retrieves the details of a case using its unique identifier, `case_id`. It should be called when specific information about a case is needed, such as for review, analysis, or reporting.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier for the case, either a UUID or a specific key, required to retrieve case details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCase'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudAccountsCoverageAnalysis.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudAccountsCoverageAnalysis.json new file mode 100644 index 00000000..ab03f6cb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudAccountsCoverageAnalysis.json @@ -0,0 +1,91 @@ +{ + "name": "GetCloudAccountsCoverageAnalysis", + "fully_qualified_name": "DatadogApi.GetCloudAccountsCoverageAnalysis@0.1.0", + "description": "Retrieve CSM coverage analysis of your cloud accounts.\n\nRetrieve the CSM Coverage Analysis for cloud accounts to see how many are scanned for security issues.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetCSMCloudAccountsCoverageAnalysis'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/csm/onboarding/coverage_analysis/cloud_accounts", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudWorkloadSecurityAgentRuleDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudWorkloadSecurityAgentRuleDetails.json new file mode 100644 index 00000000..8d44dded --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudWorkloadSecurityAgentRuleDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetCloudWorkloadSecurityAgentRuleDetails", + "fully_qualified_name": "DatadogApi.GetCloudWorkloadSecurityAgentRuleDetails@0.1.0", + "description": "Retrieve details of a cloud workload security agent rule.\n\nUse this tool to get information about a specific security agent rule in a cloud workload. It's specifically for the Datadog Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_identifier", + "required": true, + "description": "Unique identifier for the cloud workload security agent rule to retrieve details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "agent_rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCloudWorkloadSecurityAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "agent_rule_id", + "tool_parameter_name": "agent_rule_identifier", + "description": "The ID of the Agent rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudflareAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudflareAccount.json new file mode 100644 index 00000000..cad79483 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCloudflareAccount.json @@ -0,0 +1,126 @@ +{ + "name": "GetCloudflareAccount", + "fully_qualified_name": "DatadogApi.GetCloudflareAccount@0.1.0", + "description": "Retrieve details of a Cloudflare account via Datadog.\n\nCall this tool to get information about a specific Cloudflare account linked to Datadog. Use it when you need to access account details for management or monitoring purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloudflare_account_id", + "required": true, + "description": "The unique identifier for the Cloudflare account to retrieve details from. This is required to access account-specific information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCloudflareAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts/{account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "cloudflare_account_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetConfluentAccountInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetConfluentAccountInfo.json new file mode 100644 index 00000000..accf295c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetConfluentAccountInfo.json @@ -0,0 +1,126 @@ +{ + "name": "GetConfluentAccountInfo", + "fully_qualified_name": "DatadogApi.GetConfluentAccountInfo@0.1.0", + "description": "Retrieve Confluent account information by account ID.\n\nUse this tool to obtain details for a Confluent account using its account ID. Useful for accessing specific account configurations or status within Datadog's Confluent integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "The unique identifier for the Confluent account to retrieve details from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetConfluentAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetConfluentResource.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetConfluentResource.json new file mode 100644 index 00000000..72e14184 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetConfluentResource.json @@ -0,0 +1,126 @@ +{ + "name": "GetConfluentResource", + "fully_qualified_name": "DatadogApi.GetConfluentResource@0.1.0", + "description": "Retrieve Confluent resource details for a specific account ID.\n\nUse this tool to get information about a Confluent resource linked to a specific account using the account ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "Enter the Confluent Account ID to retrieve the resource details linked to this account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListConfluentResource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCsmCoverageAnalysis.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCsmCoverageAnalysis.json new file mode 100644 index 00000000..c2cb3214 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCsmCoverageAnalysis.json @@ -0,0 +1,91 @@ +{ + "name": "GetCsmCoverageAnalysis", + "fully_qualified_name": "DatadogApi.GetCsmCoverageAnalysis@0.1.0", + "description": "Retrieve CSM coverage analysis for hosts and containers.\n\nUse this tool to obtain the CSM Coverage Analysis for your hosts and containers based on active agents with CSM features enabled.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetCSMHostsAndContainersCoverageAnalysis'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/csm/onboarding/coverage_analysis/hosts_and_containers", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCurrentArchiveOrder.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCurrentArchiveOrder.json new file mode 100644 index 00000000..5fa4c73f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCurrentArchiveOrder.json @@ -0,0 +1,91 @@ +{ + "name": "GetCurrentArchiveOrder", + "fully_qualified_name": "DatadogApi.GetCurrentArchiveOrder@0.1.0", + "description": "Retrieve the current order of logs archives.\n\nThis tool retrieves the current order of your logs archives from Datadog. Use this tool when you need to understand how archives are currently organized.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetLogsArchiveOrder'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archive-order", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomAllocationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomAllocationRule.json new file mode 100644 index 00000000..affc2408 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomAllocationRule.json @@ -0,0 +1,126 @@ +{ + "name": "GetCustomAllocationRule", + "fully_qualified_name": "DatadogApi.GetCustomAllocationRule@0.1.0", + "description": "Retrieve a custom allocation rule by its ID.\n\nCall this tool to get detailed information about a specific custom allocation rule using its unique ID. Useful for examining allocation settings in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_allocation_rule_id", + "required": true, + "description": "The unique identifier for retrieving a specific custom allocation rule in Datadog.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the custom allocation rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCustomAllocationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/arbitrary_rule/{rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "custom_allocation_rule_id", + "description": "The unique identifier of the custom allocation rule", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the custom allocation rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomAttributeConfigs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomAttributeConfigs.json new file mode 100644 index 00000000..00da4e5b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomAttributeConfigs.json @@ -0,0 +1,126 @@ +{ + "name": "GetCustomAttributeConfigs", + "fully_qualified_name": "DatadogApi.GetCustomAttributeConfigs@0.1.0", + "description": "Retrieve all custom attribute configurations for a case type.\n\nUse this tool to fetch all custom attribute configurations associated with a specific case type. Ideal for understanding or managing attributes for various case types.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_type_uuid", + "required": true, + "description": "UUID for the case type to retrieve its custom attribute configurations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_type_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetAllCustomAttributeConfigsByCaseType'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/types/{case_type_id}/custom_attributes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "case_type_id", + "tool_parameter_name": "case_type_uuid", + "description": "Case type's UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case type's UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomDestination.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomDestination.json new file mode 100644 index 00000000..ba2e80c1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomDestination.json @@ -0,0 +1,126 @@ +{ + "name": "GetCustomDestination", + "fully_qualified_name": "DatadogApi.GetCustomDestination@0.1.0", + "description": "Retrieve details of a specific custom log destination.\n\nUse this tool to get information about a specific custom destination for logs in your organization. Useful for managing and configuring log destinations effectively.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_destination_id", + "required": true, + "description": "The ID of the custom destination to retrieve details from your organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom destination." + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_destination_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetLogsCustomDestination'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/custom-destinations/{custom_destination_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "custom_destination_id", + "tool_parameter_name": "custom_destination_id", + "description": "The ID of the custom destination.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom destination." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomFramework.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomFramework.json new file mode 100644 index 00000000..f8b80db8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetCustomFramework.json @@ -0,0 +1,159 @@ +{ + "name": "GetCustomFramework", + "fully_qualified_name": "DatadogApi.GetCustomFramework@0.1.0", + "description": "Retrieve a specific custom framework by handle and version.\n\nUse this tool to get details of a specific custom framework in Datadog by providing its handle and version. This is useful for accessing specific configurations or settings within cloud security management frameworks.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "framework_handle", + "required": true, + "description": "The unique identifier for the custom framework to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework handle" + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle" + }, + { + "name": "framework_version", + "required": true, + "description": "Specify the version of the framework to retrieve. Use the exact version number or identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework version" + }, + "inferrable": true, + "http_endpoint_parameter_name": "version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCustomFramework'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "handle", + "tool_parameter_name": "framework_handle", + "description": "The framework handle", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework handle" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "version", + "tool_parameter_name": "framework_version", + "description": "The framework version", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework version" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDatadogChannelInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDatadogChannelInfo.json new file mode 100644 index 00000000..d2a578fe --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDatadogChannelInfo.json @@ -0,0 +1,192 @@ +{ + "name": "GetDatadogChannelInfo", + "fully_qualified_name": "DatadogApi.GetDatadogChannelInfo@0.1.0", + "description": "Retrieve channel ID details for Datadog MS Teams integration.\n\nUse this tool to obtain the tenant, team, and channel ID for a specific channel in the Datadog Microsoft Teams integration. Call this tool when you need to look up channel configuration details within a Datadog integration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "tenant_name", + "required": true, + "description": "The name of the tenant for which you want to get the channel information in Datadog's Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tenant_name" + }, + { + "name": "team_name", + "required": true, + "description": "Specify the name of the team for which you want to retrieve channel ID details in the Datadog Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your team name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_name" + }, + { + "name": "datadog_channel_name", + "required": true, + "description": "The name of the channel in the Datadog Microsoft Teams integration. Required to retrieve channel details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your channel name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "channel_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetChannelByName'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/channel/{tenant_name}/{team_name}/{channel_name}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "tenant_name", + "tool_parameter_name": "tenant_name", + "description": "Your tenant name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant name." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "team_name", + "tool_parameter_name": "team_name", + "description": "Your team name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your team name." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "channel_name", + "tool_parameter_name": "datadog_channel_name", + "description": "Your channel name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your channel name." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDatadogServiceAccountAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDatadogServiceAccountAppKey.json new file mode 100644 index 00000000..86633b91 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDatadogServiceAccountAppKey.json @@ -0,0 +1,159 @@ +{ + "name": "GetDatadogServiceAccountAppKey", + "fully_qualified_name": "DatadogApi.GetDatadogServiceAccountAppKey@0.1.0", + "description": "Retrieve a specific application key for a Datadog service account.\n\nUse this tool to obtain details of an application key owned by a specific Datadog service account, identified by its service account ID and application key ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_account_id", + "required": true, + "description": "The unique identifier for the Datadog service account to retrieve the application key from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_account_id" + }, + { + "name": "application_key_id", + "required": true, + "description": "The ID of the application key for the Datadog service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetServiceAccountApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys/{app_key_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "service_account_id", + "tool_parameter_name": "service_account_id", + "description": "The ID of the service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceDetails.json new file mode 100644 index 00000000..229de2e7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetDeviceDetails", + "fully_qualified_name": "DatadogApi.GetDeviceDetails@0.1.0", + "description": "Retrieve specific device details.\n\nCall this tool to obtain detailed information about a specified device using its device ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "device_id", + "required": true, + "description": "The unique identifier of the device to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the device to fetch." + }, + "inferrable": true, + "http_endpoint_parameter_name": "device_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetDevice'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ndm/devices/{device_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "device_id", + "tool_parameter_name": "device_id", + "description": "The id of the device to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the device to fetch." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceInterfaces.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceInterfaces.json new file mode 100644 index 00000000..cee5e9cb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceInterfaces.json @@ -0,0 +1,159 @@ +{ + "name": "GetDeviceInterfaces", + "fully_qualified_name": "DatadogApi.GetDeviceInterfaces@0.1.0", + "description": "Fetches the list of interfaces for a given device.\n\nUse this tool to obtain the list of interfaces associated with a particular device from Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "device_identifier", + "required": true, + "description": "The unique ID of the device to retrieve interfaces for. Expected to be a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the device to get interfaces from." + }, + "inferrable": true, + "http_endpoint_parameter_name": "device_id" + }, + { + "name": "include_ip_addresses", + "required": false, + "description": "Specify true to include IP addresses of the interfaces, or false to exclude them.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to get the IP addresses of the interfaces." + }, + "inferrable": true, + "http_endpoint_parameter_name": "get_ip_addresses" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetInterfaces'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ndm/interfaces", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "device_id", + "tool_parameter_name": "device_identifier", + "description": "The ID of the device to get interfaces from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the device to get interfaces from." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "get_ip_addresses", + "tool_parameter_name": "include_ip_addresses", + "description": "Whether to get the IP addresses of the interfaces.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to get the IP addresses of the interfaces." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceList.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceList.json new file mode 100644 index 00000000..a6512914 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceList.json @@ -0,0 +1,225 @@ +{ + "name": "GetDeviceList", + "fully_qualified_name": "DatadogApi.GetDeviceList@0.1.0", + "description": "Retrieve a list of devices from Datadog.\n\nUse this tool to get a comprehensive list of all devices managed by the Datadog service. It retrieves data from the specified API endpoint and provides an overview of available devices.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Specify the size for a given page, with a maximum allowed value of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "Specific page number to return when fetching the devices list.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_devices_by", + "required": false, + "description": "Specify the field by which to sort the devices list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field to sort the devices by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_by_tag", + "required": false, + "description": "Filter devices by a specified tag.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter devices by tag." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[tag]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListDevices'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ndm/devices", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_devices_by", + "description": "The field to sort the devices by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field to sort the devices by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[tag]", + "tool_parameter_name": "filter_by_tag", + "description": "Filter devices by tag.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter devices by tag." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceUserTags.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceUserTags.json new file mode 100644 index 00000000..15a7dc1d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDeviceUserTags.json @@ -0,0 +1,126 @@ +{ + "name": "GetDeviceUserTags", + "fully_qualified_name": "DatadogApi.GetDeviceUserTags@0.1.0", + "description": "Retrieve the list of tags for a specific device.\n\nThis tool calls the Datadog API to fetch user tags for a given device, identified by its ID. Use this when you need to understand or manage tags associated with a device for tracking or organizational purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "device_identifier", + "required": true, + "description": "The unique identifier of the device to fetch tags for from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the device to fetch tags for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "device_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListDeviceUserTags'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ndm/tags/devices/{device_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "device_id", + "tool_parameter_name": "device_identifier", + "description": "The id of the device to fetch tags for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the device to fetch tags for." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDomainAllowlist.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDomainAllowlist.json new file mode 100644 index 00000000..ba03930b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDomainAllowlist.json @@ -0,0 +1,91 @@ +{ + "name": "GetDomainAllowlist", + "fully_qualified_name": "DatadogApi.GetDomainAllowlist@0.1.0", + "description": "Retrieve the domain allowlist for an organization.\n\nUse this tool to get the list of domains that are allowed within your organization's settings. It helps ensure authorized access and manage security policies.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetDomainAllowlist'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/domain_allowlist", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDowntimeDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDowntimeDetails.json new file mode 100644 index 00000000..8fbd2c38 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetDowntimeDetails.json @@ -0,0 +1,159 @@ +{ + "name": "GetDowntimeDetails", + "fully_qualified_name": "DatadogApi.GetDowntimeDetails@0.1.0", + "description": "Retrieve details of a specific downtime by ID.\n\nUse this tool to get detailed information about a specific downtime in Datadog using a downtime ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "downtime_id", + "required": true, + "description": "The unique identifier for the downtime period to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the downtime to fetch." + }, + "inferrable": true, + "http_endpoint_parameter_name": "downtime_id" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Comma-separated list of resource paths to include in the response. Options: `created_by`, `monitor`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npaths are `created_by` and `monitor`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetDowntime'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/downtime/{downtime_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npaths are `created_by` and `monitor`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npaths are `created_by` and `monitor`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "downtime_id", + "tool_parameter_name": "downtime_id", + "description": "ID of the downtime to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the downtime to fetch." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetErrorTrackingIssueDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetErrorTrackingIssueDetails.json new file mode 100644 index 00000000..aef889d5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetErrorTrackingIssueDetails.json @@ -0,0 +1,159 @@ +{ + "name": "GetErrorTrackingIssueDetails", + "fully_qualified_name": "DatadogApi.GetErrorTrackingIssueDetails@0.1.0", + "description": "Retrieve full details of a specific error tracking issue.\n\nUse this tool to obtain comprehensive details about an error tracking issue from Datadog, including its attributes and relationships. Ideal for understanding specific issues and investigating errors.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "issue_identifier", + "required": true, + "description": "The unique identifier of the error tracking issue to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the issue." + }, + "inferrable": true, + "http_endpoint_parameter_name": "issue_id" + }, + { + "name": "include_relationship_objects", + "required": false, + "description": "A list of relationship objects to include in the response. Provide as an array of strings.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationship objects that should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetIssue'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/error-tracking/issues/{issue_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationship_objects", + "description": "Comma-separated list of relationship objects that should be included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationship objects that should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "issue_id", + "tool_parameter_name": "issue_identifier", + "description": "The identifier of the issue.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the issue." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetEstimatedCostDatadog.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetEstimatedCostDatadog.json new file mode 100644 index 00000000..59935732 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetEstimatedCostDatadog.json @@ -0,0 +1,291 @@ +{ + "name": "GetEstimatedCostDatadog", + "fully_qualified_name": "DatadogApi.GetEstimatedCostDatadog@0.1.0", + "description": "Retrieve estimated cost data for multi-org Datadog accounts.\n\nThis tool retrieves the estimated cost for the current and previous month across multi-org and single root-org Datadog accounts. The data is only available for parent-level organizations and is delayed by up to 72 hours.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cost_view_level", + "required": false, + "description": "Specify if cost is broken down at the parent-org level (summary) or sub-org level (sub-org). Defaults to summary.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "view" + }, + { + "name": "initial_cost_month", + "required": false, + "description": "ISO-8601 month format `[YYYY-MM]`, specifying the start month for cost data. Cannot be older than two months. Provide `end_month` for month-over-month cost.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month. **Either start_month or start_date should be specified, but not both.** (start_month cannot go beyond two months in the past). Provide an `end_month` to view month-over-month cost." + }, + "inferrable": true, + "http_endpoint_parameter_name": "start_month" + }, + { + "name": "cost_end_month", + "required": false, + "description": "Specify the ending month for the estimated cost in ISO-8601 format, UTC (`[YYYY-MM]`).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month." + }, + "inferrable": true, + "http_endpoint_parameter_name": "end_month" + }, + { + "name": "start_date_for_cost", + "required": false, + "description": "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost beginning this day. Either specify `start_date_for_cost` or `start_month_for_cost`, but not both. The date cannot be more than two months in the past. Use with `end_date_for_cost` for cumulative day-over-day cost.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost beginning this day. **Either start_month or start_date should be specified, but not both.** (start_date cannot go beyond two months in the past). Provide an `end_date` to view day-over-day cumulative cost." + }, + "inferrable": true, + "http_endpoint_parameter_name": "start_date" + }, + { + "name": "end_date", + "required": false, + "description": "Specify the end date for cost estimation in ISO-8601 format (YYYY-MM-DD). It marks the last day of the period for which you need cost data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost ending this day." + }, + "inferrable": true, + "http_endpoint_parameter_name": "end_date" + }, + { + "name": "include_connected_accounts", + "required": false, + "description": "Include accounts connected as partner customers in Datadog's partner network program. Defaults to `false`.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. " + }, + "inferrable": true, + "http_endpoint_parameter_name": "include_connected_accounts" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetEstimatedCostByOrg'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/usage/estimated_cost", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "view", + "tool_parameter_name": "cost_view_level", + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "start_month", + "tool_parameter_name": "initial_cost_month", + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month. **Either start_month or start_date should be specified, but not both.** (start_month cannot go beyond two months in the past). Provide an `end_month` to view month-over-month cost.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month. **Either start_month or start_date should be specified, but not both.** (start_month cannot go beyond two months in the past). Provide an `end_month` to view month-over-month cost." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "end_month", + "tool_parameter_name": "cost_end_month", + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "start_date", + "tool_parameter_name": "start_date_for_cost", + "description": "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost beginning this day. **Either start_month or start_date should be specified, but not both.** (start_date cannot go beyond two months in the past). Provide an `end_date` to view day-over-day cumulative cost.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost beginning this day. **Either start_month or start_date should be specified, but not both.** (start_date cannot go beyond two months in the past). Provide an `end_date` to view day-over-day cumulative cost." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "end_date", + "tool_parameter_name": "end_date", + "description": "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost ending this day.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost ending this day." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include_connected_accounts", + "tool_parameter_name": "include_connected_accounts", + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. ", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. " + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetEventDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetEventDetails.json new file mode 100644 index 00000000..68f5736b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetEventDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetEventDetails", + "fully_qualified_name": "DatadogApi.GetEventDetails@0.1.0", + "description": "Retrieve detailed information about a specific event.\n\nUse this tool to get detailed information about an event by providing its unique event ID. It is useful for obtaining specifics about incidents or activities tracked in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "event_unique_id", + "required": true, + "description": "The unique identifier of the event to retrieve details for. This should be a string representing the event's UID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UID of the event." + }, + "inferrable": true, + "http_endpoint_parameter_name": "event_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetEvent'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/events/{event_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "event_id", + "tool_parameter_name": "event_unique_id", + "description": "The UID of the event.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UID of the event." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFastlyAccountInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFastlyAccountInfo.json new file mode 100644 index 00000000..ab666179 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFastlyAccountInfo.json @@ -0,0 +1,126 @@ +{ + "name": "GetFastlyAccountInfo", + "fully_qualified_name": "DatadogApi.GetFastlyAccountInfo@0.1.0", + "description": "Retrieves detailed information for a specific Fastly account.\n\nUse this tool to obtain details about a specific Fastly account integrated with Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "The unique identifier for the Fastly account to retrieve information about.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetFastlyAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFastlyServiceInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFastlyServiceInfo.json new file mode 100644 index 00000000..7b12df7c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFastlyServiceInfo.json @@ -0,0 +1,159 @@ +{ + "name": "GetFastlyServiceInfo", + "fully_qualified_name": "DatadogApi.GetFastlyServiceInfo@0.1.0", + "description": "Retrieve Fastly service details for a specific account.\n\nCall this tool to get information about a Fastly service linked to a Datadog account using the account ID and the service ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "The unique ID of the Fastly account for which to retrieve service details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "fastly_service_id", + "required": true, + "description": "The ID of the Fastly service to retrieve details for, linked to the specified account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Service ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetFastlyService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "service_id", + "tool_parameter_name": "fastly_service_id", + "description": "Fastly Service ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Service ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFutureRuleSuppressions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFutureRuleSuppressions.json new file mode 100644 index 00000000..d2ba0da2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetFutureRuleSuppressions.json @@ -0,0 +1,126 @@ +{ + "name": "GetFutureRuleSuppressions", + "fully_qualified_name": "DatadogApi.GetFutureRuleSuppressions@0.1.0", + "description": "Retrieve suppressions affecting a future security rule.\n\nUse this tool to get a list of suppressions that would impact a specified security monitoring rule in the future.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "suppression_rule_details", + "required": true, + "description": "A JSON object specifying the rule details to retrieve suppressions affecting it. This should include necessary parameters defining the security policy or rule you are inquiring about.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSuppressionsAffectingFutureRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/rules", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "suppression_rule_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create a new rule.\",\n \"oneOf\": [\n {\n \"description\": \"Create a new rule.\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"customQueryExtension\": {\n \"description\": \"Query extension to append to the logs query.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"**This field is currently unstable and might be removed in a minor version upgrade.**\\nThe index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules - in other words, when the `schedulingOptions` field is present in the rule payload.\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"description\": \"List of indexes to query when the `dataSource` is `logs`. Only used for scheduled rules, such as when the `schedulingOptions` field is present in the rule payload.\",\n \"items\": {\n \"description\": \"Index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metric\": {\n \"deprecated\": true,\n \"description\": \"(Deprecated) The target field to aggregate over when using the sum or max\\naggregations. `metrics` field should be used instead.\",\n \"type\": \"string\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables for the rule.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulingOptions\": {\n \"description\": \"Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.\",\n \"nullable\": true,\n \"properties\": {\n \"rrule\": {\n \"description\": \"Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference.\",\n \"example\": \"FREQ=HOURLY;INTERVAL=1;\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"Start date for the schedule, in ISO 8601 format without timezone.\",\n \"example\": \"2025-07-14T12:00:00\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating signals from third-party rules. Only available for third-party rules.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when a signal is generated by a third party rule.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"api_security\",\n \"application_security\",\n \"log_detection\",\n \"workload_security\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"API_SECURITY\",\n \"APPLICATION_SECURITY\",\n \"LOG_DETECTION\",\n \"WORKLOAD_SECURITY\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Create a new signal correlation rule.\",\n \"properties\": {\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting signals which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule on signals.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"correlatedByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"correlatedQueryIndex\": {\n \"description\": \"Index of the rule query used to retrieve the correlated field.\",\n \"format\": \"int32\",\n \"maximum\": 9,\n \"type\": \"integer\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"ruleId\": {\n \"description\": \"Rule ID to match on signals.\",\n \"example\": \"org-ru1-e1d\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ruleId\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"signal_correlation\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SIGNAL_CORRELATION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Create a new cloud configuration rule.\",\n \"properties\": {\n \"cases\": {\n \"description\": \"Description of generated findings and signals (severity and channels to be notified in case of a signal). Must contain exactly one item.\",\n \"items\": {\n \"description\": \"Description of signals.\",\n \"properties\": {\n \"notifications\": {\n \"description\": \"Notification targets for each rule case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"complianceSignalOptions\": {\n \"description\": \"How to generate compliance signals. Useful for cloud_configuration rules only.\",\n \"properties\": {\n \"defaultActivationStatus\": {\n \"description\": \"The default activation status.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"defaultGroupByFields\": {\n \"description\": \"The default group by fields.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"userActivationStatus\": {\n \"description\": \"Whether signals will be sent.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"userGroupByFields\": {\n \"description\": \"Fields to use to group findings by when sending signals.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message in markdown format for generated findings and signals.\",\n \"example\": \"#Description\\nExplanation of the rule.\\n\\n#Remediation\\nHow to fix the security issue.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options on cloud configuration rules.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"complianceRuleOptions\"\n ],\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated findings and signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"cloud_configuration\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUD_CONFIGURATION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"options\",\n \"complianceSignalOptions\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetGcpStsDelegate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetGcpStsDelegate.json new file mode 100644 index 00000000..96387f65 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetGcpStsDelegate.json @@ -0,0 +1,91 @@ +{ + "name": "GetGcpStsDelegate", + "fully_qualified_name": "DatadogApi.GetGcpStsDelegate@0.1.0", + "description": "Retrieve the Datadog-GCP STS delegate account configuration.\n\nUse this tool to list the configured GCP STS delegate account in your Datadog account. It provides information about the integration between Datadog and Google Cloud Platform for security token service (STS) delegation.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetGCPSTSDelegate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/gcp/sts_delegate", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetGcpUsageCostConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetGcpUsageCostConfig.json new file mode 100644 index 00000000..ac2b5066 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetGcpUsageCostConfig.json @@ -0,0 +1,126 @@ +{ + "name": "GetGcpUsageCostConfig", + "fully_qualified_name": "DatadogApi.GetGcpUsageCostConfig@0.1.0", + "description": "Retrieve specific Google Cloud Usage Cost configuration details.\n\nThe tool retrieves a specific Google Cloud Usage Cost configuration using the provided cloud account ID. It is useful for obtaining cost configurations related to Google Cloud usage in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_account_identifier", + "required": true, + "description": "The unique identifier of the Google Cloud account for which to retrieve the usage cost configuration.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the cloud account" + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCostGCPUsageCostConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/gcp_uc_config/{cloud_account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "cloud_account_identifier", + "description": "The unique identifier of the cloud account", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the cloud account" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistSignalDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistSignalDetails.json new file mode 100644 index 00000000..8e755ef7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistSignalDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetHistSignalDetails", + "fully_qualified_name": "DatadogApi.GetHistSignalDetails@0.1.0", + "description": "Retrieve details of a specific hist signal.\n\nThis tool fetches detailed information about a specified hist signal from Datadog's SIEM (Security Information and Event Management) service. It should be used when you need to access detailed data on a particular historical signal for security monitoring purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "historical_signal_id", + "required": true, + "description": "The ID of the historical signal to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the historical signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "histsignal_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSecurityMonitoringHistsignal'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/histsignals/{histsignal_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "histsignal_id", + "tool_parameter_name": "historical_signal_id", + "description": "The ID of the historical signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the historical signal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalCostByOrg.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalCostByOrg.json new file mode 100644 index 00000000..be0f3eb0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalCostByOrg.json @@ -0,0 +1,225 @@ +{ + "name": "GetHistoricalCostByOrg", + "fully_qualified_name": "DatadogApi.GetHistoricalCostByOrg@0.1.0", + "description": "Retrieve historical cost data across different organizations.\n\nThis tool retrieves historical cost data for multi-org and single root-org accounts from Datadog. The cost data for a given month becomes available by the 16th of the following month. Accessible only for parent-level organizations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_month_utc", + "required": true, + "description": "ISO-8601 date format `[YYYY-MM]`, UTC timezone, to specify the start month for cost calculation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month." + }, + "inferrable": true, + "http_endpoint_parameter_name": "start_month" + }, + { + "name": "cost_view_level", + "required": false, + "description": "Specify cost breakdown level: 'summary' for parent-org or 'sub-org' for sub-org level. Defaults to 'summary'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "view" + }, + { + "name": "end_month", + "required": false, + "description": "Datetime in ISO-8601 format, UTC, precise to month `[YYYY-MM]` indicating the ending month for cost data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month." + }, + "inferrable": true, + "http_endpoint_parameter_name": "end_month" + }, + { + "name": "include_connected_accounts", + "required": false, + "description": "Include accounts connected as partner customers in Datadog's network. Defaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. " + }, + "inferrable": true, + "http_endpoint_parameter_name": "include_connected_accounts" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetHistoricalCostByOrg'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/usage/historical_cost", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "start_month", + "tool_parameter_name": "start_month_utc", + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "view", + "tool_parameter_name": "cost_view_level", + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "end_month", + "tool_parameter_name": "end_month", + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include_connected_accounts", + "tool_parameter_name": "include_connected_accounts", + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. ", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. " + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalJobDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalJobDetails.json new file mode 100644 index 00000000..606163f3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalJobDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetHistoricalJobDetails", + "fully_qualified_name": "DatadogApi.GetHistoricalJobDetails@0.1.0", + "description": "Retrieve details of a specific historical job from Datadog.\n\nUse this tool to get the details of a specific historical job from Datadog's SIEM historical detections by providing the job ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "job_id", + "required": true, + "description": "The unique identifier for the job whose details you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "inferrable": true, + "http_endpoint_parameter_name": "job_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetHistoricalJob'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "job_id", + "tool_parameter_name": "job_id", + "description": "The ID of the job.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalSecuritySignals.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalSecuritySignals.json new file mode 100644 index 00000000..03552081 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHistoricalSecuritySignals.json @@ -0,0 +1,330 @@ +{ + "name": "GetHistoricalSecuritySignals", + "fully_qualified_name": "DatadogApi.GetHistoricalSecuritySignals@0.1.0", + "description": "Retrieve historical security signals by job ID.\n\nUse this tool to obtain historical security signals associated with a specific job ID in the Datadog system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "job_identifier", + "required": true, + "description": "The unique identifier for the job whose historical security signals you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "inferrable": true, + "http_endpoint_parameter_name": "job_id" + }, + { + "name": "security_signal_search_query", + "required": false, + "description": "The search query to filter security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query for security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "minimum_timestamp", + "required": false, + "description": "The earliest timestamp for retrieving security signals. Format should be ISO 8601 (e.g., '2023-10-01T00:00:00Z').", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "max_timestamp_for_signals", + "required": false, + "description": "The latest timestamp for the requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "signal_sort_order", + "required": false, + "description": "Specify the sort order of the security signals, either 'timestamp' for ascending or '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The order of the security signals in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Use the cursor from the previous query to paginate results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "max_security_signals", + "required": false, + "description": "The maximum number of security signals to retrieve in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSecurityMonitoringHistsignalsByJobId'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/jobs/{job_id}/histsignals", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "security_signal_search_query", + "description": "The search query for security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query for security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp", + "description": "The minimum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "max_timestamp_for_signals", + "description": "The maximum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "signal_sort_order", + "description": "The order of the security signals in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The order of the security signals in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "A list of results using the cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_security_signals", + "description": "The maximum number of security signals in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "job_id", + "tool_parameter_name": "job_identifier", + "description": "The ID of the job.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the job." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHourlyUsageByProductFamily.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHourlyUsageByProductFamily.json new file mode 100644 index 00000000..89f3226b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetHourlyUsageByProductFamily.json @@ -0,0 +1,390 @@ +{ + "name": "GetHourlyUsageByProductFamily", + "fully_qualified_name": "DatadogApi.GetHourlyUsageByProductFamily@0.1.0", + "description": "Fetch hourly usage data by product family from Datadog.\n\nUse this tool to retrieve detailed hourly usage metrics categorized by product family from Datadog. Ideal for monitoring and analysis applications that require precise usage insights.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_timestamp", + "required": true, + "description": "Datetime in ISO-8601 format, UTC, precise to hour. Specify the start of usage collection, e.g., '2023-10-05T14'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[timestamp][start]" + }, + { + "name": "product_families_to_retrieve", + "required": true, + "description": "Comma-separated list of product families to retrieve usage data for. Available options include all, analyzed_logs, application_security, etc. Note: audit_logs is deprecated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of product families to retrieve. Available families are `all`, `analyzed_logs`,\n`application_security`, `audit_trail`, `serverless`, `ci_app`, `cloud_cost_management`, `cloud_siem`,\n`csm_container_enterprise`, `csm_host_enterprise`, `cspm`, `custom_events`, `cws`, `dbm`, `error_tracking`,\n`fargate`, `infra_hosts`, `incident_management`, `indexed_logs`, `indexed_spans`, `ingested_spans`, `iot`,\n`lambda_traced_invocations`, `llm_observability`, `logs`, `network_flows`, `network_hosts`, `network_monitoring`,\n`observability_pipelines`, `online_archive`, `profiling`, `product_analytics`, `rum`, `rum_browser_sessions`,\n`rum_mobile_sessions`, `sds`, `snmp`, `software_delivery`, `synthetics_api`, `synthetics_browser`,\n`synthetics_mobile`, `synthetics_parallel_testing`, `timeseries`, `vuln_management` and `workflow_executions`.\nThe following product family has been **deprecated**: `audit_logs`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[product_families]" + }, + { + "name": "end_timestamp", + "required": false, + "description": "Datetime in ISO-8601 format (UTC) for usage ending before this hour. Format: [YYYY-MM-DDThh].", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[timestamp][end]" + }, + { + "name": "product_family_versions", + "required": false, + "description": "Comma-separated list of product family versions in the format `product_family:version`. Defaults to latest if not specified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of product family versions to use in the format `product_family:version`. For example,\n`infra_hosts:1.0.0`. If this parameter is not used, the API will use the latest version of each requested\nproduct family. Currently all families have one version `1.0.0`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[versions]" + }, + { + "name": "maximum_results_limit", + "required": false, + "description": "Set the maximum number of results to return per page, between 1 and 500. Defaults to 500.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results to return (between 1 and 500) - defaults to 500 if limit not specified." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "next_record_id", + "required": false, + "description": "ID to continue listing results from the last query. Use the ID from previous queries to paginate through results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a next_record_id provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[next_record_id]" + }, + { + "name": "include_descendants_usage", + "required": false, + "description": "Include child organization usage in the response. Set to true to include, false to exclude.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include child org usage in the response. Defaults to false." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[include_descendants]" + }, + { + "name": "include_connected_accounts", + "required": false, + "description": "Include accounts connected as partner customers in the response. Defaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to false." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[include_connected_accounts]" + }, + { + "name": "include_usage_breakdown", + "required": false, + "description": "Boolean to include breakdown of usage by subcategories for product family logs. Defaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include breakdown of usage by subcategories where applicable (for product family logs only). Defaults to false." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[include_breakdown]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetHourlyUsage'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/usage/hourly_usage", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[timestamp][start]", + "tool_parameter_name": "start_timestamp", + "description": "Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[timestamp][end]", + "tool_parameter_name": "end_timestamp", + "description": "Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[product_families]", + "tool_parameter_name": "product_families_to_retrieve", + "description": "Comma separated list of product families to retrieve. Available families are `all`, `analyzed_logs`,\n`application_security`, `audit_trail`, `serverless`, `ci_app`, `cloud_cost_management`, `cloud_siem`,\n`csm_container_enterprise`, `csm_host_enterprise`, `cspm`, `custom_events`, `cws`, `dbm`, `error_tracking`,\n`fargate`, `infra_hosts`, `incident_management`, `indexed_logs`, `indexed_spans`, `ingested_spans`, `iot`,\n`lambda_traced_invocations`, `llm_observability`, `logs`, `network_flows`, `network_hosts`, `network_monitoring`,\n`observability_pipelines`, `online_archive`, `profiling`, `product_analytics`, `rum`, `rum_browser_sessions`,\n`rum_mobile_sessions`, `sds`, `snmp`, `software_delivery`, `synthetics_api`, `synthetics_browser`,\n`synthetics_mobile`, `synthetics_parallel_testing`, `timeseries`, `vuln_management` and `workflow_executions`.\nThe following product family has been **deprecated**: `audit_logs`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of product families to retrieve. Available families are `all`, `analyzed_logs`,\n`application_security`, `audit_trail`, `serverless`, `ci_app`, `cloud_cost_management`, `cloud_siem`,\n`csm_container_enterprise`, `csm_host_enterprise`, `cspm`, `custom_events`, `cws`, `dbm`, `error_tracking`,\n`fargate`, `infra_hosts`, `incident_management`, `indexed_logs`, `indexed_spans`, `ingested_spans`, `iot`,\n`lambda_traced_invocations`, `llm_observability`, `logs`, `network_flows`, `network_hosts`, `network_monitoring`,\n`observability_pipelines`, `online_archive`, `profiling`, `product_analytics`, `rum`, `rum_browser_sessions`,\n`rum_mobile_sessions`, `sds`, `snmp`, `software_delivery`, `synthetics_api`, `synthetics_browser`,\n`synthetics_mobile`, `synthetics_parallel_testing`, `timeseries`, `vuln_management` and `workflow_executions`.\nThe following product family has been **deprecated**: `audit_logs`." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[include_descendants]", + "tool_parameter_name": "include_descendants_usage", + "description": "Include child org usage in the response. Defaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include child org usage in the response. Defaults to false." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + }, + { + "name": "filter[include_connected_accounts]", + "tool_parameter_name": "include_connected_accounts", + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to false." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + }, + { + "name": "filter[include_breakdown]", + "tool_parameter_name": "include_usage_breakdown", + "description": "Include breakdown of usage by subcategories where applicable (for product family logs only). Defaults to false.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include breakdown of usage by subcategories where applicable (for product family logs only). Defaults to false." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + }, + { + "name": "filter[versions]", + "tool_parameter_name": "product_family_versions", + "description": "Comma separated list of product family versions to use in the format `product_family:version`. For example,\n`infra_hosts:1.0.0`. If this parameter is not used, the API will use the latest version of each requested\nproduct family. Currently all families have one version `1.0.0`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of product family versions to use in the format `product_family:version`. For example,\n`infra_hosts:1.0.0`. If this parameter is not used, the API will use the latest version of each requested\nproduct family. Currently all families have one version `1.0.0`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "maximum_results_limit", + "description": "Maximum number of results to return (between 1 and 500) - defaults to 500 if limit not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results to return (between 1 and 500) - defaults to 500 if limit not specified." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 500, + "documentation_urls": [] + }, + { + "name": "page[next_record_id]", + "tool_parameter_name": "next_record_id", + "description": "List following results with a next_record_id provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a next_record_id provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentAttachments.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentAttachments.json new file mode 100644 index 00000000..81cda698 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentAttachments.json @@ -0,0 +1,192 @@ +{ + "name": "GetIncidentAttachments", + "fully_qualified_name": "DatadogApi.GetIncidentAttachments@0.1.0", + "description": "Retrieve all attachments for a specified incident.\n\nThis tool retrieves all files and documents attached to a particular incident. It should be called when details about the attachments associated with an incident are needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident whose attachments are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "include_related_objects", + "required": false, + "description": "A list of related object types to include in the response, such as 'user', 'tags'.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects are included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "attachment_types_to_include", + "required": false, + "description": "List the types of attachments to include in the response. Each type should be a string.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of attachments are included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[attachment_type]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidentAttachments'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/attachments", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_objects", + "description": "Specifies which types of related objects are included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects are included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[attachment_type]", + "tool_parameter_name": "attachment_types_to_include", + "description": "Specifies which types of attachments are included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of attachments are included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentDetails.json new file mode 100644 index 00000000..166e2c79 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentDetails.json @@ -0,0 +1,159 @@ +{ + "name": "GetIncidentDetails", + "fully_qualified_name": "DatadogApi.GetIncidentDetails@0.1.0", + "description": "Retrieve details of a specific incident using its ID.\n\nUse this tool to obtain detailed information about a specific incident by providing the incident ID. It retrieves all the necessary details from the Datadog service.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The UUID of the incident to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "include_related_objects", + "required": false, + "description": "Specify related object types to include in the response, such as users, logs, etc.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetIncident'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_objects", + "description": "Specifies which types of related objects should be included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentImpacts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentImpacts.json new file mode 100644 index 00000000..40a5f89f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentImpacts.json @@ -0,0 +1,159 @@ +{ + "name": "GetIncidentImpacts", + "fully_qualified_name": "DatadogApi.GetIncidentImpacts@0.1.0", + "description": "Retrieve all impacts for a specified incident.\n\nUse this tool to fetch all impact details associated with a particular incident, providing insight into the effects and scope of the incident.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique UUID of the incident to retrieve impacts for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Specify which related resources to include in the response as an array of strings.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which related resources should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidentImpacts'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/impacts", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Specifies which related resources should be included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which related resources should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentIntegrationDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentIntegrationDetails.json new file mode 100644 index 00000000..39e8ec10 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentIntegrationDetails.json @@ -0,0 +1,159 @@ +{ + "name": "GetIncidentIntegrationDetails", + "fully_qualified_name": "DatadogApi.GetIncidentIntegrationDetails@0.1.0", + "description": "Fetches details of incident integration metadata.\n\nUse this tool to obtain detailed metadata about a specific incident integration within Datadog, using the incident ID and integration metadata ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The UUID of the incident in Datadog for which to obtain integration metadata.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_integration_metadata_uuid", + "required": true, + "description": "The UUID of the incident integration metadata required to fetch its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident integration metadata." + }, + "inferrable": true, + "http_endpoint_parameter_name": "integration_metadata_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetIncidentIntegration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integration_metadata_id", + "tool_parameter_name": "incident_integration_metadata_uuid", + "description": "The UUID of the incident integration metadata.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident integration metadata." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentIntegrations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentIntegrations.json new file mode 100644 index 00000000..286485c7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentIntegrations.json @@ -0,0 +1,126 @@ +{ + "name": "GetIncidentIntegrations", + "fully_qualified_name": "DatadogApi.GetIncidentIntegrations@0.1.0", + "description": "Retrieve integration metadata for a specific incident.\n\nUse this tool to get all the integration metadata associated with a particular incident. It helps in understanding how different integrations are linked to an incident.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique UUID of the incident to retrieve integration metadata.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidentIntegrations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentNotificationRule.json new file mode 100644 index 00000000..d0f9efa7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentNotificationRule.json @@ -0,0 +1,159 @@ +{ + "name": "GetIncidentNotificationRule", + "fully_qualified_name": "DatadogApi.GetIncidentNotificationRule@0.1.0", + "description": "Retrieve details of a specific incident notification rule.\n\nThis tool retrieves a specific incident notification rule from Datadog by its ID. It should be called when there is a need to obtain detailed information about a particular notification rule used in incident management.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "notification_rule_id", + "required": true, + "description": "The unique identifier for the notification rule to retrieve details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "include_resources", + "required": false, + "description": "Comma-separated list of resources to include in the response. Options: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetIncidentNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-rules/{id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_resources", + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "notification_rule_id", + "description": "The ID of the notification rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentNotificationTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentNotificationTemplate.json new file mode 100644 index 00000000..accaf244 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentNotificationTemplate.json @@ -0,0 +1,159 @@ +{ + "name": "GetIncidentNotificationTemplate", + "fully_qualified_name": "DatadogApi.GetIncidentNotificationTemplate@0.1.0", + "description": "Retrieve a specific incident notification template by ID.\n\nUse this tool to get details of a specific incident notification template from Datadog by providing its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "template_id", + "required": true, + "description": "The ID of the notification template to retrieve from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetIncidentNotificationTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-templates/{id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "template_id", + "description": "The ID of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTodoDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTodoDetails.json new file mode 100644 index 00000000..12b06d88 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTodoDetails.json @@ -0,0 +1,159 @@ +{ + "name": "GetIncidentTodoDetails", + "fully_qualified_name": "DatadogApi.GetIncidentTodoDetails@0.1.0", + "description": "Retrieve details of an incident todo item from Datadog.\n\nUse this tool to obtain specific details about a todo item related to an incident in Datadog. It should be called when detailed information about an incident's todo component is needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The UUID of the incident to get the todo details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_todo_uuid", + "required": true, + "description": "The UUID of the incident todo to fetch details for. This is essential for identifying the specific todo item linked to an incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident todo." + }, + "inferrable": true, + "http_endpoint_parameter_name": "todo_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetIncidentTodo'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "todo_id", + "tool_parameter_name": "incident_todo_uuid", + "description": "The UUID of the incident todo.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident todo." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTypeDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTypeDetails.json new file mode 100644 index 00000000..21aef99f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTypeDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetIncidentTypeDetails", + "fully_qualified_name": "DatadogApi.GetIncidentTypeDetails@0.1.0", + "description": "Retrieve details of a specific incident type.\n\nUse this tool to obtain detailed information about a specific incident type from Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_type_uuid", + "required": true, + "description": "The UUID of the specific incident type to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_type_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetIncidentType'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/types/{incident_type_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "incident_type_id", + "tool_parameter_name": "incident_type_uuid", + "description": "The UUID of the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident type." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTypes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTypes.json new file mode 100644 index 00000000..59bde18a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIncidentTypes.json @@ -0,0 +1,126 @@ +{ + "name": "GetIncidentTypes", + "fully_qualified_name": "DatadogApi.GetIncidentTypes@0.1.0", + "description": "Retrieve all incident types from Datadog.\n\nThis tool calls the Datadog API to list all available incident types. Use it to get information about the types of incidents configured in the system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "include_deleted", + "required": false, + "description": "Include deleted incident types in the response when set to true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include deleted incident types in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include_deleted" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidentTypes'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/types", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include_deleted", + "tool_parameter_name": "include_deleted", + "description": "Include deleted incident types in the response.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Include deleted incident types in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIpAllowlist.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIpAllowlist.json new file mode 100644 index 00000000..5f49b237 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetIpAllowlist.json @@ -0,0 +1,91 @@ +{ + "name": "GetIpAllowlist", + "fully_qualified_name": "DatadogApi.GetIpAllowlist@0.1.0", + "description": "Retrieve the IP allowlist and its status.\n\nUse this tool to obtain the current IP allowlist and check whether it is enabled or disabled.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetIPAllowlist'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ip_allowlist", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetLogBasedMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetLogBasedMetric.json new file mode 100644 index 00000000..66b005d3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetLogBasedMetric.json @@ -0,0 +1,126 @@ +{ + "name": "GetLogBasedMetric", + "fully_qualified_name": "DatadogApi.GetLogBasedMetric@0.1.0", + "description": "Retrieve a specific log-based metric from Datadog.\n\nUse this tool to access detailed information about a specific log-based metric from your Datadog account. This is useful for monitoring and analyzing your organization's log metrics.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "log_based_metric_name", + "required": true, + "description": "The name of the log-based metric to retrieve from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetLogsMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/metrics/{metric_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "log_based_metric_name", + "description": "The name of the log-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetLogsMetricsList.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetLogsMetricsList.json new file mode 100644 index 00000000..8aae240c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetLogsMetricsList.json @@ -0,0 +1,91 @@ +{ + "name": "GetLogsMetricsList", + "fully_qualified_name": "DatadogApi.GetLogsMetricsList@0.1.0", + "description": "Retrieve a list of log-based metrics and their definitions.\n\nUse this tool to obtain the list of configured log-based metrics from Datadog, along with their definitions. This can be helpful for monitoring and analyzing log data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListLogsMetrics'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/metrics", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMetricTagCardinality.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMetricTagCardinality.json new file mode 100644 index 00000000..77344f41 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMetricTagCardinality.json @@ -0,0 +1,126 @@ +{ + "name": "GetMetricTagCardinality", + "fully_qualified_name": "DatadogApi.GetMetricTagCardinality@0.1.0", + "description": "Retrieve cardinality details of tags for a specific metric.\n\nThis tool is used to get the cardinality details of tags associated with a specific metric in Datadog. It's useful for understanding the distribution and uniqueness of tags related to the specified metric.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the metric for which cardinality details of tags are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetMetricTagCardinalityDetails'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/tag-cardinalities", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMetricTagConfiguration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMetricTagConfiguration.json new file mode 100644 index 00000000..6cd0fa6f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMetricTagConfiguration.json @@ -0,0 +1,126 @@ +{ + "name": "GetMetricTagConfiguration", + "fully_qualified_name": "DatadogApi.GetMetricTagConfiguration@0.1.0", + "description": "Retrieve the tag configuration for a specific metric.\n\nUse this tool to fetch the tag configuration associated with a specific metric name in Datadog. This is helpful for accessing detailed tagging information for metrics.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the metric for which to retrieve the tag configuration in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListTagConfigurationByName'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorConfigurationPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorConfigurationPolicy.json new file mode 100644 index 00000000..00866f2e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorConfigurationPolicy.json @@ -0,0 +1,126 @@ +{ + "name": "GetMonitorConfigurationPolicy", + "fully_qualified_name": "DatadogApi.GetMonitorConfigurationPolicy@0.1.0", + "description": "Retrieve a monitor's configuration policy using its ID.\n\nThis tool fetches detailed information about a specific monitor configuration policy from Datadog using the policy ID. It should be called when you need to access the configuration details of a monitor policy.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_policy_id", + "required": true, + "description": "ID of the monitor configuration policy to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor configuration policy." + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetMonitorConfigPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/policy/{policy_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "monitor_policy_id", + "description": "ID of the monitor configuration policy.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor configuration policy." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorNotificationRule.json new file mode 100644 index 00000000..da75f1af --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorNotificationRule.json @@ -0,0 +1,159 @@ +{ + "name": "GetMonitorNotificationRule", + "fully_qualified_name": "DatadogApi.GetMonitorNotificationRule@0.1.0", + "description": "Retrieve a monitor notification rule by its ID.\n\nUse this tool to fetch details of a specific monitor notification rule in Datadog by providing the rule ID. It can be useful for checking the configuration of alerting and notification rules.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_rule_id", + "required": true, + "description": "ID of the monitor notification rule to fetch. This is required to retrieve specific rule details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor notification rule to fetch." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Comma-separated list of related resource paths to include in the response, such as `created_by`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npath is `created_by`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetMonitorNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/notification_rule/{rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npath is `created_by`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npath is `created_by`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rule_id", + "tool_parameter_name": "monitor_rule_id", + "description": "ID of the monitor notification rule to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor notification rule to fetch." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorNotificationRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorNotificationRules.json new file mode 100644 index 00000000..3d5ce409 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorNotificationRules.json @@ -0,0 +1,258 @@ +{ + "name": "GetMonitorNotificationRules", + "fully_qualified_name": "DatadogApi.GetMonitorNotificationRules@0.1.0", + "description": "Retrieve all monitor notification rules from Datadog.\n\nCall this tool to get a comprehensive list of all monitor notification rules configured in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "starting_page_number", + "required": false, + "description": "The page number to begin pagination. Defaults to the first page if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page to start paginating from. If `page` is not specified, the argument defaults to the first page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "number_of_rules_per_page", + "required": false, + "description": "The number of rules to return per page. Defaults to 100 if not specified.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of rules to return per page. If `per_page` is not specified, the argument defaults to 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "per_page" + }, + { + "name": "sort_order", + "required": false, + "description": "String for sort order. Example: `name:asc`. Directions: `asc`, `desc`. Fields: `name`, `created_at`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String for sort order, composed of field and sort order separated by a colon, for example `name:asc`. Supported sort directions: `asc`, `desc`. Supported fields: `name`, `created_at`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_criteria", + "required": false, + "description": "JSON string to filter rules by text, tags, or recipients. Use keys: `text`, `tags`, `recipients`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "JSON-encoded filter object. Supported keys:\n* `text`: Free-text query matched against rule name, tags, and recipients.\n* `tags`: Array of strings. Return rules that have any of these tags.\n* `recipients`: Array of strings. Return rules that have any of these recipients." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filters" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Specify related resources to include in the response, such as `created_by`. Use a comma-separated list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npath is `created_by`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetMonitorNotificationRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/notification_rule", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page", + "tool_parameter_name": "starting_page_number", + "description": "The page to start paginating from. If `page` is not specified, the argument defaults to the first page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page to start paginating from. If `page` is not specified, the argument defaults to the first page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "per_page", + "tool_parameter_name": "number_of_rules_per_page", + "description": "The number of rules to return per page. If `per_page` is not specified, the argument defaults to 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of rules to return per page. If `per_page` is not specified, the argument defaults to 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "String for sort order, composed of field and sort order separated by a colon, for example `name:asc`. Supported sort directions: `asc`, `desc`. Supported fields: `name`, `created_at`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String for sort order, composed of field and sort order separated by a colon, for example `name:asc`. Supported sort directions: `asc`, `desc`. Supported fields: `name`, `created_at`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filters", + "tool_parameter_name": "filter_criteria", + "description": "JSON-encoded filter object. Supported keys:\n* `text`: Free-text query matched against rule name, tags, and recipients.\n* `tags`: Array of strings. Return rules that have any of these tags.\n* `recipients`: Array of strings. Return rules that have any of these recipients.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "JSON-encoded filter object. Supported keys:\n* `text`: Free-text query matched against rule name, tags, and recipients.\n* `tags`: Array of strings. Return rules that have any of these tags.\n* `recipients`: Array of strings. Return rules that have any of these recipients." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npath is `created_by`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npath is `created_by`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorUserTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorUserTemplate.json new file mode 100644 index 00000000..df32b631 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMonitorUserTemplate.json @@ -0,0 +1,159 @@ +{ + "name": "GetMonitorUserTemplate", + "fully_qualified_name": "DatadogApi.GetMonitorUserTemplate@0.1.0", + "description": "Retrieve a monitor user template by ID from Datadog.\n\nUse this tool to get detailed information about a specific monitor user template in Datadog by providing the template ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "template_id", + "required": true, + "description": "The unique identifier for the specific monitor user template to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + }, + { + "name": "include_all_versions", + "required": false, + "description": "Include all versions of the template in the response if true.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to include all versions of the template in the response in the versions field." + }, + "inferrable": true, + "http_endpoint_parameter_name": "with_all_versions" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetMonitorUserTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/template/{template_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "with_all_versions", + "tool_parameter_name": "include_all_versions", + "description": "Whether to include all versions of the template in the response in the versions field.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to include all versions of the template in the response in the versions field." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "template_id", + "tool_parameter_name": "template_id", + "description": "ID of the monitor user template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMsTeamsWorkflowWebhookName.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMsTeamsWorkflowWebhookName.json new file mode 100644 index 00000000..a86c6649 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetMsTeamsWorkflowWebhookName.json @@ -0,0 +1,126 @@ +{ + "name": "GetMsTeamsWorkflowWebhookName", + "fully_qualified_name": "DatadogApi.GetMsTeamsWorkflowWebhookName@0.1.0", + "description": "Retrieve the name of a MS Teams workflow webhook handle.\n\nUse this tool to get the name of a Microsoft Teams Workflows webhook handle using the Datadog integration. Useful for managing or verifying webhook configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_webhook_handle_id", + "required": true, + "description": "The ID of the Workflows webhook handle to retrieve the name for. This is specific to the Datadog Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetWorkflowsWebhookHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "handle_id", + "tool_parameter_name": "workflow_webhook_handle_id", + "description": "Your Workflows webhook handle id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOktaAccountInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOktaAccountInfo.json new file mode 100644 index 00000000..f87f8079 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOktaAccountInfo.json @@ -0,0 +1,126 @@ +{ + "name": "GetOktaAccountInfo", + "fully_qualified_name": "DatadogApi.GetOktaAccountInfo@0.1.0", + "description": "Retrieve detailed information about a specific Okta account.\n\nThis tool fetches details of an Okta account using the given account ID. It should be called when detailed information about an Okta account is required.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "okta_account_id", + "required": true, + "description": "The unique identifier for the Okta account to retrieve information for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetOktaAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/okta/accounts/{account_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "okta_account_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallEscalationPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallEscalationPolicy.json new file mode 100644 index 00000000..34bf9dc8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallEscalationPolicy.json @@ -0,0 +1,159 @@ +{ + "name": "GetOnCallEscalationPolicy", + "fully_qualified_name": "DatadogApi.GetOnCallEscalationPolicy@0.1.0", + "description": "Retrieve details of an On-Call escalation policy.\n\nThis tool is used to retrieve information about a specific on-call escalation policy from Datadog. It should be called when there's a need to understand the configuration or details of an on-call policy by providing the policy ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "escalation_policy_id", + "required": true, + "description": "The unique identifier for the on-call escalation policy to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the escalation policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + }, + { + "name": "include_relationships", + "required": false, + "description": "A comma-separated list of relationships to include in the response. Allowed values: `teams`, `steps`, `steps.targets`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetOnCallEscalationPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/escalation-policies/{policy_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "policy_id", + "tool_parameter_name": "escalation_policy_id", + "description": "The ID of the escalation policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the escalation policy" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallSchedule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallSchedule.json new file mode 100644 index 00000000..76583523 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallSchedule.json @@ -0,0 +1,159 @@ +{ + "name": "GetOnCallSchedule", + "fully_qualified_name": "DatadogApi.GetOnCallSchedule@0.1.0", + "description": "Retrieve an On-Call schedule from Datadog.\n\nUse this tool to access detailed information regarding a specific On-Call schedule in Datadog by providing the schedule ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "schedule_id", + "required": true, + "description": "The unique ID of the on-call schedule to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "schedule_id" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to include in the response. Options: `teams`, `layers`, `layers.members`, `layers.members.user`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetOnCallSchedule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "schedule_id", + "tool_parameter_name": "schedule_id", + "description": "The ID of the schedule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallUser.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallUser.json new file mode 100644 index 00000000..856e5180 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnCallUser.json @@ -0,0 +1,192 @@ +{ + "name": "GetOnCallUser", + "fully_qualified_name": "DatadogApi.GetOnCallUser@0.1.0", + "description": "Retrieve the current on-call user for a specific schedule.\n\nUse this tool to find out which user is currently on-call for a given schedule. It is helpful for monitoring and response teams to know who is available at any given moment.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "schedule_id", + "required": true, + "description": "The unique ID of the schedule to retrieve the on-call user from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "schedule_id" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Specifies related resources to include in the response. Use 'user' to include user details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies related resources to include in the response as a comma-separated list. Allowed value: `user`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "timestamp_for_on_call_user", + "required": false, + "description": "Retrieves the on-call user at the specified timestamp (ISO-8601). Defaults to current time if omitted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retrieves the on-call user at the given timestamp (ISO-8601). Defaults to the current time if omitted.\"" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[at_ts]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetScheduleOnCallUser'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}/on-call", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Specifies related resources to include in the response as a comma-separated list. Allowed value: `user`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies related resources to include in the response as a comma-separated list. Allowed value: `user`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[at_ts]", + "tool_parameter_name": "timestamp_for_on_call_user", + "description": "Retrieves the on-call user at the given timestamp (ISO-8601). Defaults to the current time if omitted.\"", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retrieves the on-call user at the given timestamp (ISO-8601). Defaults to the current time if omitted.\"" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "schedule_id", + "tool_parameter_name": "schedule_id", + "description": "The ID of the schedule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnDemandConcurrencyCap.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnDemandConcurrencyCap.json new file mode 100644 index 00000000..1902e11d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOnDemandConcurrencyCap.json @@ -0,0 +1,91 @@ +{ + "name": "GetOnDemandConcurrencyCap", + "fully_qualified_name": "DatadogApi.GetOnDemandConcurrencyCap@0.1.0", + "description": "Retrieve the on-demand concurrency cap value from Datadog.\n\nUse this tool to get the current on-demand concurrency cap configured in Datadog's synthetics settings. This information can help monitor and manage concurrency limits effectively.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetOnDemandConcurrencyCap'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/synthetics/settings/on_demand_concurrency_cap", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOpsgenieService.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOpsgenieService.json new file mode 100644 index 00000000..5a0a49ce --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOpsgenieService.json @@ -0,0 +1,126 @@ +{ + "name": "GetOpsgenieService", + "fully_qualified_name": "DatadogApi.GetOpsgenieService@0.1.0", + "description": "Retrieve a single Opsgenie service from Datadog.\n\nThis tool retrieves details about a specific service integrated with Datadog's Opsgenie. Use it to access information about service configurations or to manage operational alerts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_uuid", + "required": true, + "description": "The UUID of the Datadog Opsgenie service to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "integration_service_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetOpsgenieService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/opsgenie/services/{integration_service_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "integration_service_id", + "tool_parameter_name": "service_uuid", + "description": "The UUID of the service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the service." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOrganizationConfigDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOrganizationConfigDetails.json new file mode 100644 index 00000000..94457fa0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOrganizationConfigDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetOrganizationConfigDetails", + "fully_qualified_name": "DatadogApi.GetOrganizationConfigDetails@0.1.0", + "description": "Retrieve organization configuration details by name.\n\nFetches the name, description, and value of a specific organization configuration from Datadog, identified by its name.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_config_name", + "required": true, + "description": "The name of the organization configuration to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of an Org Config." + }, + "inferrable": true, + "http_endpoint_parameter_name": "org_config_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetOrgConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/org_configs/{org_config_name}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "org_config_name", + "tool_parameter_name": "organization_config_name", + "description": "The name of an Org Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of an Org Config." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOrganizationRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOrganizationRole.json new file mode 100644 index 00000000..fa618775 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetOrganizationRole.json @@ -0,0 +1,126 @@ +{ + "name": "GetOrganizationRole", + "fully_qualified_name": "DatadogApi.GetOrganizationRole@0.1.0", + "description": "Retrieve details of a role using its role ID in the organization.\n\nThis tool gets details of a specific role within an organization by using the role's unique ID. It is useful for obtaining role-specific information needed for organizational management or role auditing.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_id", + "required": true, + "description": "The unique identifier of the role in the organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_id", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetPowerpack.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetPowerpack.json new file mode 100644 index 00000000..f09c7444 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetPowerpack.json @@ -0,0 +1,126 @@ +{ + "name": "GetPowerpack", + "fully_qualified_name": "DatadogApi.GetPowerpack@0.1.0", + "description": "Retrieve details of a specific powerpack.\n\nThis tool should be called to obtain detailed information about a specific powerpack by providing its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "powerpack_identifier", + "required": true, + "description": "The unique identifier for the desired powerpack, used to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "inferrable": true, + "http_endpoint_parameter_name": "powerpack_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetPowerpack'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/powerpacks/{powerpack_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "powerpack_id", + "tool_parameter_name": "powerpack_identifier", + "description": "ID of the powerpack.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetProjectDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetProjectDetails.json new file mode 100644 index 00000000..6949ce9d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetProjectDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetProjectDetails", + "fully_qualified_name": "DatadogApi.GetProjectDetails@0.1.0", + "description": "Retrieve details of a specific project using project ID.\n\nUse this tool to obtain comprehensive details about a particular project by providing the project's ID, utilizing the Datadog API.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_uuid", + "required": true, + "description": "The unique identifier (UUID) of the project for which details are required.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/projects/{project_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "project_id", + "tool_parameter_name": "project_uuid", + "description": "Project UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetProjectedCost.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetProjectedCost.json new file mode 100644 index 00000000..167cf952 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetProjectedCost.json @@ -0,0 +1,159 @@ +{ + "name": "GetProjectedCost", + "fully_qualified_name": "DatadogApi.GetProjectedCost@0.1.0", + "description": "Retrieve projected cost for multi-org and single root-org accounts.\n\nThis tool fetches projected cost data, available for the current month, for multi-org and single root-org accounts, becoming accessible around the 12th of the month. It's used for parent-level organizations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cost_view_level", + "required": false, + "description": "Specify cost breakdown level: `summary` for parent-org or `sub-org` for sub-org level. Defaults to `summary`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "view" + }, + { + "name": "include_connected_accounts", + "required": false, + "description": "Include accounts connected as partner customers in the Datadog partner network. Defaults to `false`.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. " + }, + "inferrable": true, + "http_endpoint_parameter_name": "include_connected_accounts" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetProjectedCost'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/usage/projected_cost", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "view", + "tool_parameter_name": "cost_view_level", + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include_connected_accounts", + "tool_parameter_name": "include_connected_accounts", + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. ", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean to specify whether to include accounts connected to the current account as partner customers in the Datadog partner network program. Defaults to `false`. " + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetReferenceTable.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetReferenceTable.json new file mode 100644 index 00000000..52cabb1d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetReferenceTable.json @@ -0,0 +1,126 @@ +{ + "name": "GetReferenceTable", + "fully_qualified_name": "DatadogApi.GetReferenceTable@0.1.0", + "description": "Retrieve details of a reference table by its ID.\n\nUse this tool to fetch information about a specific reference table in Datadog using its unique ID. This is helpful for accessing configuration or metadata details related to the table.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "reference_table_id", + "required": true, + "description": "The unique ID of the reference table to retrieve details from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table to retrieve" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTable'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/reference-tables/tables/{id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "id", + "tool_parameter_name": "reference_table_id", + "description": "The ID of the reference table to retrieve", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table to retrieve" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRestrictionQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRestrictionQuery.json new file mode 100644 index 00000000..e08f260b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRestrictionQuery.json @@ -0,0 +1,126 @@ +{ + "name": "GetRestrictionQuery", + "fully_qualified_name": "DatadogApi.GetRestrictionQuery@0.1.0", + "description": "Retrieve a restriction query by its ID within Datadog.\n\nUse this tool to access the details of a specific restriction query in your Datadog organization by providing the `restriction_query_id`.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "restriction_query_id", + "required": true, + "description": "The unique identifier for the restriction query to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "restriction_query_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRestrictionQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "restriction_query_id", + "tool_parameter_name": "restriction_query_id", + "description": "The ID of the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRestrictionQueryRoles.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRestrictionQueryRoles.json new file mode 100644 index 00000000..35557075 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRestrictionQueryRoles.json @@ -0,0 +1,192 @@ +{ + "name": "GetRestrictionQueryRoles", + "fully_qualified_name": "DatadogApi.GetRestrictionQueryRoles@0.1.0", + "description": "Retrieve roles associated with a specific restriction query.\n\nThis tool fetches all roles that are linked to a specified restriction query within Datadog. Use this when you need to identify which roles have permissions based on a specific restriction query.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "restriction_query_id", + "required": true, + "description": "The unique identifier of the restriction query to fetch associated roles.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "restriction_query_id" + }, + { + "name": "page_size", + "required": false, + "description": "Specify the number of results per page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return in the response. Use this to navigate through paginated results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListRestrictionQueryRoles'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "restriction_query_id", + "tool_parameter_name": "restriction_query_id", + "description": "The ID of the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRoleRestrictionQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRoleRestrictionQuery.json new file mode 100644 index 00000000..ef907dbf --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRoleRestrictionQuery.json @@ -0,0 +1,126 @@ +{ + "name": "GetRoleRestrictionQuery", + "fully_qualified_name": "DatadogApi.GetRoleRestrictionQuery@0.1.0", + "description": "Retrieve the restriction query for a specific role.\n\nUse this tool to get the restriction query details associated with a specific role in Datadog. The tool fetches information relevant to access restrictions for the role identified.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_id", + "required": true, + "description": "The unique identifier for the role whose restriction query you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRoleRestrictionQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/role/{role_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_id", + "description": "The ID of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRuleVersionHistory.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRuleVersionHistory.json new file mode 100644 index 00000000..3ea36d62 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRuleVersionHistory.json @@ -0,0 +1,192 @@ +{ + "name": "GetRuleVersionHistory", + "fully_qualified_name": "DatadogApi.GetRuleVersionHistory@0.1.0", + "description": "Retrieve a rule's version history.\n\nUse this tool to obtain the version history of a specific security monitoring rule by its ID in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_id", + "required": true, + "description": "The unique identifier for the rule. Required to fetch its version history in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "page_size", + "required": false, + "description": "Size for a given page, maximum value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return in the results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRuleVersionHistory'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}/version_history", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "rule_id", + "tool_parameter_name": "rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumApplicationById.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumApplicationById.json new file mode 100644 index 00000000..119d37ca --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumApplicationById.json @@ -0,0 +1,126 @@ +{ + "name": "GetRumApplicationById", + "fully_qualified_name": "DatadogApi.GetRumApplicationById@0.1.0", + "description": "Retrieve RUM application details by ID.\n\nUse this tool to obtain details about a RUM application within your organization by specifying its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The ID of the RUM application to retrieve details for. This is a required string value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRUMApplication'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumMetric.json new file mode 100644 index 00000000..2385e133 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumMetric.json @@ -0,0 +1,126 @@ +{ + "name": "GetRumMetric", + "fully_qualified_name": "DatadogApi.GetRumMetric@0.1.0", + "description": "Retrieve a specific RUM-based metric for your organization.\n\nCall this tool to get detailed data about a specific Real User Monitoring (RUM) metric identified by its metric ID from your organization on Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_identifier", + "required": true, + "description": "The unique identifier for the RUM-based metric you want to retrieve from your organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRumMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/config/metrics/{metric_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "metric_identifier", + "description": "The name of the rum-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumRetentionFilter.json new file mode 100644 index 00000000..ec7a882c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumRetentionFilter.json @@ -0,0 +1,159 @@ +{ + "name": "GetRumRetentionFilter", + "fully_qualified_name": "DatadogApi.GetRumRetentionFilter@0.1.0", + "description": "Retrieve a RUM retention filter for a RUM application.\n\nFetches details of a specific RUM retention filter for a given RUM application based on its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The unique identifier for the RUM application. Required to fetch the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + }, + { + "name": "retention_filter_id", + "required": true, + "description": "The ID of the retention filter to retrieve for a RUM application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retention filter ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rf_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rf_id", + "tool_parameter_name": "retention_filter_id", + "description": "Retention filter ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retention filter ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumRetentionFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumRetentionFilters.json new file mode 100644 index 00000000..c7510ba4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetRumRetentionFilters.json @@ -0,0 +1,126 @@ +{ + "name": "GetRumRetentionFilters", + "fully_qualified_name": "DatadogApi.GetRumRetentionFilters@0.1.0", + "description": "Retrieve RUM retention filters for a specific application.\n\nUse this tool to obtain the list of RUM retention filters for a given RUM application by specifying its application ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The unique identifier for the RUM application to retrieve retention filters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListRetentionFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityFilterDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityFilterDetails.json new file mode 100644 index 00000000..f70f1cbb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityFilterDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetSecurityFilterDetails", + "fully_qualified_name": "DatadogApi.GetSecurityFilterDetails@0.1.0", + "description": "Retrieve the details of a specific security filter.\n\nUse this tool to get detailed information about a security filter in Datadog's security monitoring configuration. Ideal for understanding specific filter configurations and settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_filter_id", + "required": true, + "description": "The unique identifier for the security filter to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the security filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "security_filter_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSecurityFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "security_filter_id", + "tool_parameter_name": "security_filter_id", + "description": "The ID of the security filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the security filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityFinding.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityFinding.json new file mode 100644 index 00000000..23ca95ad --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityFinding.json @@ -0,0 +1,159 @@ +{ + "name": "GetSecurityFinding", + "fully_qualified_name": "DatadogApi.GetSecurityFinding@0.1.0", + "description": "Retrieve details of a specific security finding for analysis.\n\nThis tool retrieves the message and resource configuration details of a specified security finding, helping in security analysis and incident response.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "finding_id", + "required": true, + "description": "The unique ID of the security finding to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the finding." + }, + "inferrable": true, + "http_endpoint_parameter_name": "finding_id" + }, + { + "name": "snapshot_unix_timestamp", + "required": false, + "description": "Return the finding for a specific snapshot in time, given in Unix milliseconds.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return the finding for a given snapshot of time (Unix ms)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "snapshot_timestamp" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetFinding'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/posture_management/findings/{finding_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "snapshot_timestamp", + "tool_parameter_name": "snapshot_unix_timestamp", + "description": "Return the finding for a given snapshot of time (Unix ms).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return the finding for a given snapshot of time (Unix ms)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "finding_id", + "tool_parameter_name": "finding_id", + "description": "The ID of the finding.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the finding." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityMonitoringRuleDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityMonitoringRuleDetails.json new file mode 100644 index 00000000..b8979b93 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecurityMonitoringRuleDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetSecurityMonitoringRuleDetails", + "fully_qualified_name": "DatadogApi.GetSecurityMonitoringRuleDetails@0.1.0", + "description": "Retrieve detailed information about a specific security rule.\n\nUse this tool to get comprehensive details about a security monitoring rule by specifying its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_rule_id", + "required": true, + "description": "The unique identifier for the security monitoring rule you want to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "security_rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecuritySignalDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecuritySignalDetails.json new file mode 100644 index 00000000..9fd28296 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSecuritySignalDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetSecuritySignalDetails", + "fully_qualified_name": "DatadogApi.GetSecuritySignalDetails@0.1.0", + "description": "Retrieve details of a security monitoring signal.\n\nThis tool is used to obtain detailed information about a specific security monitoring signal in Datadog. It should be called when you need to understand the context or specifics of a particular signal identified by its unique signal ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "signal_id", + "required": true, + "description": "The unique identifier for the security monitoring signal to retrieve details for. This ID is used to specify which signal's details to fetch.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "inferrable": true, + "http_endpoint_parameter_name": "signal_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSecurityMonitoringSignal'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/signals/{signal_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "signal_id", + "tool_parameter_name": "signal_id", + "description": "The ID of the signal.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the signal." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServerlessCoverageAnalysis.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServerlessCoverageAnalysis.json new file mode 100644 index 00000000..ded412cd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServerlessCoverageAnalysis.json @@ -0,0 +1,91 @@ +{ + "name": "GetServerlessCoverageAnalysis", + "fully_qualified_name": "DatadogApi.GetServerlessCoverageAnalysis@0.1.0", + "description": "Retrieve CSM serverless coverage analysis data from Datadog.\n\nThis tool fetches the CSM Coverage Analysis for serverless resources in Datadog, determined by the number of agents with CSM features enabled.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetCSMServerlessCoverageAnalysis'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/csm/onboarding/coverage_analysis/serverless", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServiceDefinition.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServiceDefinition.json new file mode 100644 index 00000000..4b3e427d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServiceDefinition.json @@ -0,0 +1,169 @@ +{ + "name": "GetServiceDefinition", + "fully_qualified_name": "DatadogApi.GetServiceDefinition@0.1.0", + "description": "Retrieve a service definition from Datadog's Service Catalog.\n\nCall this tool to obtain specific details about a service defined in the Datadog Service Catalog. Useful for monitoring and managing services.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_name", + "required": true, + "description": "The exact name of the service to retrieve from Datadog's Service Catalog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_name" + }, + { + "name": "desired_schema_version", + "required": false, + "description": "Specify the schema version for the response. Options: 'v1', 'v2', 'v2.1', 'v2.2'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "v1", + "v2", + "v2.1", + "v2.2" + ], + "properties": null, + "inner_properties": null, + "description": "The schema version desired in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "schema_version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetServiceDefinition'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/services/definitions/{service_name}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "schema_version", + "tool_parameter_name": "desired_schema_version", + "description": "The schema version desired in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "v1", + "v2", + "v2.1", + "v2.2" + ], + "properties": null, + "inner_properties": null, + "description": "The schema version desired in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "service_name", + "tool_parameter_name": "service_name", + "description": "The name of the service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the service." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServiceDefinitions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServiceDefinitions.json new file mode 100644 index 00000000..0e4ba368 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetServiceDefinitions.json @@ -0,0 +1,202 @@ +{ + "name": "GetServiceDefinitions", + "fully_qualified_name": "DatadogApi.GetServiceDefinitions@0.1.0", + "description": "Retrieve all service definitions from the Datadog Service Catalog.\n\nUse this tool to get a comprehensive list of service definitions from Datadog's Service Catalog. Ideal for scenarios where service information retrieval is required.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Specify the number of items per page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to retrieve from the service definitions list.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "response_schema_version", + "required": false, + "description": "Specifies the version of the schema to be returned in the response. Acceptable values are 'v1', 'v2', 'v2.1', or 'v2.2'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "v1", + "v2", + "v2.1", + "v2.2" + ], + "properties": null, + "inner_properties": null, + "description": "The schema version desired in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "schema_version" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListServiceDefinitions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/services/definitions", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "schema_version", + "tool_parameter_name": "response_schema_version", + "description": "The schema version desired in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "v1", + "v2", + "v2.1", + "v2.2" + ], + "properties": null, + "inner_properties": null, + "description": "The schema version desired in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSingleTeamInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSingleTeamInfo.json new file mode 100644 index 00000000..01cf8724 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSingleTeamInfo.json @@ -0,0 +1,126 @@ +{ + "name": "GetSingleTeamInfo", + "fully_qualified_name": "DatadogApi.GetSingleTeamInfo@0.1.0", + "description": "Retrieve details of a team using its ID.\n\nUse this tool to obtain details about a specific team by providing the team's ID. Ideal for applications needing team-specific information.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier for the team. Provide this to retrieve specific team details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSloReportStatus.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSloReportStatus.json new file mode 100644 index 00000000..bc87492d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSloReportStatus.json @@ -0,0 +1,126 @@ +{ + "name": "GetSloReportStatus", + "fully_qualified_name": "DatadogApi.GetSloReportStatus@0.1.0", + "description": "Retrieve the status of a specific SLO report job.\n\nUse this tool to check the current status of a Service Level Objective (SLO) report job by providing the report ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "slo_report_id", + "required": true, + "description": "The unique identifier of the SLO report job to check its current status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the report job." + }, + "inferrable": true, + "http_endpoint_parameter_name": "report_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSLOReportJobStatus'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/slo/report/{report_id}/status", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "report_id", + "tool_parameter_name": "slo_report_id", + "description": "The ID of the report job.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the report job." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpanMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpanMetric.json new file mode 100644 index 00000000..399aae8a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpanMetric.json @@ -0,0 +1,126 @@ +{ + "name": "GetSpanMetric", + "fully_qualified_name": "DatadogApi.GetSpanMetric@0.1.0", + "description": "Retrieve a specific span-based metric from Datadog.\n\nUse this tool to get detailed information on a particular span-based metric from your Datadog organization. Ideal for accessing span metrics data by specifying the metric ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the span-based metric to be retrieved from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSpansMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/metrics/{metric_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "metric_name", + "description": "The name of the span-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSparkJobRecommendations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSparkJobRecommendations.json new file mode 100644 index 00000000..35f69d4f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSparkJobRecommendations.json @@ -0,0 +1,159 @@ +{ + "name": "GetSparkJobRecommendations", + "fully_qualified_name": "DatadogApi.GetSparkJobRecommendations@0.1.0", + "description": "Retrieve resource recommendations for a Spark job.\n\nUse this tool to obtain structured recommendations for Spark job driver and executor resources, based on specified service name and shard identifier.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "spark_job_shard_identifier", + "required": true, + "description": "The shard identifier for a Spark job, differentiating jobs within the same service with distinct resource requirements.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The shard tag for a spark job, which differentiates jobs within the same service that have different resource needs" + }, + "inferrable": true, + "http_endpoint_parameter_name": "shard" + }, + { + "name": "spark_job_service_name", + "required": true, + "description": "The service name for the Spark job to retrieve recommendations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service name for a spark job" + }, + "inferrable": true, + "http_endpoint_parameter_name": "service" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSPARecommendations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/spa/recommendations/{service}/{shard}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "shard", + "tool_parameter_name": "spark_job_shard_identifier", + "description": "The shard tag for a spark job, which differentiates jobs within the same service that have different resource needs", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The shard tag for a spark job, which differentiates jobs within the same service that have different resource needs" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "service", + "tool_parameter_name": "spark_job_service_name", + "description": "The service name for a spark job", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service name for a spark job" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpecificLogsArchive.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpecificLogsArchive.json new file mode 100644 index 00000000..84198f63 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpecificLogsArchive.json @@ -0,0 +1,126 @@ +{ + "name": "GetSpecificLogsArchive", + "fully_qualified_name": "DatadogApi.GetSpecificLogsArchive@0.1.0", + "description": "Retrieve a specific logs archive from Datadog.\n\nUse this tool to get a specific archive of logs from your Datadog organization by providing the archive ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_id", + "required": true, + "description": "The unique identifier for the logs archive to retrieve from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "archive_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetLogsArchive'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "archive_id", + "tool_parameter_name": "archive_id", + "description": "The ID of the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpecificPipelineById.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpecificPipelineById.json new file mode 100644 index 00000000..e0d81fab --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSpecificPipelineById.json @@ -0,0 +1,126 @@ +{ + "name": "GetSpecificPipelineById", + "fully_qualified_name": "DatadogApi.GetSpecificPipelineById@0.1.0", + "description": "Retrieve specific pipeline details by ID.\n\nUse this tool to get details of a specific pipeline by providing its ID. It fetches the configuration and status of the pipeline from Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "pipeline_id", + "required": true, + "description": "The unique ID of the pipeline to retrieve from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the pipeline to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "pipeline_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetPipeline'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/{pipeline_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "pipeline_id", + "tool_parameter_name": "pipeline_id", + "description": "The ID of the pipeline to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the pipeline to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSuppressionRuleDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSuppressionRuleDetails.json new file mode 100644 index 00000000..69c42117 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSuppressionRuleDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetSuppressionRuleDetails", + "fully_qualified_name": "DatadogApi.GetSuppressionRuleDetails@0.1.0", + "description": "Get details of a specific security suppression rule.\n\nFetch the details of a suppression rule by providing the suppression ID. Useful for understanding the configuration and parameters of a specific rule in the security monitoring system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "suppression_rule_id", + "required": true, + "description": "The unique ID of the suppression rule you wish to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the suppression rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "suppression_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSecurityMonitoringSuppression'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/{suppression_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "suppression_id", + "tool_parameter_name": "suppression_rule_id", + "description": "The ID of the suppression rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the suppression rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSuppressionsForRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSuppressionsForRule.json new file mode 100644 index 00000000..5c90504c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetSuppressionsForRule.json @@ -0,0 +1,126 @@ +{ + "name": "GetSuppressionsForRule", + "fully_qualified_name": "DatadogApi.GetSuppressionsForRule@0.1.0", + "description": "Retrieve suppressions affecting a specific rule by ID.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_id", + "required": true, + "description": "The unique identifier of the specific rule for which to retrieve suppressions.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetSuppressionsAffectingRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/rules/{rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTableRowsById.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTableRowsById.json new file mode 100644 index 00000000..acd3588e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTableRowsById.json @@ -0,0 +1,159 @@ +{ + "name": "GetTableRowsById", + "fully_qualified_name": "DatadogApi.GetTableRowsById@0.1.0", + "description": "Retrieve reference table rows using primary key values.\n\nCall this tool to access rows from a Datadog reference table by specifying their primary key values. It's useful for obtaining specific entries in the table.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "row_ids_to_retrieve", + "required": true, + "description": "List of primary key values to specify which rows to retrieve from the reference table.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of row IDs (primary key values) to retrieve from the reference table." + }, + "inferrable": true, + "http_endpoint_parameter_name": "row_id" + }, + { + "name": "reference_table_id", + "required": true, + "description": "The unique ID of the reference table to retrieve rows from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRowsByID'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/reference-tables/tables/{id}/rows", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "row_id", + "tool_parameter_name": "row_ids_to_retrieve", + "description": "List of row IDs (primary key values) to retrieve from the reference table.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of row IDs (primary key values) to retrieve from the reference table." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "reference_table_id", + "description": "The ID of the reference table", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTagPipelineRuleset.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTagPipelineRuleset.json new file mode 100644 index 00000000..6ca4fa4c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTagPipelineRuleset.json @@ -0,0 +1,126 @@ +{ + "name": "GetTagPipelineRuleset", + "fully_qualified_name": "DatadogApi.GetTagPipelineRuleset@0.1.0", + "description": "Retrieve a specific tag pipeline ruleset by its ID.\n\nUse this tool to get detailed information about a specific tag pipeline ruleset within Datadog by providing its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "ruleset_identifier", + "required": true, + "description": "The unique identifier for the tag pipeline ruleset to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the ruleset" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ruleset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTagPipelinesRuleset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/tags/enrichment/{ruleset_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "ruleset_id", + "tool_parameter_name": "ruleset_identifier", + "description": "The unique identifier of the ruleset", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the ruleset" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamLink.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamLink.json new file mode 100644 index 00000000..b405cbbe --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamLink.json @@ -0,0 +1,159 @@ +{ + "name": "GetTeamLink", + "fully_qualified_name": "DatadogApi.GetTeamLink@0.1.0", + "description": "Retrieve a specific link for a team.\n\nUse this tool to get detailed information about a specific link associated with a team in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier for the team whose link you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "link_id", + "required": true, + "description": "The unique identifier for the specific link you want to retrieve for a team in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "link_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTeamLink'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/links/{link_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "link_id", + "tool_parameter_name": "link_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamMembers.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamMembers.json new file mode 100644 index 00000000..e6404b05 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamMembers.json @@ -0,0 +1,276 @@ +{ + "name": "GetTeamMembers", + "fully_qualified_name": "DatadogApi.GetTeamMembers@0.1.0", + "description": "Retrieve a list of team members.\n\nRetrieve a paginated list of members for a specified team using their team ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier for the team whose members are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "page_size", + "required": false, + "description": "Specify the number of team members to return per page. Maximum is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to retrieve from the list of team members.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify the order of returned team memberships. Options include 'manager_name', '-manager_name', 'name', '-name', 'handle', '-handle', 'email', '-email'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "manager_name", + "-manager_name", + "name", + "-name", + "handle", + "-handle", + "email", + "-email" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the order of returned team memberships" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "search_query", + "required": false, + "description": "Search query for filtering members by user email or name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query, can be user email or name" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[keyword]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTeamMemberships'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/memberships", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Specifies the order of returned team memberships", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "manager_name", + "-manager_name", + "name", + "-name", + "handle", + "-handle", + "email", + "-email" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the order of returned team memberships" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[keyword]", + "tool_parameter_name": "search_query", + "description": "Search query, can be user email or name", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query, can be user email or name" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "team_id", + "tool_parameter_name": "team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamOnCallRoutingRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamOnCallRoutingRules.json new file mode 100644 index 00000000..ecde9804 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamOnCallRoutingRules.json @@ -0,0 +1,159 @@ +{ + "name": "GetTeamOnCallRoutingRules", + "fully_qualified_name": "DatadogApi.GetTeamOnCallRoutingRules@0.1.0", + "description": "Retrieve a team's on-call routing rules from Datadog.\n\nUse this tool to obtain the on-call routing rules for a specific team in Datadog by providing the team ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team whose on-call routing rules are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to return, such as `rules` or `rules.policy`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `rules`, `rules.policy`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetOnCallTeamRoutingRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/teams/{team_id}/routing-rules", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `rules`, `rules.policy`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `rules`, `rules.policy`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "The team ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team ID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamOnCallUsers.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamOnCallUsers.json new file mode 100644 index 00000000..f1a5f5f3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamOnCallUsers.json @@ -0,0 +1,159 @@ +{ + "name": "GetTeamOnCallUsers", + "fully_qualified_name": "DatadogApi.GetTeamOnCallUsers@0.1.0", + "description": "Retrieve on-call users for a specific team.\n\nFetch the list of users who are on-call for a specified team at a given time using Datadog's API.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier for the team whose on-call users are being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to include in the response: `responders`, `escalations`, `escalations.responders`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `responders`, `escalations`, `escalations.responders`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTeamOnCallUsers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/teams/{team_id}/on-call", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `responders`, `escalations`, `escalations.responders`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `responders`, `escalations`, `escalations.responders`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "team_id", + "tool_parameter_name": "team_id", + "description": "The team ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team ID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamPermissionSettings.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamPermissionSettings.json new file mode 100644 index 00000000..7a619497 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamPermissionSettings.json @@ -0,0 +1,126 @@ +{ + "name": "GetTeamPermissionSettings", + "fully_qualified_name": "DatadogApi.GetTeamPermissionSettings@0.1.0", + "description": "Retrieve permission settings for a specific team.\n\nCall this tool to obtain all permission settings associated with a specific team in Datadog. Ideal for checking or managing team permissions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team whose permission settings are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTeamPermissionSettings'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/permission-settings", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamsIntegrationInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamsIntegrationInfo.json new file mode 100644 index 00000000..ce6674e9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetTeamsIntegrationInfo.json @@ -0,0 +1,126 @@ +{ + "name": "GetTeamsIntegrationInfo", + "fully_qualified_name": "DatadogApi.GetTeamsIntegrationInfo@0.1.0", + "description": "Retrieve tenant, team, and channel info for a handle.\n\nThis tool gets the tenant, team, and channel information for a specified tenant-based handle from the Datadog Microsoft Teams integration. It should be called to obtain detailed configuration data related to a specific integration handle.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "tenant_handle_id", + "required": true, + "description": "The tenant-based handle ID for the Microsoft Teams integration used to retrieve tenant, team, and channel information.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetTenantBasedHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "handle_id", + "tool_parameter_name": "tenant_handle_id", + "description": "Your tenant-based handle id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetThreatProtectionAgentRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetThreatProtectionAgentRule.json new file mode 100644 index 00000000..6bca7981 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetThreatProtectionAgentRule.json @@ -0,0 +1,159 @@ +{ + "name": "GetThreatProtectionAgentRule", + "fully_qualified_name": "DatadogApi.GetThreatProtectionAgentRule@0.1.0", + "description": "Retrieve details of a specific Workload Protection agent rule.\n\nUse this tool to get information about a particular Workload Protection agent rule in Datadog. Note: This functionality is unavailable for the US1-FED site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_id", + "required": true, + "description": "The unique identifier for the specific Agent rule to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "agent_rule_id" + }, + { + "name": "agent_policy_id", + "required": false, + "description": "The ID of the agent policy to retrieve the specific rule for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCSMThreatsAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "agent_policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "agent_rule_id", + "tool_parameter_name": "agent_rule_id", + "description": "The ID of the Agent rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserApplicationKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserApplicationKey.json new file mode 100644 index 00000000..a1211a58 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserApplicationKey.json @@ -0,0 +1,126 @@ +{ + "name": "GetUserApplicationKey", + "fully_qualified_name": "DatadogApi.GetUserApplicationKey@0.1.0", + "description": "Retrieve an application key owned by the current user.\n\nUse this tool to obtain details about a specific application key that belongs to the currently authenticated Datadog user.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_key_id", + "required": true, + "description": "The ID of the application key to retrieve, owned by the current user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCurrentUserApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/current_user/application_keys/{app_key_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserDetails.json new file mode 100644 index 00000000..fd191eda --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetUserDetails", + "fully_qualified_name": "DatadogApi.GetUserDetails@0.1.0", + "description": "Retrieve details of a specific user by their user ID.\n\nUse this tool to access detailed information about a user in your organization by specifying their unique user ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_id", + "required": true, + "description": "The unique identifier for the user whose details are being retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetUser'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users/{user_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "user_id", + "tool_parameter_name": "user_id", + "description": "The ID of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserInvitation.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserInvitation.json new file mode 100644 index 00000000..4e56d4d3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserInvitation.json @@ -0,0 +1,126 @@ +{ + "name": "GetUserInvitation", + "fully_qualified_name": "DatadogApi.GetUserInvitation@0.1.0", + "description": "Retrieve a user invitation using its UUID.\n\nUse this tool to obtain details of a specific user invitation from Datadog by providing the unique identifier (UUID).", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_invitation_uuid", + "required": true, + "description": "The unique UUID of the user invitation required to retrieve its details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the user invitation." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_invitation_uuid" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetInvitation'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/user_invitations/{user_invitation_uuid}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "user_invitation_uuid", + "tool_parameter_name": "user_invitation_uuid", + "description": "The UUID of the user invitation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the user invitation." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserMemberships.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserMemberships.json new file mode 100644 index 00000000..c2f9bfd6 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserMemberships.json @@ -0,0 +1,126 @@ +{ + "name": "GetUserMemberships", + "fully_qualified_name": "DatadogApi.GetUserMemberships@0.1.0", + "description": "Retrieve a user's memberships from Datadog.\n\nThis tool fetches a list of group memberships for a specified user using their UUID in Datadog's system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_uuid", + "required": true, + "description": "The unique identifier for the user whose memberships are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_uuid" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetUserMemberships'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users/{user_uuid}/memberships", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "user_uuid", + "tool_parameter_name": "user_uuid", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserOrganizations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserOrganizations.json new file mode 100644 index 00000000..fff2f5c7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserOrganizations.json @@ -0,0 +1,126 @@ +{ + "name": "GetUserOrganizations", + "fully_qualified_name": "DatadogApi.GetUserOrganizations@0.1.0", + "description": "Retrieve a user's organizations and information.\n\nUse this tool to get information about a specific user and list all the organizations they have joined. Useful for understanding user affiliations within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_identifier", + "required": true, + "description": "The unique ID of the user whose organizations and information are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListUserOrganizations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users/{user_id}/orgs", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "The ID of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserPermissions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserPermissions.json new file mode 100644 index 00000000..d246657f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserPermissions.json @@ -0,0 +1,126 @@ +{ + "name": "GetUserPermissions", + "fully_qualified_name": "DatadogApi.GetUserPermissions@0.1.0", + "description": "Retrieve a user's permissions from Datadog.\n\nThis tool fetches the permissions assigned to a user based on their roles in Datadog. It should be called when you need to know the specific access rights a user has.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_identifier", + "required": true, + "description": "The unique identifier for the Datadog user whose permissions you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListUserPermissions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users/{user_id}/permissions", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "The ID of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserRestrictionQueries.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserRestrictionQueries.json new file mode 100644 index 00000000..b2291b39 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetUserRestrictionQueries.json @@ -0,0 +1,126 @@ +{ + "name": "GetUserRestrictionQueries", + "fully_qualified_name": "DatadogApi.GetUserRestrictionQueries@0.1.0", + "description": "Retrieve restriction queries for a specific user.\n\nUse this tool to get all restriction queries associated with a specified user in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_identifier", + "required": true, + "description": "The unique ID of the user for retrieving restriction queries.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListUserRestrictionQueries'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/user/{user_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "The ID of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWafCustomRuleById.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWafCustomRuleById.json new file mode 100644 index 00000000..7a95d48d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWafCustomRuleById.json @@ -0,0 +1,126 @@ +{ + "name": "GetWafCustomRuleById", + "fully_qualified_name": "DatadogApi.GetWafCustomRuleById@0.1.0", + "description": "Retrieve a WAF custom rule by ID from Datadog.\n\nUse this tool to obtain details of a specific Web Application Firewall (WAF) custom rule from Datadog by providing the rule's ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_rule_id", + "required": true, + "description": "The unique identifier for the WAF custom rule to retrieve from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_rule_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetApplicationSecurityWafCustomRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "custom_rule_id", + "tool_parameter_name": "custom_rule_id", + "description": "The ID of the custom rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWafExclusionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWafExclusionFilter.json new file mode 100644 index 00000000..2ac6bca5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWafExclusionFilter.json @@ -0,0 +1,126 @@ +{ + "name": "GetWafExclusionFilter", + "fully_qualified_name": "DatadogApi.GetWafExclusionFilter@0.1.0", + "description": "Retrieve a specific WAF exclusion filter by ID.\n\nUse this tool to obtain details about a specific Web Application Firewall (WAF) exclusion filter by providing its unique identifier.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "waf_exclusion_filter_id", + "required": true, + "description": "The unique identifier of the WAF exclusion filter to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the WAF exclusion filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "exclusion_filter_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetApplicationSecurityWafExclusionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "exclusion_filter_id", + "tool_parameter_name": "waf_exclusion_filter_id", + "description": "The identifier of the WAF exclusion filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the WAF exclusion filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkflowById.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkflowById.json new file mode 100644 index 00000000..94f9fe78 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkflowById.json @@ -0,0 +1,126 @@ +{ + "name": "GetWorkflowById", + "fully_qualified_name": "DatadogApi.GetWorkflowById@0.1.0", + "description": "Retrieve workflow details using a unique ID.\n\nUse this tool to get detailed information about a specific workflow by providing its unique ID. This is useful for tracking and managing workflows within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_identifier", + "required": true, + "description": "The unique ID of the workflow to retrieve details for within Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "inferrable": true, + "http_endpoint_parameter_name": "workflow_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetWorkflow'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows/{workflow_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "workflow_id", + "tool_parameter_name": "workflow_identifier", + "description": "The ID of the workflow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkflowInstance.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkflowInstance.json new file mode 100644 index 00000000..ff2b53f2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkflowInstance.json @@ -0,0 +1,159 @@ +{ + "name": "GetWorkflowInstance", + "fully_qualified_name": "DatadogApi.GetWorkflowInstance@0.1.0", + "description": "Retrieve a specific workflow execution instance.\n\nFetches details of a specific execution for a given Datadog workflow. Requires proper application key registration or permissions setup.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_id", + "required": true, + "description": "The unique identifier of the workflow to retrieve its specific execution details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "inferrable": true, + "http_endpoint_parameter_name": "workflow_id" + }, + { + "name": "workflow_instance_id", + "required": true, + "description": "The ID of the specific workflow instance to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow instance." + }, + "inferrable": true, + "http_endpoint_parameter_name": "instance_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetWorkflowInstance'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances/{instance_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "workflow_id", + "tool_parameter_name": "workflow_id", + "description": "The ID of the workflow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "instance_id", + "tool_parameter_name": "workflow_instance_id", + "description": "The ID of the workflow instance.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow instance." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkloadProtectionPolicyDetails.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkloadProtectionPolicyDetails.json new file mode 100644 index 00000000..77a48036 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/GetWorkloadProtectionPolicyDetails.json @@ -0,0 +1,126 @@ +{ + "name": "GetWorkloadProtectionPolicyDetails", + "fully_qualified_name": "DatadogApi.GetWorkloadProtectionPolicyDetails@0.1.0", + "description": "Get details of a specific Workload Protection policy.\n\nFetches information about a specific Workload Protection policy from Datadog. Note that this endpoint is not available for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_policy_id", + "required": true, + "description": "The unique ID of the Workload Protection Agent policy to retrieve details for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetCSMThreatsAgentPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/{policy_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "agent_policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListActiveMetricConfigurations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListActiveMetricConfigurations.json new file mode 100644 index 00000000..22c9efde --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListActiveMetricConfigurations.json @@ -0,0 +1,159 @@ +{ + "name": "ListActiveMetricConfigurations", + "fully_qualified_name": "DatadogApi.ListActiveMetricConfigurations@0.1.0", + "description": "Retrieve active metric tags and aggregations for a given metric name.\n\nUse this tool to get the currently active tags and aggregations for dashboards, monitors, and APIs associated with a specified metric name. It helps to understand how metrics are being actively used across various platforms.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "Specify the name of the metric to retrieve active tags and aggregations for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + }, + { + "name": "lookback_seconds", + "required": false, + "description": "Number of seconds to look back from the current time. Defaults to 604800 seconds (1 week). Minimum is 7200 seconds (2 hours), and maximum is 2630000 seconds (1 month).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of seconds of look back (from now).\nDefault value is 604,800 (1 week), minimum value is 7200 (2 hours), maximum value is 2,630,000 (1 month)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "window[seconds]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListActiveMetricConfigurations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/active-configurations", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "window[seconds]", + "tool_parameter_name": "lookback_seconds", + "description": "The number of seconds of look back (from now).\nDefault value is 604,800 (1 week), minimum value is 7200 (2 hours), maximum value is 2,630,000 (1 month).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of seconds of look back (from now).\nDefault value is 604,800 (1 week), minimum value is 7200 (2 hours), maximum value is 2,630,000 (1 month)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllContainers.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllContainers.json new file mode 100644 index 00000000..30dbac61 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllContainers.json @@ -0,0 +1,258 @@ +{ + "name": "ListAllContainers", + "fully_qualified_name": "DatadogApi.ListAllContainers@0.1.0", + "description": "Retrieve all containers within your organization.\n\nUse this tool to get a comprehensive list of all containers managed by your organization in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "filter_by_tags", + "required": false, + "description": "Comma-separated list of tags to filter containers by, narrowing down the results based on specified tags.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter containers by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[tags]" + }, + { + "name": "group_containers_by_tags", + "required": false, + "description": "Comma-separated list of tags to group containers by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to group containers by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "group_by" + }, + { + "name": "container_sort_attribute", + "required": false, + "description": "Specify the attribute to sort containers by. Common values include 'name', 'creation_date', etc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attribute to sort containers by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "maximum_results_returned", + "required": false, + "description": "Maximum number of container results to return per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "A string to query the next page of container results, using the `meta.pagination.next_cursor` from the API response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListContainers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/containers", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[tags]", + "tool_parameter_name": "filter_by_tags", + "description": "Comma-separated list of tags to filter containers by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter containers by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "group_by", + "tool_parameter_name": "group_containers_by_tags", + "description": "Comma-separated list of tags to group containers by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to group containers by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "container_sort_attribute", + "description": "Attribute to sort containers by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attribute to sort containers by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[size]", + "tool_parameter_name": "maximum_results_returned", + "description": "Maximum number of results returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1000, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllCsmAgents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllCsmAgents.json new file mode 100644 index 00000000..f1d4a6df --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllCsmAgents.json @@ -0,0 +1,231 @@ +{ + "name": "ListAllCsmAgents", + "fully_qualified_name": "DatadogApi.ListAllCsmAgents@0.1.0", + "description": "Retrieve all CSM Agents running on your infrastructure.\n\nUse this tool to get a comprehensive list of all Customer Service Management (CSM) Agents currently operational on your hosts and containers. This can be useful for monitoring and managing your service agents.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "pagination_page_index", + "required": false, + "description": "The zero-based index of the page to retrieve for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page index for pagination (zero-based)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "page_size", + "required": false, + "description": "Specify the number of items to include in a single page for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of items to include in a single page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "size" + }, + { + "name": "filter_query", + "required": false, + "description": "A search query string to filter results, e.g., `hostname:COMP-T2H4J27423`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A search query string to filter results (for example, `hostname:COMP-T2H4J27423`)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "query" + }, + { + "name": "results_sort_direction", + "required": false, + "description": "Sets sort order for results. Use 'asc' for ascending or 'desc' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The sort direction for results. Use `asc` for ascending or `desc` for descending." + }, + "inferrable": true, + "http_endpoint_parameter_name": "order_direction" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListAllCSMAgents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/csm/onboarding/agents", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page", + "tool_parameter_name": "pagination_page_index", + "description": "The page index for pagination (zero-based).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page index for pagination (zero-based)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "size", + "tool_parameter_name": "page_size", + "description": "The number of items to include in a single page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of items to include in a single page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "query", + "tool_parameter_name": "filter_query", + "description": "A search query string to filter results (for example, `hostname:COMP-T2H4J27423`).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A search query string to filter results (for example, `hostname:COMP-T2H4J27423`)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "order_direction", + "tool_parameter_name": "results_sort_direction", + "description": "The sort direction for results. Use `asc` for ascending or `desc` for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The sort direction for results. Use `asc` for ascending or `desc` for descending." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllMemberTeams.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllMemberTeams.json new file mode 100644 index 00000000..9e27993a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllMemberTeams.json @@ -0,0 +1,225 @@ +{ + "name": "ListAllMemberTeams", + "fully_qualified_name": "DatadogApi.ListAllMemberTeams@0.1.0", + "description": "Retrieve all member teams for a super team.\n\nUse this tool to get a comprehensive list of all member teams associated with a specific super team in Datadog. Call this tool when you need information on team memberships within a specified structure.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "super_team_identifier", + "required": true, + "description": "The unique identifier for the super team whose member teams you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "super_team_id" + }, + { + "name": "page_size", + "required": false, + "description": "Size for a given page. Must be an integer up to 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "Specific page number to return in the list of teams.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "fields_to_fetch", + "required": false, + "description": "A list of field names to be fetched for each team. Specify the fields you need details on.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of fields that need to be fetched." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fields[team]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListMemberTeams'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{super_team_id}/member_teams", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "fields[team]", + "tool_parameter_name": "fields_to_fetch", + "description": "List of fields that need to be fetched.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of fields that need to be fetched." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "super_team_id", + "tool_parameter_name": "super_team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllOrganizationProcesses.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllOrganizationProcesses.json new file mode 100644 index 00000000..f69fc05d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllOrganizationProcesses.json @@ -0,0 +1,291 @@ +{ + "name": "ListAllOrganizationProcesses", + "fully_qualified_name": "DatadogApi.ListAllOrganizationProcesses@0.1.0", + "description": "Retrieve all processes for your organization from Datadog.\n\nThis tool is used to fetch a list of all processes associated with your organization in Datadog. It should be called when you need detailed information about the processes running across your organization's systems.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "search_string_for_processes", + "required": false, + "description": "String used to search and filter processes by specific criteria.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to search processes by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "search" + }, + { + "name": "filter_by_tags", + "required": false, + "description": "A comma-separated list of tags to filter the processes by. Use specific tags relevant to your organization's processes for targeted results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter processes by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tags" + }, + { + "name": "query_window_start_timestamp", + "required": false, + "description": "Unix timestamp marking the start of the query window. Defaults to 15 minutes before the end of the window if not provided.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window.\nIf not provided, the start of the query window will be 15 minutes before the `to` timestamp. If neither\n`from` nor `to` are provided, the query window will be `[now - 15m, now]`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "from" + }, + { + "name": "query_window_end_timestamp", + "required": false, + "description": "Unix timestamp (seconds since epoch) marking the end of the query window. Defaults to 15 minutes after 'from' if not provided. If 'from' and 'to' are omitted, defaults to 15 minutes from current time.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window.\nIf not provided, the end of the query window will be 15 minutes after the `from` timestamp. If neither\n`from` nor `to` are provided, the query window will be `[now - 15m, now]`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "to" + }, + { + "name": "max_results_per_page", + "required": false, + "description": "Maximum number of process results to return in one page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "String token to retrieve the next page of process results. Use the value from `meta.page.after` provided in the previous API response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.page.after`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListProcesses'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/processes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "search", + "tool_parameter_name": "search_string_for_processes", + "description": "String to search processes by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to search processes by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "tags", + "tool_parameter_name": "filter_by_tags", + "description": "Comma-separated list of tags to filter processes by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter processes by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "from", + "tool_parameter_name": "query_window_start_timestamp", + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window.\nIf not provided, the start of the query window will be 15 minutes before the `to` timestamp. If neither\n`from` nor `to` are provided, the query window will be `[now - 15m, now]`.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the start of the query window.\nIf not provided, the start of the query window will be 15 minutes before the `to` timestamp. If neither\n`from` nor `to` are provided, the query window will be `[now - 15m, now]`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "to", + "tool_parameter_name": "query_window_end_timestamp", + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window.\nIf not provided, the end of the query window will be 15 minutes after the `from` timestamp. If neither\n`from` nor `to` are provided, the query window will be `[now - 15m, now]`.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unix timestamp (number of seconds since epoch) of the end of the query window.\nIf not provided, the end of the query window will be 15 minutes after the `from` timestamp. If neither\n`from` nor `to` are provided, the query window will be `[now - 15m, now]`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_results_per_page", + "description": "Maximum number of results returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1000, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.page.after`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.page.after`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllOrganizationUsers.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllOrganizationUsers.json new file mode 100644 index 00000000..44bbb523 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAllOrganizationUsers.json @@ -0,0 +1,297 @@ +{ + "name": "ListAllOrganizationUsers", + "fully_qualified_name": "DatadogApi.ListAllOrganizationUsers@0.1.0", + "description": "Retrieve all users in the organization including inactive ones.\n\nUse this tool to get a complete list of users within the organization, covering active, deactivated, and unverified accounts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Specifies the number of users to be returned in a single page. The maximum value allowed is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number of users to return. Use for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "order_users_by", + "required": false, + "description": "Specify the user attribute to order results by. Options include `name`, `modified_at`, and `user_count`. Use a negative sign for descending order, e.g., `-name`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "User attribute to order results by. Sort order is ascending by default.\nSort order is descending if the field\nis prefixed by a negative sign, for example `sort=-name`. Options: `name`,\n`modified_at`, `user_count`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "sort_direction", + "required": false, + "description": "Direction of sort for user listing. Options: 'asc' for ascending, 'desc' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "Direction of sort. Options: `asc`, `desc`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort_dir" + }, + { + "name": "user_filter_string", + "required": false, + "description": "String to filter users by. Defaults to no filtering if blank or omitted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all users by the given string. Defaults to no filtering." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "user_status_filter", + "required": false, + "description": "Filter users by status. Comma separated values: `Active`, `Pending`, `Disabled`. Defaults to no filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter on status attribute.\nComma separated list, with possible values `Active`, `Pending`, and `Disabled`.\nDefaults to no filtering." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[status]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListUsers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "order_users_by", + "description": "User attribute to order results by. Sort order is ascending by default.\nSort order is descending if the field\nis prefixed by a negative sign, for example `sort=-name`. Options: `name`,\n`modified_at`, `user_count`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "User attribute to order results by. Sort order is ascending by default.\nSort order is descending if the field\nis prefixed by a negative sign, for example `sort=-name`. Options: `name`,\n`modified_at`, `user_count`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "name", + "documentation_urls": [] + }, + { + "name": "sort_dir", + "tool_parameter_name": "sort_direction", + "description": "Direction of sort. Options: `asc`, `desc`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "Direction of sort. Options: `asc`, `desc`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "desc", + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "user_filter_string", + "description": "Filter all users by the given string. Defaults to no filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all users by the given string. Defaults to no filtering." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[status]", + "tool_parameter_name": "user_status_filter", + "description": "Filter on status attribute.\nComma separated list, with possible values `Active`, `Pending`, and `Disabled`.\nDefaults to no filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter on status attribute.\nComma separated list, with possible values `Active`, `Pending`, and `Disabled`.\nDefaults to no filtering." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApiKeys.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApiKeys.json new file mode 100644 index 00000000..83cc45b9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApiKeys.json @@ -0,0 +1,474 @@ +{ + "name": "ListApiKeys", + "fully_qualified_name": "DatadogApi.ListApiKeys@0.1.0", + "description": "Retrieve all API keys for your Datadog account.\n\nUse this tool to fetch a list of all API keys associated with your Datadog account. It is useful for managing or auditing your API key usage.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Specifies the number of API keys returned in a single page; maximum value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "specific_page_number_to_return", + "required": false, + "description": "The specific page number to return from the paginated list of API keys.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_by_attribute", + "required": false, + "description": "Attribute to sort API keys by. Use a minus sign for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "modified_at", + "-modified_at", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "API key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "api_key_filter", + "required": false, + "description": "String to filter API keys by specified criteria. Use it to narrow down the list based on specific string matches.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter API keys by the specified string." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "created_after_date_filter", + "required": false, + "description": "Include API keys created on or after this date. Expected format: YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys created on or after the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][start]" + }, + { + "name": "filter_created_before_date", + "required": false, + "description": "Include only API keys created on or before this date in the format YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys created on or before the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][end]" + }, + { + "name": "modified_after_date_filter", + "required": false, + "description": "Specify a date to include API keys modified on or after this date. Use YYYY-MM-DD format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys modified on or after the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[modified_at][start]" + }, + { + "name": "modified_before_date", + "required": false, + "description": "Include API keys modified on or before this specified date. Format should be YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys modified on or before the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[modified_at][end]" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Comma-separated list of resource paths (`created_by`, `modified_by`) to include related data in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "filter_api_keys_by_category", + "required": false, + "description": "Filter API keys by the specified category.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter API keys by category." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[category]" + }, + { + "name": "filter_by_remote_config_read_enabled", + "required": false, + "description": "Set to true to filter API keys with remote config read enabled; false otherwise.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter API keys by remote config read enabled status." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[remote_config_read_enabled]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListAPIKeys'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/api_keys", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "specific_page_number_to_return", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_by_attribute", + "description": "API key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "modified_at", + "-modified_at", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "API key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "name", + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "api_key_filter", + "description": "Filter API keys by the specified string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter API keys by the specified string." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][start]", + "tool_parameter_name": "created_after_date_filter", + "description": "Only include API keys created on or after the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys created on or after the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][end]", + "tool_parameter_name": "filter_created_before_date", + "description": "Only include API keys created on or before the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys created on or before the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[modified_at][start]", + "tool_parameter_name": "modified_after_date_filter", + "description": "Only include API keys modified on or after the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys modified on or after the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[modified_at][end]", + "tool_parameter_name": "modified_before_date", + "description": "Only include API keys modified on or before the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include API keys modified on or before the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma separated list of resource paths for related resources to include in the response. Supported resource paths are `created_by` and `modified_by`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[remote_config_read_enabled]", + "tool_parameter_name": "filter_by_remote_config_read_enabled", + "description": "Filter API keys by remote config read enabled status.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter API keys by remote config read enabled status." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[category]", + "tool_parameter_name": "filter_api_keys_by_category", + "description": "Filter API keys by category.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter API keys by category." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAppKeyRegistrations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAppKeyRegistrations.json new file mode 100644 index 00000000..b6a4c14e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAppKeyRegistrations.json @@ -0,0 +1,159 @@ +{ + "name": "ListAppKeyRegistrations", + "fully_qualified_name": "DatadogApi.ListAppKeyRegistrations@0.1.0", + "description": "Retrieve a list of app key registrations from Datadog.\n\nUse this tool to get a detailed list of all app key registrations available in your Datadog account. Ideal for managing and auditing app key usage.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "results_per_page", + "required": false, + "description": "The number of App Key Registrations to return per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of App Key Registrations to return per page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The page number to return for paginating through app key registrations.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListAppKeyRegistrations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/app_key_registrations", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "results_per_page", + "description": "The number of App Key Registrations to return per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of App Key Registrations to return per page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "The page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApplicationKeys.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApplicationKeys.json new file mode 100644 index 00000000..f1c01210 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApplicationKeys.json @@ -0,0 +1,338 @@ +{ + "name": "ListApplicationKeys", + "fully_qualified_name": "DatadogApi.ListApplicationKeys@0.1.0", + "description": "Retrieve all application keys for your organization.\n\nThis tool calls the Datadog API to list all application keys available for your organization, allowing you to view and manage your organization's credentials.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Specify the number of application keys to return per page. Maximum is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to return in the results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_keys_by_attribute", + "required": false, + "description": "Sort application keys by attribute such as 'created_at', 'name', or 'last4'. Use a minus sign for descending order, e.g., '-name'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_application_keys", + "required": false, + "description": "Filter the application keys based on a specified string to narrow down the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter application keys by the specified string." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "created_after_date", + "required": false, + "description": "Include application keys created on or after this date (YYYY-MM-DD).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or after the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][start]" + }, + { + "name": "created_before_date", + "required": false, + "description": "Filters application keys created on or before this date. Expected format is YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or before the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][end]" + }, + { + "name": "include_related_resource", + "required": false, + "description": "Specify 'owned_by' to include related resource information in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListApplicationKeys'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/application_keys", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_keys_by_attribute", + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "name", + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "filter_application_keys", + "description": "Filter application keys by the specified string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter application keys by the specified string." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][start]", + "tool_parameter_name": "created_after_date", + "description": "Only include application keys created on or after the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or after the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][end]", + "tool_parameter_name": "created_before_date", + "description": "Only include application keys created on or before the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or before the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_related_resource", + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApps.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApps.json new file mode 100644 index 00000000..6269b496 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListApps.json @@ -0,0 +1,456 @@ +{ + "name": "ListApps", + "fully_qualified_name": "DatadogApi.ListApps@0.1.0", + "description": "Retrieve a list of all apps with optional filters and sorting.\n\nThis tool calls the Datadog API to list all registered apps. It supports filtering and sorting options and provides basic information such as app ID, name, and description. Useful for managing and viewing app information through automation.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "The number of apps to return per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of apps to return per page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "page_number", + "required": false, + "description": "The page number to return for paginated results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "filter_by_creator_email", + "required": false, + "description": "Filter apps by the creator's email address. This is used to narrow down apps created by a specific user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by the app creator. Usually the user's email." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[user_name]" + }, + { + "name": "filter_by_creator_uuid", + "required": false, + "description": "Filter apps by the app creator's UUID. Provide the UUID of the user who created the app to narrow down the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by the app creator's UUID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[user_uuid]" + }, + { + "name": "filter_by_app_name", + "required": false, + "description": "Filter the list of apps by specifying the app name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by app name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[name]" + }, + { + "name": "filter_by_query", + "required": false, + "description": "Filter apps by the app name or the app creator's name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by the app name or the app creator." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "filter_by_tags", + "required": false, + "description": "Filter apps by specifying tags. Separate multiple tags with commas.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by tags." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[tags]" + }, + { + "name": "sort_fields_and_directions", + "required": false, + "description": "An array specifying the fields and directions (e.g., 'name:asc', 'created_at:desc') to sort apps by.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The fields and direction to sort apps by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "include_published_apps", + "required": false, + "description": "Set to true to include only published apps, false to exclude them.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by whether they are published." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[deployed]" + }, + { + "name": "show_only_favorite_apps", + "required": false, + "description": "Set to true to filter and show only apps that you have marked as favorites.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by whether you have added them to your favorites." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[favorite]" + }, + { + "name": "filter_self_service_enabled", + "required": false, + "description": "Filter apps by self-service enablement. True for enabled, false otherwise.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by whether they are enabled for self-service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[self_service]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListApps'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "page_size", + "description": "The number of apps to return per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of apps to return per page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page", + "tool_parameter_name": "page_number", + "description": "The page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[user_name]", + "tool_parameter_name": "filter_by_creator_email", + "description": "Filter apps by the app creator. Usually the user's email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by the app creator. Usually the user's email." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[user_uuid]", + "tool_parameter_name": "filter_by_creator_uuid", + "description": "Filter apps by the app creator's UUID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by the app creator's UUID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[name]", + "tool_parameter_name": "filter_by_app_name", + "description": "Filter by app name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by app name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[query]", + "tool_parameter_name": "filter_by_query", + "description": "Filter apps by the app name or the app creator.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by the app name or the app creator." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[deployed]", + "tool_parameter_name": "include_published_apps", + "description": "Filter apps by whether they are published.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by whether they are published." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[tags]", + "tool_parameter_name": "filter_by_tags", + "description": "Filter apps by tags.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by tags." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[favorite]", + "tool_parameter_name": "show_only_favorite_apps", + "description": "Filter apps by whether you have added them to your favorites.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by whether you have added them to your favorites." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[self_service]", + "tool_parameter_name": "filter_self_service_enabled", + "description": "Filter apps by whether they are enabled for self-service.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter apps by whether they are enabled for self-service." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_fields_and_directions", + "description": "The fields and direction to sort apps by.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The fields and direction to sort apps by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAuthnMappings.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAuthnMappings.json new file mode 100644 index 00000000..262e5eaa --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAuthnMappings.json @@ -0,0 +1,290 @@ +{ + "name": "ListAuthnMappings", + "fully_qualified_name": "DatadogApi.ListAuthnMappings@0.1.0", + "description": "Retrieve all AuthN Mappings in the organization.\n\nUse this tool to obtain a comprehensive list of all authentication mappings within your organization using Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Number of results per page, with a maximum value of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return from the list of AuthN Mappings.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_authn_mappings_by", + "required": false, + "description": "Sort AuthN Mappings by the specified field. Options include fields like created_at, role_id, saml_assertion_attribute_id, etc. Prefix with '-' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "role_id", + "-role_id", + "saml_assertion_attribute_id", + "-saml_assertion_attribute_id", + "role.name", + "-role.name", + "saml_assertion_attribute.attribute_key", + "-saml_assertion_attribute.attribute_key", + "saml_assertion_attribute.attribute_value", + "-saml_assertion_attribute.attribute_value" + ], + "properties": null, + "inner_properties": null, + "description": "Sort AuthN Mappings depending on the given field." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_authn_mappings", + "required": false, + "description": "Filter all authentication mappings using a specific string to refine the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all mappings by the given string." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "filter_by_resource_type", + "required": false, + "description": "Filter results by mapping resource type. Can be 'role' or 'team'. Defaults to 'role'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "role", + "team" + ], + "properties": null, + "inner_properties": null, + "description": "Filter by mapping resource type. Defaults to \"role\" if not specified." + }, + "inferrable": true, + "http_endpoint_parameter_name": "resource_type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListAuthNMappings'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/authn_mappings", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_authn_mappings_by", + "description": "Sort AuthN Mappings depending on the given field.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "role_id", + "-role_id", + "saml_assertion_attribute_id", + "-saml_assertion_attribute_id", + "role.name", + "-role.name", + "saml_assertion_attribute.attribute_key", + "-saml_assertion_attribute.attribute_key", + "saml_assertion_attribute.attribute_value", + "-saml_assertion_attribute.attribute_value" + ], + "properties": null, + "inner_properties": null, + "description": "Sort AuthN Mappings depending on the given field." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "filter_authn_mappings", + "description": "Filter all mappings by the given string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all mappings by the given string." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resource_type", + "tool_parameter_name": "filter_by_resource_type", + "description": "Filter by mapping resource type. Defaults to \"role\" if not specified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "role", + "team" + ], + "properties": null, + "inner_properties": null, + "description": "Filter by mapping resource type. Defaults to \"role\" if not specified." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsAccounts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsAccounts.json new file mode 100644 index 00000000..cad9a761 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsAccounts.json @@ -0,0 +1,126 @@ +{ + "name": "ListAwsAccounts", + "fully_qualified_name": "DatadogApi.ListAwsAccounts@0.1.0", + "description": "Retrieve AWS account integration configurations.\n\nGet a comprehensive list of AWS account integration configurations from Datadog. Useful for managing and reviewing AWS account integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "filter_by_aws_account_id", + "required": false, + "description": "Optional parameter to filter AWS accounts by their ID. Provide a specific AWS Account ID to get its integration config. If omitted, configurations for all accounts are returned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional query parameter to filter accounts by AWS Account ID. If not provided, all accounts are returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "aws_account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListAWSAccounts'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/accounts", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "aws_account_id", + "tool_parameter_name": "filter_by_aws_account_id", + "description": "Optional query parameter to filter accounts by AWS Account ID. If not provided, all accounts are returned.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional query parameter to filter accounts by AWS Account ID. If not provided, all accounts are returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsCurConfigs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsCurConfigs.json new file mode 100644 index 00000000..91be43e7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsCurConfigs.json @@ -0,0 +1,91 @@ +{ + "name": "ListAwsCurConfigs", + "fully_qualified_name": "DatadogApi.ListAwsCurConfigs@0.1.0", + "description": "Retrieve AWS CUR configuration list from Datadog.\n\nCall this tool to get a list of AWS Cost and Usage Report (CUR) configurations in Datadog when you need to examine or manage AWS cost data integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListCostAWSCURConfigs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/aws_cur_config", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsLogsServices.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsLogsServices.json new file mode 100644 index 00000000..949327ef --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAwsLogsServices.json @@ -0,0 +1,91 @@ +{ + "name": "ListAwsLogsServices", + "fully_qualified_name": "DatadogApi.ListAwsLogsServices@0.1.0", + "description": "Retrieve AWS services for logging to Datadog.\n\nUse this tool to obtain a list of AWS services that have the capability to send log data to Datadog. This can help in configuring and troubleshooting integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListAWSLogsServices'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/logs/services", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAzureConfigs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAzureConfigs.json new file mode 100644 index 00000000..cdaa17db --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListAzureConfigs.json @@ -0,0 +1,91 @@ +{ + "name": "ListAzureConfigs", + "fully_qualified_name": "DatadogApi.ListAzureConfigs@0.1.0", + "description": "Retrieve Azure configuration list from Datadog.\n\nUse this tool to obtain a list of Azure configs from Datadog. Useful for viewing or managing current Azure configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListCostAzureUCConfigs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/azure_uc_config", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListBudgets.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListBudgets.json new file mode 100644 index 00000000..99cf1fbc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListBudgets.json @@ -0,0 +1,91 @@ +{ + "name": "ListBudgets", + "fully_qualified_name": "DatadogApi.ListBudgets@0.1.0", + "description": "Fetch a list of budgets from Datadog.\n\nUse this tool to retrieve the list of budgets set up in Datadog, including their details and configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListBudgets'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/budgets", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCatalogEntityRelations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCatalogEntityRelations.json new file mode 100644 index 00000000..11e63f6c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCatalogEntityRelations.json @@ -0,0 +1,319 @@ +{ + "name": "ListCatalogEntityRelations", + "fully_qualified_name": "DatadogApi.ListCatalogEntityRelations@0.1.0", + "description": "Retrieve entity relations from the software catalog.\n\nThis tool retrieves a list of entity relations from the Datadog Software Catalog. It's useful for understanding connections and dependencies between different software entities.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_offset", + "required": false, + "description": "The starting offset for the returned page of results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "maximum_relations_per_page", + "required": false, + "description": "Maximum number of relations to include in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of relations in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "relation_type_filter", + "required": false, + "description": "Filter relations by type using predefined relation types such as 'RelationTypeOwns', 'RelationTypeDependsOn', etc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RelationTypeOwns", + "RelationTypeOwnedBy", + "RelationTypeDependsOn", + "RelationTypeDependencyOf", + "RelationTypePartsOf", + "RelationTypeHasPart", + "RelationTypeOtherOwns", + "RelationTypeOtherOwnedBy", + "RelationTypeImplementedBy", + "RelationTypeImplements" + ], + "properties": null, + "inner_properties": null, + "description": "Filter relations by type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[type]" + }, + { + "name": "filter_by_first_entity_reference", + "required": false, + "description": "Filter relations by the reference of the first entity in the relation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter relations by the reference of the first entity in the relation." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from_ref]" + }, + { + "name": "filter_relations_by_second_entity_reference", + "required": false, + "description": "Filter relations by the reference of the second entity in the relation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter relations by the reference of the second entity in the relation." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to_ref]" + }, + { + "name": "include_relationship_data", + "required": false, + "description": "Specify which relationship data to include: 'entity' or 'schema'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "entity", + "schema" + ], + "properties": null, + "inner_properties": null, + "description": "Include relationship data." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCatalogRelation'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/catalog/relation", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "maximum_relations_per_page", + "description": "Maximum number of relations in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of relations in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 100, + "documentation_urls": [] + }, + { + "name": "filter[type]", + "tool_parameter_name": "relation_type_filter", + "description": "Filter relations by type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RelationTypeOwns", + "RelationTypeOwnedBy", + "RelationTypeDependsOn", + "RelationTypeDependencyOf", + "RelationTypePartsOf", + "RelationTypeHasPart", + "RelationTypeOtherOwns", + "RelationTypeOtherOwnedBy", + "RelationTypeImplementedBy", + "RelationTypeImplements" + ], + "properties": null, + "inner_properties": null, + "description": "Filter relations by type." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from_ref]", + "tool_parameter_name": "filter_by_first_entity_reference", + "description": "Filter relations by the reference of the first entity in the relation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter relations by the reference of the first entity in the relation." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to_ref]", + "tool_parameter_name": "filter_relations_by_second_entity_reference", + "description": "Filter relations by the reference of the second entity in the relation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter relations by the reference of the second entity in the relation." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_relationship_data", + "description": "Include relationship data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "entity", + "schema" + ], + "properties": null, + "inner_properties": null, + "description": "Include relationship data." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCatalogKinds.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCatalogKinds.json new file mode 100644 index 00000000..91739043 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCatalogKinds.json @@ -0,0 +1,225 @@ +{ + "name": "ListCatalogKinds", + "fully_qualified_name": "DatadogApi.ListCatalogKinds@0.1.0", + "description": "Retrieve entity kinds from the Software Catalog.\n\nThis tool calls the Datadog API to retrieve a list of entity kinds from the Software Catalog. It should be used when you need information about the types of entities available in the catalog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_offset", + "required": false, + "description": "Specific offset to use as the beginning of the returned page. It determines where the data will start from in the list.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "max_kinds_in_response", + "required": false, + "description": "Specify the maximum number of entity kinds to be returned in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of kinds in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "filter_uuid", + "required": false, + "description": "Filter entities by their UUID in the catalog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by UUID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[id]" + }, + { + "name": "filter_entity_name", + "required": false, + "description": "Filter entities in the Software Catalog by their name using a string value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[name]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCatalogKind'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/catalog/kind", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_kinds_in_response", + "description": "Maximum number of kinds in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of kinds in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 100, + "documentation_urls": [] + }, + { + "name": "filter[id]", + "tool_parameter_name": "filter_uuid", + "description": "Filter entities by UUID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by UUID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[name]", + "tool_parameter_name": "filter_entity_name", + "description": "Filter entities by name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCiPipelineEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCiPipelineEvents.json new file mode 100644 index 00000000..519b9aa9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCiPipelineEvents.json @@ -0,0 +1,297 @@ +{ + "name": "ListCiPipelineEvents", + "fully_qualified_name": "DatadogApi.ListCiPipelineEvents@0.1.0", + "description": "Retrieve CI pipeline events based on a search query.\n\nUse this tool to get a list of continuous integration pipeline events from Datadog that match a specified search query. Results are paginated and similar to how logs are handled, providing insight into your latest pipeline activities.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "search_query", + "required": false, + "description": "A search query using Datadog's log syntax to filter CI pipeline events. Specify criteria to refine results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following log syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "min_timestamp", + "required": false, + "description": "Specify the earliest time for the events you want to retrieve. Use a timestamp string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "maximum_timestamp", + "required": false, + "description": "Specify the maximum timestamp for the requested events. Format as an ISO 8601 string (e.g., 2023-10-01T00:00:00Z).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "event_order", + "required": false, + "description": "Specifies the order of CI pipeline events in the results. Use 'timestamp' for ascending and '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "cursor_for_next_page", + "required": false, + "description": "Cursor to paginate through results. Use the cursor from the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "max_events_response", + "required": false, + "description": "Specify the maximum number of events to include in the response. Accepts an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCIAppPipelineEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ci/pipelines/events", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "search_query", + "description": "Search query following log syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following log syntax." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "min_timestamp", + "description": "Minimum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "maximum_timestamp", + "description": "Maximum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "event_order", + "description": "Order of events in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "cursor_for_next_page", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_events_response", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCiTestEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCiTestEvents.json new file mode 100644 index 00000000..489a723c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCiTestEvents.json @@ -0,0 +1,297 @@ +{ + "name": "ListCiTestEvents", + "fully_qualified_name": "DatadogApi.ListCiTestEvents@0.1.0", + "description": "Retrieve CI test events based on a search query.\n\nUse this tool to obtain CI Visibility test events from Datadog that match a specified search query. The results are paginated in a manner similar to logs. This can help in reviewing and analyzing the latest test events.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "search_query", + "required": false, + "description": "Search query using log syntax to filter CI Visibility test events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following log syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "minimum_timestamp", + "required": false, + "description": "The minimum timestamp to filter requested events. Format is typically ISO 8601.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "max_timestamp", + "required": false, + "description": "Specify the maximum timestamp for the requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify the order of events by using 'timestamp' for ascending or '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for fetching the next set of paginated results, provided by the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "max_events_in_response", + "required": false, + "description": "Specify the maximum number of CI test events to return in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCIAppTestEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ci/tests/events", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "search_query", + "description": "Search query following log syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following log syntax." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp", + "description": "Minimum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "max_timestamp", + "description": "Maximum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Order of events in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_events_in_response", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCloudWorkloadSecurityAgentRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCloudWorkloadSecurityAgentRules.json new file mode 100644 index 00000000..79ce49d7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCloudWorkloadSecurityAgentRules.json @@ -0,0 +1,91 @@ +{ + "name": "ListCloudWorkloadSecurityAgentRules", + "fully_qualified_name": "DatadogApi.ListCloudWorkloadSecurityAgentRules@0.1.0", + "description": "Retrieve the list of cloud workload security agent rules.\n\nUse this tool to get a list of agent rules specifically for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListCloudWorkloadSecurityAgentRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCloudflareAccounts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCloudflareAccounts.json new file mode 100644 index 00000000..95342bc5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCloudflareAccounts.json @@ -0,0 +1,91 @@ +{ + "name": "ListCloudflareAccounts", + "fully_qualified_name": "DatadogApi.ListCloudflareAccounts@0.1.0", + "description": "Retrieve a list of Cloudflare accounts from Datadog.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListCloudflareAccounts'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListConfluentAccounts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListConfluentAccounts.json new file mode 100644 index 00000000..ef8089a7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListConfluentAccounts.json @@ -0,0 +1,91 @@ +{ + "name": "ListConfluentAccounts", + "fully_qualified_name": "DatadogApi.ListConfluentAccounts@0.1.0", + "description": "Retrieve a list of Confluent accounts.\n\nUse this tool to get a list of Confluent accounts that are integrated with Datadog. It helps in managing and monitoring Confluent Cloud integrations efficiently.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListConfluentAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListContainerImages.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListContainerImages.json new file mode 100644 index 00000000..3c264109 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListContainerImages.json @@ -0,0 +1,258 @@ +{ + "name": "ListContainerImages", + "fully_qualified_name": "DatadogApi.ListContainerImages@0.1.0", + "description": "Retrieve all container images for your organization.\n\nUse this tool to get a list of all container images associated with your organization. This is useful for monitoring and managing your containerized applications within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "filter_tags", + "required": false, + "description": "Comma-separated list of tags to filter container images by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter Container Images by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[tags]" + }, + { + "name": "group_container_images_by_tags", + "required": false, + "description": "Comma-separated list of tags to group container images by. Helps in organizing images based on specified criteria.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to group Container Images by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "group_by" + }, + { + "name": "sort_container_images_by", + "required": false, + "description": "Attribute to sort Container Images by, such as 'name' or 'date'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attribute to sort Container Images by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "max_results_per_page", + "required": false, + "description": "The maximum number of container image results to return per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "next_page_cursor", + "required": false, + "description": "String to query the next page of container image results. Obtain this from the `meta.pagination.next_cursor` in the API response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListContainerImages'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/container_images", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[tags]", + "tool_parameter_name": "filter_tags", + "description": "Comma-separated list of tags to filter Container Images by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to filter Container Images by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "group_by", + "tool_parameter_name": "group_container_images_by_tags", + "description": "Comma-separated list of tags to group Container Images by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of tags to group Container Images by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_container_images_by", + "description": "Attribute to sort Container Images by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attribute to sort Container Images by." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[size]", + "tool_parameter_name": "max_results_per_page", + "description": "Maximum number of results returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 1000, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "next_page_cursor", + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomAllocationRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomAllocationRules.json new file mode 100644 index 00000000..0dbc07ca --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomAllocationRules.json @@ -0,0 +1,91 @@ +{ + "name": "ListCustomAllocationRules", + "fully_qualified_name": "DatadogApi.ListCustomAllocationRules@0.1.0", + "description": "Retrieve all custom allocation rules for the organization.\n\nUse this tool to obtain a list of all custom allocation rules defined in the organization. It provides details about how costs are allocated according to custom rules in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListCustomAllocationRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/arbitrary_rule", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomCostsFiles.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomCostsFiles.json new file mode 100644 index 00000000..d7b7edb1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomCostsFiles.json @@ -0,0 +1,225 @@ +{ + "name": "ListCustomCostsFiles", + "fully_qualified_name": "DatadogApi.ListCustomCostsFiles@0.1.0", + "description": "Retrieve a list of custom costs files from Datadog.\n\nUse this tool to access and list custom costs files stored in Datadog. It is useful when you need to audit or analyze custom cost data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_number", + "required": false, + "description": "The page number to retrieve for pagination in the list of custom costs files.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination" + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "pagination_page_size", + "required": false, + "description": "The number of custom cost files to return per page for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page size for pagination" + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "filter_by_file_status", + "required": false, + "description": "Filter the custom costs files by their status. Accepts a string value representing the status to filter by, such as 'active', 'inactive', or 'pending'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by file status" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[status]" + }, + { + "name": "sort_key", + "required": false, + "description": "Specify the key for sorting the list, with an optional '-' prefix for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort key with optional descending prefix" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCustomCostsFiles'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/custom_costs", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Page number for pagination", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page number for pagination" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[size]", + "tool_parameter_name": "pagination_page_size", + "description": "Page size for pagination", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Page size for pagination" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 100, + "documentation_urls": [] + }, + { + "name": "filter[status]", + "tool_parameter_name": "filter_by_file_status", + "description": "Filter by file status", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by file status" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_key", + "description": "Sort key with optional descending prefix", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sort key with optional descending prefix" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "created_at", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomLogDestinations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomLogDestinations.json new file mode 100644 index 00000000..7a4d72ba --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListCustomLogDestinations.json @@ -0,0 +1,91 @@ +{ + "name": "ListCustomLogDestinations", + "fully_qualified_name": "DatadogApi.ListCustomLogDestinations@0.1.0", + "description": "Retrieve configured custom log destinations from Datadog.\n\nUse this tool to get a list of custom log destinations configured in your Datadog organization, including their definitions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListLogsCustomDestinations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/custom-destinations", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatadogDatastores.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatadogDatastores.json new file mode 100644 index 00000000..f22f72bc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatadogDatastores.json @@ -0,0 +1,91 @@ +{ + "name": "ListDatadogDatastores", + "fully_qualified_name": "DatadogApi.ListDatadogDatastores@0.1.0", + "description": "Retrieve a list of all Datadog datastores.\n\nUse this tool to obtain a complete list of datastores within your organization on Datadog. Ideal for inventory management and audit purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListDatastores'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatadogEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatadogEvents.json new file mode 100644 index 00000000..8f930e4e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatadogEvents.json @@ -0,0 +1,297 @@ +{ + "name": "ListDatadogEvents", + "fully_qualified_name": "DatadogApi.ListDatadogEvents@0.1.0", + "description": "Retrieve events from Datadog based on a search query.\n\nUse this tool to list events from Datadog that match a specific search query. The results are paginated, similar to logs, and this tool is ideal for accessing the latest events.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "event_search_query", + "required": false, + "description": "Search query following Datadog's events syntax to filter events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following events syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "minimum_timestamp_millis", + "required": false, + "description": "The minimum timestamp in milliseconds for filtering requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events, in milliseconds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "max_timestamp_milliseconds", + "required": false, + "description": "Specify the maximum timestamp for requested events in milliseconds. Use this to limit the latest time of events retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events, in milliseconds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify the order of events: 'timestamp' for ascending, '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for paginating through results, provided in the previous query response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "maximum_events_per_page", + "required": false, + "description": "Sets the maximum number of events to return in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/events", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "event_search_query", + "description": "Search query following events syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following events syntax." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp_millis", + "description": "Minimum timestamp for requested events, in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events, in milliseconds." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "max_timestamp_milliseconds", + "description": "Maximum timestamp for requested events, in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events, in milliseconds." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Order of events in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "maximum_events_per_page", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatastoreItems.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatastoreItems.json new file mode 100644 index 00000000..5a8e1fcf --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListDatastoreItems.json @@ -0,0 +1,291 @@ +{ + "name": "ListDatastoreItems", + "fully_qualified_name": "DatadogApi.ListDatastoreItems@0.1.0", + "description": "Retrieve items from a specified datastore.\n\nUse this tool to list items from a datastore. You can filter the results by using either an item key or a filter query parameter, but not both simultaneously. Supports server-side pagination for managing large datasets.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_identifier", + "required": true, + "description": "The unique identifier for the datastore from which to fetch items.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + }, + { + "name": "search_filter", + "required": false, + "description": "Query filter to search datastore items using the logs search syntax. Cannot be used with item_key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional query filter to search items using the [logs search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "primary_item_key", + "required": false, + "description": "Primary key to retrieve a specific item. Cannot be used with the filter parameter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional primary key value to retrieve a specific item. Cannot be used together with the filter parameter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "item_key" + }, + { + "name": "item_limit_per_page", + "required": false, + "description": "Limit the number of items to return per page for pagination. Maximum of 100 items per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional field to limit the number of items to return per page for pagination. Up to 100 items can be returned per page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "pagination_offset", + "required": false, + "description": "Specifies the number of items to skip from the beginning of the result set for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional field to offset the number of items to skip from the beginning of the result set for pagination." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "sort_order", + "required": false, + "description": "Sort results by a specific field. Use '-' prefix for descending order (e.g., '-created_at').", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional field to sort results by. Prefix with '-' for descending order (e.g., '-created_at')." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListDatastoreItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter", + "tool_parameter_name": "search_filter", + "description": "Optional query filter to search items using the [logs search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional query filter to search items using the [logs search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "item_key", + "tool_parameter_name": "primary_item_key", + "description": "Optional primary key value to retrieve a specific item. Cannot be used together with the filter parameter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional primary key value to retrieve a specific item. Cannot be used together with the filter parameter." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "item_limit_per_page", + "description": "Optional field to limit the number of items to return per page for pagination. Up to 100 items can be returned per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional field to limit the number of items to return per page for pagination. Up to 100 items can be returned per page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[offset]", + "tool_parameter_name": "pagination_offset", + "description": "Optional field to offset the number of items to skip from the beginning of the result set for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional field to offset the number of items to skip from the beginning of the result set for pagination." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Optional field to sort results by. Prefix with '-' for descending order (e.g., '-created_at').", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional field to sort results by. Prefix with '-' for descending order (e.g., '-created_at')." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "datastore_id", + "tool_parameter_name": "datastore_identifier", + "description": "The unique identifier of the datastore to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFastlyAccounts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFastlyAccounts.json new file mode 100644 index 00000000..ce62745d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFastlyAccounts.json @@ -0,0 +1,91 @@ +{ + "name": "ListFastlyAccounts", + "fully_qualified_name": "DatadogApi.ListFastlyAccounts@0.1.0", + "description": "Retrieve a list of Fastly accounts integrated with Datadog.\n\nCall this tool to obtain a list of Fastly accounts that are currently integrated with your Datadog instance. This can help in managing, auditing, or configuring integrations between Datadog and Fastly.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListFastlyAccounts'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFastlyServices.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFastlyServices.json new file mode 100644 index 00000000..4b87817d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFastlyServices.json @@ -0,0 +1,126 @@ +{ + "name": "ListFastlyServices", + "fully_qualified_name": "DatadogApi.ListFastlyServices@0.1.0", + "description": "Retrieve Fastly services for a specific account.\n\nUse this tool to get a list of all Fastly services associated with a particular account in Datadog. Ideal for checking service configurations or integrations linked to your Fastly account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "The unique identifier for a Fastly account to retrieve its services.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListFastlyServices'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFindings.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFindings.json new file mode 100644 index 00000000..941c8b3e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListFindings.json @@ -0,0 +1,606 @@ +{ + "name": "ListFindings", + "fully_qualified_name": "DatadogApi.ListFindings@0.1.0", + "description": "Retrieve a list of security findings from Datadog.\n\nUse this tool to obtain a list of security findings, including misconfigurations and identity risks from Datadog. You can apply filters to customize the search results and include additional details by specifying parameters. The response includes summary details of each finding along with pagination metadata.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "max_findings_limit", + "required": false, + "description": "Set the maximum number of findings to return, up to a limit of 1000.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit the number of findings returned. Must be <= 1000." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "snapshot_timestamp", + "required": false, + "description": "Specify the Unix timestamp (in milliseconds) to get findings for a specific snapshot of time.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings for a given snapshot of time (Unix ms)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "snapshot_timestamp" + }, + { + "name": "next_page_cursor", + "required": false, + "description": "Use this to return the next page of findings starting from this cursor's position.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return the next page of findings pointed to by the cursor." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "filter_by_tags", + "required": false, + "description": "Specify tags to filter findings. Use the format `tag_key:tag_value`. Supports multiple tags separated by commas.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that have these associated tags (repeatable)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[tags]" + }, + { + "name": "filter_by_evaluation_change_date", + "required": false, + "description": "Specify a date (Unix ms) or date range (using comparison operators) to find results altered from pass to fail or vice versa.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that have changed from pass to fail or vice versa on a specified date (Unix ms) or date range (using comparison operators)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[evaluation_changed_at]" + }, + { + "name": "filter_by_rule_id", + "required": false, + "description": "Provide a specific rule ID to filter findings related to that rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings for the specified rule ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule_id]" + }, + { + "name": "filter_by_rule_name", + "required": false, + "description": "Specify the rule name to return findings associated with it. This filters findings based on the provided rule name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings for the specified rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[rule_name]" + }, + { + "name": "filter_by_resource_type", + "required": false, + "description": "Return findings only for the specified resource type. Use to narrow down results to specific resource types, such as 'aws', 'gcp', etc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only findings for the specified resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[resource_type]" + }, + { + "name": "filter_by_resource_id", + "required": false, + "description": "Return only findings for the specified resource ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only findings for the specified resource id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[@resource_id]" + }, + { + "name": "filter_discovery_timestamp", + "required": false, + "description": "Return findings discovered at a specific time (Unix ms) or within a date range using comparison operators (e.g., `>`, `<=`).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that were found on a specified date (Unix ms) or date range (using comparison operators)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[discovery_timestamp]" + }, + { + "name": "filter_evaluation_status", + "required": false, + "description": "Specify to return only findings that are either 'pass' or 'fail'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pass", + "fail" + ], + "properties": null, + "inner_properties": null, + "description": "Return only `pass` or `fail` findings." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[evaluation]" + }, + { + "name": "status_filter", + "required": false, + "description": "Specify the status of findings to return: critical, high, medium, low, or info.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ], + "properties": null, + "inner_properties": null, + "description": "Return only findings with the specified status." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[status]" + }, + { + "name": "vulnerability_type_filters", + "required": false, + "description": "A list of strings to filter findings by matching vulnerability types. Repeatable for multiple types.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that match the selected vulnerability types (repeatable)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[vulnerability_type]" + }, + { + "name": "return_muted_findings", + "required": false, + "description": "Set to `true` to return muted findings. Set to `false` to exclude them.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to `true` to return findings that are muted. Set to `false` to return unmuted findings." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[muted]" + }, + { + "name": "include_detailed_findings", + "required": false, + "description": "Set to true to retrieve additional fields like external ID, description, and IP addresses for some findings.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return additional fields for some findings." + }, + "inferrable": true, + "http_endpoint_parameter_name": "detailed_findings" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListFindings'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/posture_management/findings", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[limit]", + "tool_parameter_name": "max_findings_limit", + "description": "Limit the number of findings returned. Must be <= 1000.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Limit the number of findings returned. Must be <= 1000." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 100, + "documentation_urls": [] + }, + { + "name": "snapshot_timestamp", + "tool_parameter_name": "snapshot_timestamp", + "description": "Return findings for a given snapshot of time (Unix ms).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings for a given snapshot of time (Unix ms)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "next_page_cursor", + "description": "Return the next page of findings pointed to by the cursor.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return the next page of findings pointed to by the cursor." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[tags]", + "tool_parameter_name": "filter_by_tags", + "description": "Return findings that have these associated tags (repeatable).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that have these associated tags (repeatable)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[evaluation_changed_at]", + "tool_parameter_name": "filter_by_evaluation_change_date", + "description": "Return findings that have changed from pass to fail or vice versa on a specified date (Unix ms) or date range (using comparison operators).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that have changed from pass to fail or vice versa on a specified date (Unix ms) or date range (using comparison operators)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[muted]", + "tool_parameter_name": "return_muted_findings", + "description": "Set to `true` to return findings that are muted. Set to `false` to return unmuted findings.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set to `true` to return findings that are muted. Set to `false` to return unmuted findings." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule_id]", + "tool_parameter_name": "filter_by_rule_id", + "description": "Return findings for the specified rule ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings for the specified rule ID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[rule_name]", + "tool_parameter_name": "filter_by_rule_name", + "description": "Return findings for the specified rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings for the specified rule." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[resource_type]", + "tool_parameter_name": "filter_by_resource_type", + "description": "Return only findings for the specified resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only findings for the specified resource type." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[@resource_id]", + "tool_parameter_name": "filter_by_resource_id", + "description": "Return only findings for the specified resource id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return only findings for the specified resource id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[discovery_timestamp]", + "tool_parameter_name": "filter_discovery_timestamp", + "description": "Return findings that were found on a specified date (Unix ms) or date range (using comparison operators).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that were found on a specified date (Unix ms) or date range (using comparison operators)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[evaluation]", + "tool_parameter_name": "filter_evaluation_status", + "description": "Return only `pass` or `fail` findings.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pass", + "fail" + ], + "properties": null, + "inner_properties": null, + "description": "Return only `pass` or `fail` findings." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[status]", + "tool_parameter_name": "status_filter", + "description": "Return only findings with the specified status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "critical", + "high", + "medium", + "low", + "info" + ], + "properties": null, + "inner_properties": null, + "description": "Return only findings with the specified status." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[vulnerability_type]", + "tool_parameter_name": "vulnerability_type_filters", + "description": "Return findings that match the selected vulnerability types (repeatable).", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return findings that match the selected vulnerability types (repeatable)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "detailed_findings", + "tool_parameter_name": "include_detailed_findings", + "description": "Return additional fields for some findings.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Return additional fields for some findings." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListGcpStsAccounts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListGcpStsAccounts.json new file mode 100644 index 00000000..9b2f03d2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListGcpStsAccounts.json @@ -0,0 +1,91 @@ +{ + "name": "ListGcpStsAccounts", + "fully_qualified_name": "DatadogApi.ListGcpStsAccounts@0.1.0", + "description": "Retrieve all GCP STS-enabled service accounts from Datadog.\n\nUse this tool to list all Google Cloud Platform (GCP) STS-enabled service accounts configured in your Datadog account. It should be called when you need to view or manage the integration of GCP accounts within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListGCPSTSAccounts'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/gcp/accounts", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListGcpUsageCostConfigs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListGcpUsageCostConfigs.json new file mode 100644 index 00000000..e72bf732 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListGcpUsageCostConfigs.json @@ -0,0 +1,91 @@ +{ + "name": "ListGcpUsageCostConfigs", + "fully_qualified_name": "DatadogApi.ListGcpUsageCostConfigs@0.1.0", + "description": "Retrieve Google Cloud Usage Cost configurations from Datadog.\n\nCall this tool to obtain a list of Google Cloud Usage Cost configurations in your Datadog account. Useful for monitoring and managing GCP cost settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListCostGCPUsageCostConfigs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/gcp_uc_config", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListHistoricalJobs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListHistoricalJobs.json new file mode 100644 index 00000000..8358324c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListHistoricalJobs.json @@ -0,0 +1,225 @@ +{ + "name": "ListHistoricalJobs", + "fully_qualified_name": "DatadogApi.ListHistoricalJobs@0.1.0", + "description": "Retrieve a list of historical SIEM detection jobs from Datadog.\n\nUse this tool to get a list of historical jobs related to SIEM detections in Datadog. This is useful for analyzing past job executions and reviewing detection history.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Specifies the number of results per page, with a maximum of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return from the results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_order", + "required": false, + "description": "Specifies the order in which jobs are returned, such as ascending or descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order of the jobs in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_query", + "required": false, + "description": "A query string to filter items in the list of historical jobs. Use to specify criteria for narrowing down the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query used to filter items from the fetched list." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListHistoricalJobs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/jobs", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "The order of the jobs in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The order of the jobs in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[query]", + "tool_parameter_name": "filter_query", + "description": "Query used to filter items from the fetched list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query used to filter items from the fetched list." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentNotificationRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentNotificationRules.json new file mode 100644 index 00000000..b248fdb0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentNotificationRules.json @@ -0,0 +1,126 @@ +{ + "name": "ListIncidentNotificationRules", + "fully_qualified_name": "DatadogApi.ListIncidentNotificationRules@0.1.0", + "description": "Retrieve all incident notification rules for the organization.\n\nFetches a list of notification rules for incidents within your organization, with optional filtering by incident type.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "resources_to_include", + "required": false, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidentNotificationRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-rules", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "resources_to_include", + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentNotificationTemplates.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentNotificationTemplates.json new file mode 100644 index 00000000..87ff2c9a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentNotificationTemplates.json @@ -0,0 +1,159 @@ +{ + "name": "ListIncidentNotificationTemplates", + "fully_qualified_name": "DatadogApi.ListIncidentNotificationTemplates@0.1.0", + "description": "Retrieve all incident notification templates.\n\nThis tool lists all the notification templates available for incidents in Datadog. It can optionally filter the templates by incident type.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_type_id_filter", + "required": false, + "description": "Optional ID to filter notification templates by incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional incident type ID filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[incident-type]" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to include in the response. Supported values are `created_by_user`, `last_modified_by_user`, `incident_type`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidentNotificationTemplates'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-templates", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[incident-type]", + "tool_parameter_name": "incident_type_id_filter", + "description": "Optional incident type ID filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Optional incident type ID filter." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentTodos.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentTodos.json new file mode 100644 index 00000000..caab0eca --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListIncidentTodos.json @@ -0,0 +1,126 @@ +{ + "name": "ListIncidentTodos", + "fully_qualified_name": "DatadogApi.ListIncidentTodos@0.1.0", + "description": "Retrieve all todos for a specified incident.\n\nUse this tool to gather a list of todos associated with a specific incident in Datadog. It is useful for tracking tasks that need to be addressed within an incident context.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident for which to retrieve todos.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidentTodos'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLatestSpans.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLatestSpans.json new file mode 100644 index 00000000..9914697f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLatestSpans.json @@ -0,0 +1,297 @@ +{ + "name": "ListLatestSpans", + "fully_qualified_name": "DatadogApi.ListLatestSpans@0.1.0", + "description": "Retrieve the latest spans based on a search query.\n\nThis tool retrieves spans from Datadog that match a specified search query. Use this to see your latest spans. Note that results are paginated, and the endpoint is rate limited to 300 requests per hour.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "span_search_query", + "required": false, + "description": "A search query following the spans syntax to filter the spans you want to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following spans syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "minimum_timestamp", + "required": false, + "description": "Minimum timestamp for requested spans. Accepts ISO8601, date math, or timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "max_timestamp_for_spans", + "required": false, + "description": "Maximum timestamp for requested spans. Use ISO8601, date math, or millisecond timestamps.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "sort_order_of_spans", + "required": false, + "description": "Specify the order of spans in the results. Use 'timestamp' for ascending and '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of spans in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for paginating results, provided by the previous query execution.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "max_spans_limit", + "required": false, + "description": "The maximum number of spans to return in the response. Specify an integer value to limit the results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of spans in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListSpansGet'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/spans/events", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "span_search_query", + "description": "Search query following spans syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following spans syntax." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp", + "description": "Minimum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "max_timestamp_for_spans", + "description": "Maximum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested spans. Supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order_of_spans", + "description": "Order of spans in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of spans in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_spans_limit", + "description": "Maximum number of spans in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of spans in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogs.json new file mode 100644 index 00000000..d53b23d3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogs.json @@ -0,0 +1,439 @@ +{ + "name": "ListLogs", + "fully_qualified_name": "DatadogApi.ListLogs@0.1.0", + "description": "Retrieve logs based on a search query with pagination.\n\nUse this tool to search and filter logs according to specified criteria. Note that results are paginated. Consider Datadog's archive capabilities for organizational log archiving needs.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "minimum_time", + "required": false, + "description": "The minimum time for the requested logs, supports date math and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested logs, supports date math and regular timestamps (milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "indexes_to_search", + "required": false, + "description": "Specify the indexes to search. Defaults to ['*'] for all indexes.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For customers with multiple indexes, the indexes to search. Defaults to ['*'] which means all indexes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.indexes" + }, + { + "name": "search_query", + "required": false, + "description": "The search query following Datadog's log search syntax to filter logs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "storage_type", + "required": false, + "description": "Specify the storage type: \"indexes\", \"online-archives\", or \"flex\".", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "indexes", + "online-archives", + "flex" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies storage type as indexes, online-archives or flex" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.storage_tier" + }, + { + "name": "max_log_time", + "required": false, + "description": "The maximum time for the requested logs. Supports date math and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested logs, supports date math and regular timestamps (milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "time_offset_seconds", + "required": false, + "description": "The time offset in seconds to apply to the log search query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timeOffset" + }, + { + "name": "query_timezone", + "required": false, + "description": "Specify the timezone as GMT, UTC, an offset (e.g., UTC+1), or a Timezone Database ID (e.g., America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timezone" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for retrieving the next set of paginated log results from a previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "maximum_logs_in_response", + "required": false, + "description": "Specifies the maximum number of logs to return in the response, allowing control over pagination size.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of logs in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_order", + "required": false, + "description": "Defines how logs are sorted: 'timestamp' for ascending order and '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying logs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListLogs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/events/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "minimum_time", + "description": "The minimum time for the requested logs, supports date math and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested logs, supports date math and regular timestamps (milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now-15m", + "documentation_urls": [] + }, + { + "name": "filter.indexes", + "tool_parameter_name": "indexes_to_search", + "description": "For customers with multiple indexes, the indexes to search. Defaults to ['*'] which means all indexes.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For customers with multiple indexes, the indexes to search. Defaults to ['*'] which means all indexes." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": [ + "*" + ], + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "search_query", + "description": "The search query - following the log search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "filter.storage_tier", + "tool_parameter_name": "storage_type", + "description": "Specifies storage type as indexes, online-archives or flex", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "indexes", + "online-archives", + "flex" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies storage type as indexes, online-archives or flex" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "indexes", + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "max_log_time", + "description": "The maximum time for the requested logs, supports date math and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested logs, supports date math and regular timestamps (milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now", + "documentation_urls": [] + }, + { + "name": "options.timeOffset", + "tool_parameter_name": "time_offset_seconds", + "description": "The time offset (in seconds) to apply to the query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "options.timezone", + "tool_parameter_name": "query_timezone", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "UTC", + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "maximum_logs_in_response", + "description": "Maximum number of logs in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of logs in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Sort parameters when querying logs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying logs." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a logs list.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"The search and filter query settings\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested logs, supports date math and regular timestamps (milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"default\": [\n \"*\"\n ],\n \"description\": \"For customers with multiple indexes, the indexes to search. Defaults to ['*'] which means all indexes.\",\n \"example\": [\n \"main\",\n \"web\"\n ],\n \"items\": {\n \"description\": \"The name of a log index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the log search syntax.\",\n \"example\": \"service:web* AND @http.status_code:[200 TO 299]\",\n \"type\": \"string\"\n },\n \"storage_tier\": {\n \"default\": \"indexes\",\n \"description\": \"Specifies storage type as indexes, online-archives or flex\",\n \"enum\": [\n \"indexes\",\n \"online-archives\",\n \"flex\"\n ],\n \"example\": \"indexes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INDEXES\",\n \"ONLINE_ARCHIVES\",\n \"FLEX\"\n ]\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested logs, supports date math and regular timestamps (milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"deprecated\": true,\n \"description\": \"Global query options that are used during the query.\\nNote: These fields are currently deprecated and do not affect the query results.\",\n \"properties\": {\n \"timeOffset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging attributes for listing logs.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of logs in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"Sort parameters when querying logs.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogsArchives.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogsArchives.json new file mode 100644 index 00000000..871e66d5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogsArchives.json @@ -0,0 +1,91 @@ +{ + "name": "ListLogsArchives", + "fully_qualified_name": "DatadogApi.ListLogsArchives@0.1.0", + "description": "Get the list of configured logs archives.\n\nRetrieve the definitions of all logs archives configured in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListLogsArchives'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogsMatchingQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogsMatchingQuery.json new file mode 100644 index 00000000..02c9ab67 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListLogsMatchingQuery.json @@ -0,0 +1,371 @@ +{ + "name": "ListLogsMatchingQuery", + "fully_qualified_name": "DatadogApi.ListLogsMatchingQuery@0.1.0", + "description": "Retrieve logs that match a search query with pagination.\n\nUse this tool to search and filter logs in Datadog based on a specified query. It's ideal for retrieving specific log data for analysis or monitoring purposes. For extensive archiving, consider Datadog's archive features instead.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "search_query", + "required": false, + "description": "Search query using logs syntax to filter specific logs from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following logs syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "search_indexes", + "required": false, + "description": "Specify the indexes to search. Defaults to '*' for all indexes.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For customers with multiple indexes, the indexes to search.\nDefaults to '*' which means all indexes" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[indexes]" + }, + { + "name": "minimum_timestamp_for_logs", + "required": false, + "description": "Specify the earliest timestamp for the logs to be retrieved. Use ISO 8601 format for the timestamp.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested logs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "max_timestamp_for_logs", + "required": false, + "description": "Specify the maximum timestamp for the requested logs. This represents the latest time point for log retrieval.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested logs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "storage_type", + "required": false, + "description": "Specifies the storage type. Options are 'indexes', 'online-archives', or 'flex'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "indexes", + "online-archives", + "flex" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the storage type to be used" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[storage_tier]" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify the order of logs in results: 'timestamp' for ascending or '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of logs in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for pagination to retrieve the next set of log results. Use the cursor from the previous query to continue fetching results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "maximum_logs_in_response", + "required": false, + "description": "Maximum number of logs to include in the response. Specify an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of logs in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListLogsGet'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/events", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "search_query", + "description": "Search query following logs syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following logs syntax." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[indexes]", + "tool_parameter_name": "search_indexes", + "description": "For customers with multiple indexes, the indexes to search.\nDefaults to '*' which means all indexes", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "For customers with multiple indexes, the indexes to search.\nDefaults to '*' which means all indexes" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp_for_logs", + "description": "Minimum timestamp for requested logs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested logs." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "max_timestamp_for_logs", + "description": "Maximum timestamp for requested logs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested logs." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[storage_tier]", + "tool_parameter_name": "storage_type", + "description": "Specifies the storage type to be used", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "indexes", + "online-archives", + "flex" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the storage type to be used" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "indexes", + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Order of logs in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of logs in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "maximum_logs_in_response", + "description": "Maximum number of logs in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of logs in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricAssets.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricAssets.json new file mode 100644 index 00000000..f372db38 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricAssets.json @@ -0,0 +1,126 @@ +{ + "name": "ListMetricAssets", + "fully_qualified_name": "DatadogApi.ListMetricAssets@0.1.0", + "description": "Retrieve assets associated with a specific metric.\n\nThis tool returns a list of dashboards, monitors, notebooks, and SLOs where a specific metric is used. Useful for tracking where a metric appears across Datadog's tools, updated every 24 hours.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The specific name of the metric to retrieve associated assets for. This is essential for querying the correct data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListMetricAssets'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/assets", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricTagConfigurations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricTagConfigurations.json new file mode 100644 index 00000000..ccc50c63 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricTagConfigurations.json @@ -0,0 +1,429 @@ +{ + "name": "ListMetricTagConfigurations", + "fully_qualified_name": "DatadogApi.ListMetricTagConfigurations@0.1.0", + "description": "Retrieve all metrics configurable in Datadog's Metrics Summary.\n\nUse this tool to get a list of all metrics that can be configured on the Metrics Summary page or with Metrics without Limits\u2122. It supports pagination through cursor-based navigation.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "filter_tag_configurations", + "required": false, + "description": "Filter tag configurations by specified configured tags. Use string values representing specific criteria for filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter tag configurations by configured tags." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[tags_configured]" + }, + { + "name": "metric_type_filter", + "required": false, + "description": "Filter metrics by type. Options are 'non_distribution' or 'distribution'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "non_distribution", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "Filter metrics by metric type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[metric_type]" + }, + { + "name": "filter_metrics_by_tags", + "required": false, + "description": "Filter metrics by tags using boolean/wildcard expressions; combine with queried filter only.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter metrics that have been submitted with the given tags. Supports boolean and wildcard expressions.\nCan only be combined with the filter[queried] filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[tags]" + }, + { + "name": "look_back_seconds", + "required": false, + "description": "The number of seconds to look back for applying a filter on tags or queried metrics. Defaults to 3600 seconds (1 hour) with a max of 2,592,000 seconds (30 days).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of seconds of look back (from now) to apply to a filter[tag] or filter[queried] query.\nDefault value is 3600 (1 hour), maximum value is 2,592,000 (30 days)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "window[seconds]" + }, + { + "name": "max_results_per_page", + "required": false, + "description": "Maximum number of metric configurations to return per page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "String to query the next page of metric results. Use 'next_cursor' from the previous response. Null when all pages are retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`.\nOnce the `meta.pagination.next_cursor` key is null, all pages have been retrieved." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "include_metrics_with_configured_tags", + "required": false, + "description": "Set to true to filter and include only custom metrics with configured tags.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter custom metrics that have configured tags." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[configured]" + }, + { + "name": "include_percentile_aggregations", + "required": false, + "description": "Set to true to include distributions with additional percentile aggregations enabled. Set to false to exclude them.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter distributions with additional percentile\naggregations enabled or disabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[include_percentiles]" + }, + { + "name": "filter_by_query_status", + "required": false, + "description": "Filter custom metrics that have or have not been queried within the specified time window.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Preview) Filter custom metrics that have or have not been queried in the specified window[seconds].\nIf no window is provided or the window is less than 2 hours, a default of 2 hours will be applied." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[queried]" + }, + { + "name": "filter_metrics_used_in_assets", + "required": false, + "description": "Boolean to filter metrics used in dashboards, monitors, notebooks, and SLOs.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Preview) Filter metrics that are used in dashboards, monitors, notebooks, SLOs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[related_assets]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListTagConfigurations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[configured]", + "tool_parameter_name": "include_metrics_with_configured_tags", + "description": "Filter custom metrics that have configured tags.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter custom metrics that have configured tags." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[tags_configured]", + "tool_parameter_name": "filter_tag_configurations", + "description": "Filter tag configurations by configured tags.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter tag configurations by configured tags." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[metric_type]", + "tool_parameter_name": "metric_type_filter", + "description": "Filter metrics by metric type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "non_distribution", + "distribution" + ], + "properties": null, + "inner_properties": null, + "description": "Filter metrics by metric type." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "distribution", + "documentation_urls": [] + }, + { + "name": "filter[include_percentiles]", + "tool_parameter_name": "include_percentile_aggregations", + "description": "Filter distributions with additional percentile\naggregations enabled or disabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter distributions with additional percentile\naggregations enabled or disabled." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[queried]", + "tool_parameter_name": "filter_by_query_status", + "description": "(Preview) Filter custom metrics that have or have not been queried in the specified window[seconds].\nIf no window is provided or the window is less than 2 hours, a default of 2 hours will be applied.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Preview) Filter custom metrics that have or have not been queried in the specified window[seconds].\nIf no window is provided or the window is less than 2 hours, a default of 2 hours will be applied." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[tags]", + "tool_parameter_name": "filter_metrics_by_tags", + "description": "Filter metrics that have been submitted with the given tags. Supports boolean and wildcard expressions.\nCan only be combined with the filter[queried] filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter metrics that have been submitted with the given tags. Supports boolean and wildcard expressions.\nCan only be combined with the filter[queried] filter." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[related_assets]", + "tool_parameter_name": "filter_metrics_used_in_assets", + "description": "(Preview) Filter metrics that are used in dashboards, monitors, notebooks, SLOs.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "(Preview) Filter metrics that are used in dashboards, monitors, notebooks, SLOs." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "window[seconds]", + "tool_parameter_name": "look_back_seconds", + "description": "The number of seconds of look back (from now) to apply to a filter[tag] or filter[queried] query.\nDefault value is 3600 (1 hour), maximum value is 2,592,000 (30 days).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of seconds of look back (from now) to apply to a filter[tag] or filter[queried] query.\nDefault value is 3600 (1 hour), maximum value is 2,592,000 (30 days)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[size]", + "tool_parameter_name": "max_results_per_page", + "description": "Maximum number of results returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of results returned." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10000, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`.\nOnce the `meta.pagination.next_cursor` key is null, all pages have been retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "String to query the next page of results.\nThis key is provided with each valid response from the API in `meta.pagination.next_cursor`.\nOnce the `meta.pagination.next_cursor` key is null, all pages have been retrieved." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricTags.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricTags.json new file mode 100644 index 00000000..9ebdcd10 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricTags.json @@ -0,0 +1,126 @@ +{ + "name": "ListMetricTags", + "fully_qualified_name": "DatadogApi.ListMetricTags@0.1.0", + "description": "Retrieve indexed tags for a metric over the last hour.\n\nUse this tool to get the indexed tag key-value pairs for a specific metric name within the past hour. Useful for analyzing and viewing metric-related tag data from Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the metric to retrieve indexed tag key-value pairs from over the past hour.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListTagsByMetricName'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/all-tags", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricVolumes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricVolumes.json new file mode 100644 index 00000000..3e1818bf --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMetricVolumes.json @@ -0,0 +1,126 @@ +{ + "name": "ListMetricVolumes", + "fully_qualified_name": "DatadogApi.ListMetricVolumes@0.1.0", + "description": "Retrieve distinct metric volumes by name.\n\nUse this tool to view distinct volumes for a specified metric name. Note that custom metrics generated in-app may return `null` for ingested volumes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the metric to retrieve volumes for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListVolumesByMetricName'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/volumes", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMonitorConfigPolicies.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMonitorConfigPolicies.json new file mode 100644 index 00000000..13a3211e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMonitorConfigPolicies.json @@ -0,0 +1,91 @@ +{ + "name": "ListMonitorConfigPolicies", + "fully_qualified_name": "DatadogApi.ListMonitorConfigPolicies@0.1.0", + "description": "Retrieve all monitor configuration policies.\n\nUse this tool to get a comprehensive list of monitor configuration policies from Datadog. This can be useful for managing and understanding monitoring setups.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListMonitorConfigPolicies'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/policy", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMonitorDowntimes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMonitorDowntimes.json new file mode 100644 index 00000000..f12b0040 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMonitorDowntimes.json @@ -0,0 +1,192 @@ +{ + "name": "ListMonitorDowntimes", + "fully_qualified_name": "DatadogApi.ListMonitorDowntimes@0.1.0", + "description": "Retrieve active downtimes for a specified monitor.\n\nUse this tool to get all active downtimes associated with a specific monitor ID in Datadog. It should be called when you need to check the downtime status of a monitor.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_id", + "required": true, + "description": "The ID of the monitor for which to retrieve active downtimes. This should be provided as an integer.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the monitor." + }, + "inferrable": true, + "http_endpoint_parameter_name": "monitor_id" + }, + { + "name": "pagination_offset", + "required": false, + "description": "Specify the offset for the beginning of the returned page, to manage pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "maximum_downtime_count", + "required": false, + "description": "Specifies the maximum number of downtime entries to return in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of downtimes in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListMonitorDowntimes'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/{monitor_id}/downtime_matches", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[offset]", + "tool_parameter_name": "pagination_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "maximum_downtime_count", + "description": "Maximum number of downtimes in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of downtimes in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 30, + "documentation_urls": [] + }, + { + "name": "monitor_id", + "tool_parameter_name": "monitor_id", + "description": "The id of the monitor.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the monitor." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMsTeamsWorkflowWebhooks.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMsTeamsWorkflowWebhooks.json new file mode 100644 index 00000000..4355e97d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListMsTeamsWorkflowWebhooks.json @@ -0,0 +1,126 @@ +{ + "name": "ListMsTeamsWorkflowWebhooks", + "fully_qualified_name": "DatadogApi.ListMsTeamsWorkflowWebhooks@0.1.0", + "description": "Retrieve all Microsoft Teams workflow webhook handles from Datadog.\n\nUse this tool to obtain a list of all workflow webhook handles associated with the Datadog Microsoft Teams integration. It helps in managing and monitoring webhook configurations efficiently.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "webhook_handle_name", + "required": false, + "description": "Specifies the name of your Workflows webhook handle to filter the list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListWorkflowsWebhookHandles'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "name", + "tool_parameter_name": "webhook_handle_name", + "description": "Your Workflows webhook handle name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOktaAccounts.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOktaAccounts.json new file mode 100644 index 00000000..18dd4828 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOktaAccounts.json @@ -0,0 +1,91 @@ +{ + "name": "ListOktaAccounts", + "fully_qualified_name": "DatadogApi.ListOktaAccounts@0.1.0", + "description": "Retrieve a list of Okta accounts linked to Datadog.\n\nUse this tool to obtain information about Okta accounts that are integrated with Datadog, allowing for management and analysis of these linked accounts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListOktaAccounts'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/okta/accounts", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOpsgenieServices.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOpsgenieServices.json new file mode 100644 index 00000000..e41d13cd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOpsgenieServices.json @@ -0,0 +1,91 @@ +{ + "name": "ListOpsgenieServices", + "fully_qualified_name": "DatadogApi.ListOpsgenieServices@0.1.0", + "description": "Retrieve all services from Datadog Opsgenie integration.\n\nCall this tool to get a comprehensive list of services integrated with Datadog's Opsgenie. Useful for managing or reviewing service integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListOpsgenieServices'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/opsgenie/services", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrgConfigs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrgConfigs.json new file mode 100644 index 00000000..15443330 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrgConfigs.json @@ -0,0 +1,91 @@ +{ + "name": "ListOrgConfigs", + "fully_qualified_name": "DatadogApi.ListOrgConfigs@0.1.0", + "description": "Retrieve all organization configurations.\n\nCall this tool to get a list of all organization configurations, providing details like name, description, and value.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListOrgConfigs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/org_configs", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrgConnections.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrgConnections.json new file mode 100644 index 00000000..d103cc97 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrgConnections.json @@ -0,0 +1,225 @@ +{ + "name": "ListOrgConnections", + "fully_qualified_name": "DatadogApi.ListOrgConnections@0.1.0", + "description": "Retrieve a list of organization connections from Datadog.\n\nUse this tool to get a comprehensive list of all organization connections within Datadog. This can be useful for managing and analyzing connected organizations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "sink_organization_id", + "required": false, + "description": "The organization ID of the sink org. It identifies the destination organization in the connections list.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Org ID of the sink org." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sink_org_id" + }, + { + "name": "source_organization_id", + "required": false, + "description": "The ID of the source organization to query connections from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Org ID of the source org." + }, + "inferrable": true, + "http_endpoint_parameter_name": "source_org_id" + }, + { + "name": "entry_limit", + "required": false, + "description": "Specifies the maximum number of entries to return. Default is 1000.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The limit of number of entries you want to return. Default is 1000." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "pagination_offset", + "required": false, + "description": "The pagination offset to start querying from, with a default of 0. Use this for paginated results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The pagination offset which you want to query from. Default is 0." + }, + "inferrable": true, + "http_endpoint_parameter_name": "offset" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListOrgConnections'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/org_connections", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "sink_org_id", + "tool_parameter_name": "sink_organization_id", + "description": "The Org ID of the sink org.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Org ID of the sink org." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "source_org_id", + "tool_parameter_name": "source_organization_id", + "description": "The Org ID of the source org.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Org ID of the source org." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "limit", + "tool_parameter_name": "entry_limit", + "description": "The limit of number of entries you want to return. Default is 1000.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The limit of number of entries you want to return. Default is 1000." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "offset", + "tool_parameter_name": "pagination_offset", + "description": "The pagination offset which you want to query from. Default is 0.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The pagination offset which you want to query from. Default is 0." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrganizationIncidents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrganizationIncidents.json new file mode 100644 index 00000000..6ee57d2a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListOrganizationIncidents.json @@ -0,0 +1,192 @@ +{ + "name": "ListOrganizationIncidents", + "fully_qualified_name": "DatadogApi.ListOrganizationIncidents@0.1.0", + "description": "Retrieve all incidents for your organization.\n\nCall this tool to get a comprehensive list of all incidents associated with the user's organization in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "include_related_objects", + "required": false, + "description": "List of related object types to include in the response. Specify as an array of strings.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "page_size", + "required": false, + "description": "Integer specifying the number of incidents per page, up to a maximum of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_offset", + "required": false, + "description": "Specific offset to start the returned page of incidents. Use this to paginate results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListIncidents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_objects", + "description": "Specifies which types of related objects should be included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPermissions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPermissions.json new file mode 100644 index 00000000..75d12b24 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPermissions.json @@ -0,0 +1,91 @@ +{ + "name": "ListPermissions", + "fully_qualified_name": "DatadogApi.ListPermissions@0.1.0", + "description": "Retrieve all permissions from Datadog.\n\nUse this tool to get a comprehensive list of all available permissions, including their names, descriptions, and IDs, from Datadog's system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListPermissions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/permissions", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPipelines.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPipelines.json new file mode 100644 index 00000000..e068ee37 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPipelines.json @@ -0,0 +1,159 @@ +{ + "name": "ListPipelines", + "fully_qualified_name": "DatadogApi.ListPipelines@0.1.0", + "description": "Retrieve a list of pipelines from Datadog.\n\nUse this tool to get a list of all pipelines available in the Datadog system. It should be called whenever you need information on existing pipelines.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Number of pipelines to return per page, up to a maximum of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number of pipelines to retrieve. Use this to navigate through the pages of results returned by the API.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListPipelines'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPowerpacks.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPowerpacks.json new file mode 100644 index 00000000..4d255527 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListPowerpacks.json @@ -0,0 +1,159 @@ +{ + "name": "ListPowerpacks", + "fully_qualified_name": "DatadogApi.ListPowerpacks@0.1.0", + "description": "Retrieve a list of all powerpacks from Datadog.\n\nUse this tool to get the complete list of powerpacks available in Datadog. It should be called when you need to access or display all the powerpacks.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "max_powerpacks_limit", + "required": false, + "description": "Maximum number of powerpacks to include in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of powerpacks in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "page_offset", + "required": false, + "description": "The specific offset to start returning powerpacks from, allowing for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListPowerpacks'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/powerpacks", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[limit]", + "tool_parameter_name": "max_powerpacks_limit", + "description": "Maximum number of powerpacks in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of powerpacks in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 25, + "documentation_urls": [] + }, + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListReferenceTables.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListReferenceTables.json new file mode 100644 index 00000000..e245778a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListReferenceTables.json @@ -0,0 +1,305 @@ +{ + "name": "ListReferenceTables", + "fully_qualified_name": "DatadogApi.ListReferenceTables@0.1.0", + "description": "Retrieve all reference tables in the organization.\n\nUse this tool to fetch a list of all reference tables available in the current organization. It provides an overview of the reference tables configured in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "number_of_tables_to_return", + "required": false, + "description": "Specify the number of tables to return in the response. Use an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of tables to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "limit" + }, + { + "name": "pagination_offset", + "required": false, + "description": "Number of tables to skip for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of tables to skip for pagination." + }, + "inferrable": true, + "http_endpoint_parameter_name": "offset" + }, + { + "name": "sort_field_and_direction", + "required": false, + "description": "Specify the field to sort by and the direction. Use a field name for ascending, prefix with \"-\" for descending. Options include: updated_at, table_name, status, and their descending counterparts.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "updated_at", + "table_name", + "status", + "-updated_at", + "-table_name", + "-status" + ], + "properties": null, + "inner_properties": null, + "description": "Sort field and direction. Use field name for ascending, prefix with \"-\" for descending." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_by_table_status", + "required": false, + "description": "Filter tables by their status. Accepts status as a string, such as 'active', 'inactive', etc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by table status." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[status]" + }, + { + "name": "exact_table_name_filter", + "required": false, + "description": "Filter by an exact table name match to retrieve specific reference tables.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by exact table name match." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[table_name][exact]" + }, + { + "name": "filter_table_name_contains", + "required": false, + "description": "Filter tables by name containing this substring.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by table name containing substring." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[table_name][contains]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListTables'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/reference-tables/tables", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "limit", + "tool_parameter_name": "number_of_tables_to_return", + "description": "Number of tables to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of tables to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 15, + "documentation_urls": [] + }, + { + "name": "offset", + "tool_parameter_name": "pagination_offset", + "description": "Number of tables to skip for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Number of tables to skip for pagination." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_field_and_direction", + "description": "Sort field and direction. Use field name for ascending, prefix with \"-\" for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "updated_at", + "table_name", + "status", + "-updated_at", + "-table_name", + "-status" + ], + "properties": null, + "inner_properties": null, + "description": "Sort field and direction. Use field name for ascending, prefix with \"-\" for descending." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "-updated_at", + "documentation_urls": [] + }, + { + "name": "filter[status]", + "tool_parameter_name": "filter_by_table_status", + "description": "Filter by table status.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by table status." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[table_name][exact]", + "tool_parameter_name": "exact_table_name_filter", + "description": "Filter by exact table name match.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by exact table name match." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[table_name][contains]", + "tool_parameter_name": "filter_table_name_contains", + "description": "Filter by table name containing substring.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter by table name containing substring." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListResourceFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListResourceFilters.json new file mode 100644 index 00000000..9311550a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListResourceFilters.json @@ -0,0 +1,192 @@ +{ + "name": "ListResourceFilters", + "fully_qualified_name": "DatadogApi.ListResourceFilters@0.1.0", + "description": "Retrieve Datadog resource evaluation filters.\n\nCall this tool to obtain a list of resource evaluation filters for cloud security management in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_provider_filter", + "required": false, + "description": "Specifies the cloud provider to filter resource filters, such as aws, gcp, or azure.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter resource filters by cloud provider (e.g. aws, gcp, azure)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_provider" + }, + { + "name": "cloud_provider_account_id", + "required": false, + "description": "Filter resource filters by the cloud provider's account ID. This is valid only when a provider is specified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter resource filters by cloud provider account ID. This parameter is only valid when provider is specified." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "skip_cache_for_resource_filters", + "required": false, + "description": "Set to true to skip the cache when fetching resource filters. Useful when the latest resource data is needed.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skip cache for resource filters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "skip_cache" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetResourceEvaluationFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cloud_security_management/resource_filters", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "cloud_provider", + "tool_parameter_name": "cloud_provider_filter", + "description": "Filter resource filters by cloud provider (e.g. aws, gcp, azure).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter resource filters by cloud provider (e.g. aws, gcp, azure)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "account_id", + "tool_parameter_name": "cloud_provider_account_id", + "description": "Filter resource filters by cloud provider account ID. This parameter is only valid when provider is specified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter resource filters by cloud provider account ID. This parameter is only valid when provider is specified." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "skip_cache", + "tool_parameter_name": "skip_cache_for_resource_filters", + "description": "Skip cache for resource filters.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Skip cache for resource filters." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRestrictionQueries.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRestrictionQueries.json new file mode 100644 index 00000000..bbca8fbb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRestrictionQueries.json @@ -0,0 +1,159 @@ +{ + "name": "ListRestrictionQueries", + "fully_qualified_name": "DatadogApi.ListRestrictionQueries@0.1.0", + "description": "Retrieve all restriction queries with their details.\n\nThis tool retrieves all restriction queries from Datadog, including their names and IDs. Use it when you need to review or manage restriction queries within your Datadog configuration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "The number of results to return per page. Maximum value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number of results to return. Useful for paginating through result sets.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListRestrictionQueries'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRolePermissions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRolePermissions.json new file mode 100644 index 00000000..b5f55f3b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRolePermissions.json @@ -0,0 +1,126 @@ +{ + "name": "ListRolePermissions", + "fully_qualified_name": "DatadogApi.ListRolePermissions@0.1.0", + "description": "Retrieve all permissions for a specific role.\n\nCall this tool to get a list of all permissions associated with a particular role in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_identifier", + "required": true, + "description": "The unique identifier for the role whose permissions need to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListRolePermissions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}/permissions", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRoleTemplates.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRoleTemplates.json new file mode 100644 index 00000000..a2e17453 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRoleTemplates.json @@ -0,0 +1,91 @@ +{ + "name": "ListRoleTemplates", + "fully_qualified_name": "DatadogApi.ListRoleTemplates@0.1.0", + "description": "Retrieve all role templates from Datadog.\n\nThis tool retrieves a list of all role templates from Datadog. It should be called when you need to access or review the role templates defined within Datadog's system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListRoleTemplates'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/templates", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRoleUsers.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRoleUsers.json new file mode 100644 index 00000000..07c05426 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRoleUsers.json @@ -0,0 +1,258 @@ +{ + "name": "ListRoleUsers", + "fully_qualified_name": "DatadogApi.ListRoleUsers@0.1.0", + "description": "Retrieve all users belonging to a specific role.\n\nCall this tool to obtain a list of users assigned to a particular role in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_identifier", + "required": true, + "description": "The unique identifier of the role to list its associated users.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + }, + { + "name": "page_size", + "required": false, + "description": "Size for a given page, with a maximum value of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return in the list of users.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "user_sort_order", + "required": false, + "description": "Attribute to sort users by. Prefix with '-' for descending. Options: 'name', 'email', 'status'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "User attribute to order results by. Sort order is **ascending** by default.\nSort order is **descending** if the field is prefixed by a negative sign,\nfor example `sort=-name`. Options: `name`, `email`, `status`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "user_filter_string", + "required": false, + "description": "Filter users by a specific string. Defaults to no filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all users by the given string. Defaults to no filtering." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListRoleUsers'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}/users", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "user_sort_order", + "description": "User attribute to order results by. Sort order is **ascending** by default.\nSort order is **descending** if the field is prefixed by a negative sign,\nfor example `sort=-name`. Options: `name`, `email`, `status`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "User attribute to order results by. Sort order is **ascending** by default.\nSort order is **descending** if the field is prefixed by a negative sign,\nfor example `sort=-name`. Options: `name`, `email`, `status`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "name", + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "user_filter_string", + "description": "Filter all users by the given string. Defaults to no filtering.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all users by the given string. Defaults to no filtering." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "role_id", + "tool_parameter_name": "role_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumApplications.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumApplications.json new file mode 100644 index 00000000..787c28c9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumApplications.json @@ -0,0 +1,91 @@ +{ + "name": "ListRumApplications", + "fully_qualified_name": "DatadogApi.ListRumApplications@0.1.0", + "description": "Retrieve all RUM applications within your organization from Datadog.\n\nThis tool is used to list all the Real User Monitoring (RUM) applications configured in your organization to help monitor and analyze user interactions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetRUMApplications'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumEvents.json new file mode 100644 index 00000000..003304a6 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumEvents.json @@ -0,0 +1,297 @@ +{ + "name": "ListRumEvents", + "fully_qualified_name": "DatadogApi.ListRumEvents@0.1.0", + "description": "Retrieve RUM events matching a search query.\n\nThis tool is used to list RUM (Real User Monitoring) events that match a specific search query. It's useful for retrieving your latest RUM events, and results are paginated to handle large datasets.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_search_query", + "required": false, + "description": "Search query following RUM syntax for filtering events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following RUM syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "minimum_timestamp", + "required": false, + "description": "The starting timestamp for the requested RUM events. Use a string format compatible with the API.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "maximum_timestamp", + "required": false, + "description": "Maximum timestamp for requested events in ISO 8601 format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "event_sort_order", + "required": false, + "description": "Specify the order of events: 'timestamp' for ascending or '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for fetching the next set of paginated results in the queried RUM events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "maximum_event_count", + "required": false, + "description": "Specify the maximum number of events to retrieve in a single response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListRUMEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/events", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "rum_search_query", + "description": "Search query following RUM syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following RUM syntax." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp", + "description": "Minimum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "maximum_timestamp", + "description": "Maximum timestamp for requested events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum timestamp for requested events." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "event_sort_order", + "description": "Order of events in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Order of events in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "maximum_event_count", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumMetrics.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumMetrics.json new file mode 100644 index 00000000..7c328e3d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListRumMetrics.json @@ -0,0 +1,91 @@ +{ + "name": "ListRumMetrics", + "fully_qualified_name": "DatadogApi.ListRumMetrics@0.1.0", + "description": "Retrieve configured RUM-based metrics and their definitions.\n\nUse this tool to obtain a detailed list of metrics related to real user monitoring (RUM), including their configurations and definitions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListRumMetrics'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/config/metrics", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListScanningGroups.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListScanningGroups.json new file mode 100644 index 00000000..9c4c25bb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListScanningGroups.json @@ -0,0 +1,91 @@ +{ + "name": "ListScanningGroups", + "fully_qualified_name": "DatadogApi.ListScanningGroups@0.1.0", + "description": "Retrieve all scanning groups in your organization with Datadog's API.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListScanningGroups'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListScheduledDowntimes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListScheduledDowntimes.json new file mode 100644 index 00000000..b0034a98 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListScheduledDowntimes.json @@ -0,0 +1,225 @@ +{ + "name": "ListScheduledDowntimes", + "fully_qualified_name": "DatadogApi.ListScheduledDowntimes@0.1.0", + "description": "Retrieve all scheduled downtimes from Datadog.\n\nUse this tool to get a list of all downtimes that are currently scheduled in Datadog. It should be called when you need information about planned downtime periods.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "include_resources_in_response", + "required": false, + "description": "Comma-separated list of resource paths to include in the response, such as `created_by` and `monitor`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npaths are `created_by` and `monitor`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "page_offset", + "required": false, + "description": "The starting point for the list of returned scheduled downtimes, used for pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "max_downtimes_in_response", + "required": false, + "description": "Maximum number of downtimes to include in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of downtimes in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "return_current_downtimes_only", + "required": false, + "description": "Set to true to return only downtimes active at the time of the request.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only return downtimes that are active when the request is made." + }, + "inferrable": true, + "http_endpoint_parameter_name": "current_only" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListDowntimes'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/downtime", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "current_only", + "tool_parameter_name": "return_current_downtimes_only", + "description": "Only return downtimes that are active when the request is made.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only return downtimes that are active when the request is made." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_resources_in_response", + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npaths are `created_by` and `monitor`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resource paths for related resources to include in the response. Supported resource\npaths are `created_by` and `monitor`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_downtimes_in_response", + "description": "Maximum number of downtimes in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of downtimes in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 30, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityFilters.json new file mode 100644 index 00000000..d81ccc99 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityFilters.json @@ -0,0 +1,91 @@ +{ + "name": "ListSecurityFilters", + "fully_qualified_name": "DatadogApi.ListSecurityFilters@0.1.0", + "description": "Retrieve configured security filters from Datadog.\n\nUse this tool to get a list of all configured security filters along with their definitions. It is useful for monitoring and managing security configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListSecurityFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityMonitoringRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityMonitoringRules.json new file mode 100644 index 00000000..aa92e473 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityMonitoringRules.json @@ -0,0 +1,159 @@ +{ + "name": "ListSecurityMonitoringRules", + "fully_qualified_name": "DatadogApi.ListSecurityMonitoringRules@0.1.0", + "description": "Retrieve a list of security monitoring rules.\n\nUse this tool to get a list of security monitoring rules from Datadog. Call it when you need to view or manage security monitoring rules.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Size for a given page. The maximum allowed value is 100. Use an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return when listing the security monitoring rules.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListSecurityMonitoringRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityMonitoringSignals.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityMonitoringSignals.json new file mode 100644 index 00000000..33d41463 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecurityMonitoringSignals.json @@ -0,0 +1,297 @@ +{ + "name": "ListSecurityMonitoringSignals", + "fully_qualified_name": "DatadogApi.ListSecurityMonitoringSignals@0.1.0", + "description": "Retrieve a list of security monitoring hist signals.\n\nThis tool calls the Datadog API to list historical security monitoring signals, providing insights into detected security events over time.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "search_query", + "required": false, + "description": "The search query to filter security signals. Use this to specify criteria for filtering the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query for security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "minimum_timestamp", + "required": false, + "description": "The minimum timestamp for requested security signals in ISO 8601 format.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "maximum_timestamp_for_signals", + "required": false, + "description": "The latest timestamp to fetch security signals up to, formatted as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "sort_order", + "required": false, + "description": "Determine the order of security signals: 'timestamp' for ascending, '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The order of the security signals in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "results_page_cursor", + "required": false, + "description": "Cursor for paginated results, using the cursor from the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "max_security_signals", + "required": false, + "description": "The maximum number of security signals to return in the response. Specify an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListSecurityMonitoringHistsignals'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/histsignals", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "search_query", + "description": "The search query for security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query for security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp", + "description": "The minimum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "maximum_timestamp_for_signals", + "description": "The maximum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "The order of the security signals in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The order of the security signals in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "results_page_cursor", + "description": "A list of results using the cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_security_signals", + "description": "The maximum number of security signals in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecuritySignals.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecuritySignals.json new file mode 100644 index 00000000..ce0ba56e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSecuritySignals.json @@ -0,0 +1,297 @@ +{ + "name": "ListSecuritySignals", + "fully_qualified_name": "DatadogApi.ListSecuritySignals@0.1.0", + "description": "Retrieve security signals that match a search query.\n\nThis tool retrieves a list of security signals from Datadog based on a search query, using the GET method for the security monitoring signals endpoint.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "search_query_for_security_signals", + "required": false, + "description": "The search query string used to filter security signals from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query for security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[query]" + }, + { + "name": "minimum_timestamp", + "required": false, + "description": "The minimum timestamp to filter security signals. Format: ISO 8601 string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[from]" + }, + { + "name": "max_timestamp_for_security_signals", + "required": false, + "description": "Specify the maximum timestamp for retrieving security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[to]" + }, + { + "name": "result_sort_order", + "required": false, + "description": "Specify the sort order for the security signals. Use 'timestamp' for ascending order, '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The order of the security signals in results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "cursor_based_pagination", + "required": false, + "description": "Cursor for pagination to continue retrieving results from a previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[cursor]" + }, + { + "name": "max_security_signals_response", + "required": false, + "description": "Specify the maximum number of security signals to return in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListSecurityMonitoringSignals'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/signals", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "filter[query]", + "tool_parameter_name": "search_query_for_security_signals", + "description": "The search query for security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query for security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[from]", + "tool_parameter_name": "minimum_timestamp", + "description": "The minimum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[to]", + "tool_parameter_name": "max_timestamp_for_security_signals", + "description": "The maximum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "result_sort_order", + "description": "The order of the security signals in results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The order of the security signals in results." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[cursor]", + "tool_parameter_name": "cursor_based_pagination", + "description": "A list of results using the cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_security_signals_response", + "description": "The maximum number of security signals in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListServerlessAgents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListServerlessAgents.json new file mode 100644 index 00000000..81f19265 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListServerlessAgents.json @@ -0,0 +1,231 @@ +{ + "name": "ListServerlessAgents", + "fully_qualified_name": "DatadogApi.ListServerlessAgents@0.1.0", + "description": "Retrieve all running CSM Serverless Agents.\n\nUse this tool to get a list of all CSM Serverless Agents currently running on your hosts and containers. It's ideal for monitoring and managing your serverless agent deployments.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_index", + "required": false, + "description": "The zero-based page index for pagination when retrieving serverless agents.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page index for pagination (zero-based)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page" + }, + { + "name": "items_per_page", + "required": false, + "description": "The number of items to include in a single page of results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of items to include in a single page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "size" + }, + { + "name": "filter_query", + "required": false, + "description": "A search string to filter serverless agents, such as `hostname:COMP-T2H4J27423`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A search query string to filter results (for example, `hostname:COMP-T2H4J27423`)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "query" + }, + { + "name": "sort_direction", + "required": false, + "description": "The direction to sort results: 'asc' for ascending or 'desc' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The sort direction for results. Use `asc` for ascending or `desc` for descending." + }, + "inferrable": true, + "http_endpoint_parameter_name": "order_direction" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListAllCSMServerlessAgents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/csm/onboarding/serverless/agents", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page", + "tool_parameter_name": "page_index", + "description": "The page index for pagination (zero-based).", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page index for pagination (zero-based)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "size", + "tool_parameter_name": "items_per_page", + "description": "The number of items to include in a single page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of items to include in a single page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "query", + "tool_parameter_name": "filter_query", + "description": "A search query string to filter results (for example, `hostname:COMP-T2H4J27423`).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A search query string to filter results (for example, `hostname:COMP-T2H4J27423`)." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "order_direction", + "tool_parameter_name": "sort_direction", + "description": "The sort direction for results. Use `asc` for ascending or `desc` for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "The sort direction for results. Use `asc` for ascending or `desc` for descending." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListServiceAccountAppKeys.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListServiceAccountAppKeys.json new file mode 100644 index 00000000..d025c7f7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListServiceAccountAppKeys.json @@ -0,0 +1,338 @@ +{ + "name": "ListServiceAccountAppKeys", + "fully_qualified_name": "DatadogApi.ListServiceAccountAppKeys@0.1.0", + "description": "Retrieve all app keys for a specific service account.\n\nUse this tool to list all application keys available for a specified service account in Datadog. It is useful when you need to manage or audit the application keys associated with a service account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_account_id", + "required": true, + "description": "The unique identifier for the service account whose application keys are to be retrieved.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_account_id" + }, + { + "name": "page_size", + "required": false, + "description": "Number of application keys to retrieve per page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to be returned.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_order_attribute", + "required": false, + "description": "Attribute to sort application keys. Prefix with '-' for descending order. Options: created_at, last4, name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_string_for_application_keys", + "required": false, + "description": "Specify a string to filter the application keys by. Only keys containing the string will be shown.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter application keys by the specified string." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "created_at_start_filter", + "required": false, + "description": "Include application keys created on or after this date. Use format YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or after the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][start]" + }, + { + "name": "created_before_date", + "required": false, + "description": "Include application keys created on or before this date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or before the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][end]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListServiceAccountApplicationKeys'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/service_accounts/{service_account_id}/application_keys", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order_attribute", + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "name", + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "filter_string_for_application_keys", + "description": "Filter application keys by the specified string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter application keys by the specified string." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][start]", + "tool_parameter_name": "created_at_start_filter", + "description": "Only include application keys created on or after the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or after the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][end]", + "tool_parameter_name": "created_before_date", + "description": "Only include application keys created on or before the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or before the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "service_account_id", + "tool_parameter_name": "service_account_id", + "description": "The ID of the service account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the service account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSoftwareCatalogEntities.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSoftwareCatalogEntities.json new file mode 100644 index 00000000..37014f8a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSoftwareCatalogEntities.json @@ -0,0 +1,457 @@ +{ + "name": "ListSoftwareCatalogEntities", + "fully_qualified_name": "DatadogApi.ListSoftwareCatalogEntities@0.1.0", + "description": "Retrieve entities from the software catalog.\n\nUse this tool to get a list of entities from the software catalog, ideal for managing or integrating software components.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "pagination_offset", + "required": false, + "description": "The starting point for pagination of the returned list of entities.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + }, + { + "name": "max_entities_per_page", + "required": false, + "description": "Specifies the maximum number of entities to return per page in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of entities in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[limit]" + }, + { + "name": "filter_by_uuid", + "required": false, + "description": "Filter entities by their UUID. Provide the UUID as a string to retrieve specific entities.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by UUID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[id]" + }, + { + "name": "filter_by_reference", + "required": false, + "description": "Filter entities by their specific reference string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by reference" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[ref]" + }, + { + "name": "filter_by_name", + "required": false, + "description": "Filter entities by specifying their name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[name]" + }, + { + "name": "filter_by_kind", + "required": false, + "description": "Filter entities by specifying the kind of entity, provided as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by kind." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[kind]" + }, + { + "name": "filter_by_owner", + "required": false, + "description": "Filter the entities by their owner using a specific owner name or ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by owner." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[owner]" + }, + { + "name": "filter_by_relation_type", + "required": false, + "description": "Specify the relation type to filter entities. Options include: 'RelationTypeOwns', 'RelationTypeOwnedBy', 'RelationTypeDependsOn', 'RelationTypeDependencyOf', 'RelationTypePartsOf', 'RelationTypeHasPart', 'RelationTypeOtherOwns', 'RelationTypeOtherOwnedBy', 'RelationTypeImplementedBy', 'RelationTypeImplements'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RelationTypeOwns", + "RelationTypeOwnedBy", + "RelationTypeDependsOn", + "RelationTypeDependencyOf", + "RelationTypePartsOf", + "RelationTypeHasPart", + "RelationTypeOtherOwns", + "RelationTypeOtherOwnedBy", + "RelationTypeImplementedBy", + "RelationTypeImplements" + ], + "properties": null, + "inner_properties": null, + "description": "Filter entities by relation type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[relation][type]" + }, + { + "name": "exclude_snapshotted_entities", + "required": false, + "description": "Set to `true` to exclude entities that are snapshotted.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by excluding snapshotted entities." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[exclude_snapshot]" + }, + { + "name": "include_relationship_data", + "required": false, + "description": "Specify which relationship data to include, such as 'schema', 'raw_schema', 'oncall', 'incident', or 'relation'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "schema", + "raw_schema", + "oncall", + "incident", + "relation" + ], + "properties": null, + "inner_properties": null, + "description": "Include relationship data." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCatalogEntity'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/catalog/entity", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[offset]", + "tool_parameter_name": "pagination_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "page[limit]", + "tool_parameter_name": "max_entities_per_page", + "description": "Maximum number of entities in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of entities in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 100, + "documentation_urls": [] + }, + { + "name": "filter[id]", + "tool_parameter_name": "filter_by_uuid", + "description": "Filter entities by UUID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by UUID." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[ref]", + "tool_parameter_name": "filter_by_reference", + "description": "Filter entities by reference", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by reference" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[name]", + "tool_parameter_name": "filter_by_name", + "description": "Filter entities by name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[kind]", + "tool_parameter_name": "filter_by_kind", + "description": "Filter entities by kind.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by kind." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[owner]", + "tool_parameter_name": "filter_by_owner", + "description": "Filter entities by owner.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by owner." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[relation][type]", + "tool_parameter_name": "filter_by_relation_type", + "description": "Filter entities by relation type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RelationTypeOwns", + "RelationTypeOwnedBy", + "RelationTypeDependsOn", + "RelationTypeDependencyOf", + "RelationTypePartsOf", + "RelationTypeHasPart", + "RelationTypeOtherOwns", + "RelationTypeOtherOwnedBy", + "RelationTypeImplementedBy", + "RelationTypeImplements" + ], + "properties": null, + "inner_properties": null, + "description": "Filter entities by relation type." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[exclude_snapshot]", + "tool_parameter_name": "exclude_snapshotted_entities", + "description": "Filter entities by excluding snapshotted entities.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter entities by excluding snapshotted entities." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_relationship_data", + "description": "Include relationship data.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "schema", + "raw_schema", + "oncall", + "incident", + "relation" + ], + "properties": null, + "inner_properties": null, + "description": "Include relationship data." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSpanMetrics.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSpanMetrics.json new file mode 100644 index 00000000..759b90fa --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSpanMetrics.json @@ -0,0 +1,91 @@ +{ + "name": "ListSpanMetrics", + "fully_qualified_name": "DatadogApi.ListSpanMetrics@0.1.0", + "description": "Retrieve configured span-based metrics from Datadog.\n\nGet the list of configured span-based metrics along with their definitions from Datadog's APM configuration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListSpansMetrics'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/metrics", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSpans.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSpans.json new file mode 100644 index 00000000..12df834a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSpans.json @@ -0,0 +1,400 @@ +{ + "name": "ListSpans", + "fully_qualified_name": "DatadogApi.ListSpans@0.1.0", + "description": "Fetch spans based on a search query with pagination.\n\nThis tool retrieves spans from Datadog that match a specified search query. Use it to filter and search spans for analysis or monitoring. Note that the endpoint supports paginated results and is subject to rate limits of 300 requests per hour.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "minimum_time_filter", + "required": false, + "description": "The minimum time for the requested spans. Supports ISO8601, date math, and timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter.from" + }, + { + "name": "span_search_query", + "required": false, + "description": "The search query string following the span search syntax to filter spans.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter.query" + }, + { + "name": "end_time_filter", + "required": false, + "description": "The maximum time for requested spans. Supports ISO8601, date math, or timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter.to" + }, + { + "name": "time_offset_seconds", + "required": false, + "description": "The time offset in seconds to apply to the query for adjusting the time frame.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.options.timeOffset" + }, + { + "name": "timezone_option", + "required": false, + "description": "Specify the timezone using GMT, UTC, an offset (e.g., UTC+1), or a Timezone Database ID (e.g., America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.options.timezone" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "A string cursor to fetch the next set of results from the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.page.cursor" + }, + { + "name": "max_number_of_spans", + "required": false, + "description": "Maximum number of spans to return in the response. Integer value expected.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of spans in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.page.limit" + }, + { + "name": "sort_order_for_spans", + "required": false, + "description": "Set the sort order for querying spans. Use 'timestamp' for ascending or '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying spans." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.sort" + }, + { + "name": "resource_type", + "required": false, + "description": "The type of resource; must be set to 'search_request' for the query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "search_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be search_request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListSpans'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/spans/events/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.filter.from", + "tool_parameter_name": "minimum_time_filter", + "description": "The minimum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now-15m", + "documentation_urls": [] + }, + { + "name": "data.attributes.filter.query", + "tool_parameter_name": "span_search_query", + "description": "The search query - following the span search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "data.attributes.filter.to", + "tool_parameter_name": "end_time_filter", + "description": "The maximum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now", + "documentation_urls": [] + }, + { + "name": "data.attributes.options.timeOffset", + "tool_parameter_name": "time_offset_seconds", + "description": "The time offset (in seconds) to apply to the query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.options.timezone", + "tool_parameter_name": "timezone_option", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "UTC", + "documentation_urls": [] + }, + { + "name": "data.attributes.page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.page.limit", + "tool_parameter_name": "max_number_of_spans", + "description": "Maximum number of spans in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of spans in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "data.attributes.sort", + "tool_parameter_name": "sort_order_for_spans", + "description": "Sort parameters when querying spans.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying spans." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of resource. The value should always be search_request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "search_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be search_request." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "search_request", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a spans list.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The object containing the query content.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object containing all the query parameters.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the span search syntax.\",\n \"example\": \"service:web* AND @http.status_code:[200 TO 299]\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested spans, supports date-time ISO8601, date math, and regular timestamps (milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nNote: You should only supply timezone or time offset but not both otherwise the query will fail.\",\n \"properties\": {\n \"timeOffset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging attributes for listing spans.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of spans in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"Sort parameters when querying spans.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"search_request\",\n \"description\": \"The type of resource. The value should always be search_request.\",\n \"enum\": [\n \"search_request\"\n ],\n \"example\": \"search_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SEARCH_REQUEST\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListStandardPatterns.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListStandardPatterns.json new file mode 100644 index 00000000..8a68e74f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListStandardPatterns.json @@ -0,0 +1,91 @@ +{ + "name": "ListStandardPatterns", + "fully_qualified_name": "DatadogApi.ListStandardPatterns@0.1.0", + "description": "Retrieve all standard patterns for sensitive data scanning.\n\nThis tool is used to fetch a list of all standard patterns available for sensitive data scanning with Datadog. Call this tool when you need access to predefined patterns used for identifying sensitive data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListStandardPatterns'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/standard-patterns", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSuppressionRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSuppressionRules.json new file mode 100644 index 00000000..06bd845e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListSuppressionRules.json @@ -0,0 +1,126 @@ +{ + "name": "ListSuppressionRules", + "fully_qualified_name": "DatadogApi.ListSuppressionRules@0.1.0", + "description": "Retrieve the list of security monitoring suppression rules.\n\nThis tool retrieves all the suppression rules configured in Datadog's security monitoring system. Use this tool to view the current set of rules that suppress certain alerts.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "suppression_query_string", + "required": false, + "description": "A query string to filter suppression rules. Use to specify search criteria.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query string." + }, + "inferrable": true, + "http_endpoint_parameter_name": "query" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListSecurityMonitoringSuppressions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "query", + "tool_parameter_name": "suppression_query_string", + "description": "Query string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query string." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTagPipelineRulesets.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTagPipelineRulesets.json new file mode 100644 index 00000000..a9357d0e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTagPipelineRulesets.json @@ -0,0 +1,91 @@ +{ + "name": "ListTagPipelineRulesets", + "fully_qualified_name": "DatadogApi.ListTagPipelineRulesets@0.1.0", + "description": "Retrieve all tag pipeline rulesets for the organization.\n\nThis tool retrieves a comprehensive list of all tag pipeline rulesets associated with the organization. It should be called when you need to examine or manage these rulesets.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListTagPipelinesRulesets'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/tags/enrichment", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTeams.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTeams.json new file mode 100644 index 00000000..518dbb2c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTeams.json @@ -0,0 +1,334 @@ +{ + "name": "ListTeams", + "fully_qualified_name": "DatadogApi.ListTeams@0.1.0", + "description": "Retrieve all teams with optional filters.\n\nFetches a list of all teams, allowing optional filters by keyword or user.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_number", + "required": false, + "description": "The specific page number to return for the list of teams.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "page_size", + "required": false, + "description": "Specify the number of teams to return per page, up to a maximum of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "sort_order", + "required": false, + "description": "Determines the order of the returned teams. Options: 'name', '-name', 'user_count', '-user_count'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "name", + "-name", + "user_count", + "-user_count" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the order of the returned teams" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Specify related resources to include. Options: `team_links`, `user_team_permissions`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Included related resources optionally requested. Allowed enum values: `team_links, user_team_permissions`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "search_query_for_teams", + "required": false, + "description": "Search for teams by name, handle, or team member email.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query. Can be team name, team handle, or email of team member" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[keyword]" + }, + { + "name": "fields_to_fetch", + "required": false, + "description": "List of fields to retrieve for each team.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of fields that need to be fetched." + }, + "inferrable": true, + "http_endpoint_parameter_name": "fields[team]" + }, + { + "name": "include_only_user_teams", + "required": false, + "description": "When true, only teams the current user belongs to are returned.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When true, only returns teams the current user belongs to" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[me]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListTeams'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Specifies the order of the returned teams", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "name", + "-name", + "user_count", + "-user_count" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the order of the returned teams" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Included related resources optionally requested. Allowed enum values: `team_links, user_team_permissions`", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Included related resources optionally requested. Allowed enum values: `team_links, user_team_permissions`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[keyword]", + "tool_parameter_name": "search_query_for_teams", + "description": "Search query. Can be team name, team handle, or email of team member", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query. Can be team name, team handle, or email of team member" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[me]", + "tool_parameter_name": "include_only_user_teams", + "description": "When true, only returns teams the current user belongs to", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When true, only returns teams the current user belongs to" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "fields[team]", + "tool_parameter_name": "fields_to_fetch", + "description": "List of fields that need to be fetched.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of fields that need to be fetched." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTenantBasedHandles.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTenantBasedHandles.json new file mode 100644 index 00000000..cd4f30b1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListTenantBasedHandles.json @@ -0,0 +1,159 @@ +{ + "name": "ListTenantBasedHandles", + "fully_qualified_name": "DatadogApi.ListTenantBasedHandles@0.1.0", + "description": "Retrieve Datadog's tenant-based handles for MS Teams integration.\n\nCall this tool to obtain a list of all tenant-based handles configured in the Datadog Microsoft Teams integration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "tenant_identifier", + "required": false, + "description": "The ID of your tenant in Datadog to retrieve handles for MS Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "tenant_id" + }, + { + "name": "tenant_handle_name", + "required": false, + "description": "The name of your tenant-based handle in the Datadog Microsoft Teams integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "name" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListTenantBasedHandles'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "tenant_id", + "tool_parameter_name": "tenant_identifier", + "description": "Your tenant id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant id." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "name", + "tool_parameter_name": "tenant_handle_name", + "description": "Your tenant-based handle name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle name." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListUserAppKeys.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListUserAppKeys.json new file mode 100644 index 00000000..b439b4cd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListUserAppKeys.json @@ -0,0 +1,338 @@ +{ + "name": "ListUserAppKeys", + "fully_qualified_name": "DatadogApi.ListUserAppKeys@0.1.0", + "description": "Retrieve all application keys for the current user.\n\nThis tool retrieves a list of all application keys associated with the current user in Datadog. It should be called when there's a need to view or manage these application keys.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "Specify the number of application keys per page. Maximum value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "Specify the page number to retrieve application keys from.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_application_keys", + "required": false, + "description": "Specify the attribute to sort the application keys. Use a minus sign for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "filter_by_string", + "required": false, + "description": "Filter application keys by the specified string to narrow down the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter application keys by the specified string." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "created_after_date", + "required": false, + "description": "Include application keys created on or after this date in the results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or after the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][start]" + }, + { + "name": "filter_created_at_end_date", + "required": false, + "description": "Include only application keys created on or before this date. Format: YYYY-MM-DD.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or before the specified date." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[created_at][end]" + }, + { + "name": "include_related_resources", + "required": false, + "description": "Specify 'owned_by' to include related resources in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCurrentUserApplicationKeys'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/current_user/application_keys", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_application_keys", + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "-created_at", + "last4", + "-last4", + "name", + "-name" + ], + "properties": null, + "inner_properties": null, + "description": "Application key attribute used to sort results. Sort order is ascending\nby default. In order to specify a descending sort, prefix the\nattribute with a minus sign." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "name", + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "filter_by_string", + "description": "Filter application keys by the specified string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter application keys by the specified string." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][start]", + "tool_parameter_name": "created_after_date", + "description": "Only include application keys created on or after the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or after the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[created_at][end]", + "tool_parameter_name": "filter_created_at_end_date", + "description": "Only include application keys created on or before the specified date.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only include application keys created on or before the specified date." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "include", + "tool_parameter_name": "include_related_resources", + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Resource path for related resources to include in the response. Only `owned_by` is supported." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListUserRoles.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListUserRoles.json new file mode 100644 index 00000000..f311e655 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListUserRoles.json @@ -0,0 +1,272 @@ +{ + "name": "ListUserRoles", + "fully_qualified_name": "DatadogApi.ListUserRoles@0.1.0", + "description": "Retrieve all roles from Datadog.\n\nThis tool fetches all roles from Datadog, providing their names and unique identifiers. It should be called when there's a need to view or manage role information.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "The number of roles to return per page, with a maximum of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_roles_by", + "required": false, + "description": "Sort roles based on a specified field. Use prefixes to set ascending or descending order, e.g., '-name' for descending by name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "name", + "-name", + "modified_at", + "-modified_at", + "user_count", + "-user_count" + ], + "properties": null, + "inner_properties": null, + "description": "Sort roles depending on the given field. Sort order is **ascending** by default.\nSort order is **descending** if the field is prefixed by a negative sign, for example:\n`sort=-name`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "role_filter_string", + "required": false, + "description": "Filter roles using a specific string to match their details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all roles by the given string." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "role_id_filter", + "required": false, + "description": "List of role IDs to filter roles by, supporting comma-separated values.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all roles by the given list of role IDs." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter[id]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListRoles'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_roles_by", + "description": "Sort roles depending on the given field. Sort order is **ascending** by default.\nSort order is **descending** if the field is prefixed by a negative sign, for example:\n`sort=-name`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "name", + "-name", + "modified_at", + "-modified_at", + "user_count", + "-user_count" + ], + "properties": null, + "inner_properties": null, + "description": "Sort roles depending on the given field. Sort order is **ascending** by default.\nSort order is **descending** if the field is prefixed by a negative sign, for example:\n`sort=-name`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": "name", + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "role_filter_string", + "description": "Filter all roles by the given string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all roles by the given string." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter[id]", + "tool_parameter_name": "role_id_filter", + "description": "Filter all roles by the given list of role IDs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter all roles by the given list of role IDs." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWafCustomRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWafCustomRules.json new file mode 100644 index 00000000..79c2b471 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWafCustomRules.json @@ -0,0 +1,91 @@ +{ + "name": "ListWafCustomRules", + "fully_qualified_name": "DatadogApi.ListWafCustomRules@0.1.0", + "description": "Retrieve a list of WAF custom rules.\n\nUse this tool to get a list of custom rules for the Web Application Firewall (WAF) in Datadog. It's useful for monitoring and managing security configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListApplicationSecurityWAFCustomRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWafExclusionFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWafExclusionFilters.json new file mode 100644 index 00000000..56bc4868 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWafExclusionFilters.json @@ -0,0 +1,91 @@ +{ + "name": "ListWafExclusionFilters", + "fully_qualified_name": "DatadogApi.ListWafExclusionFilters@0.1.0", + "description": "Retrieve a list of WAF exclusion filters.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListApplicationSecurityWafExclusionFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkflowInstances.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkflowInstances.json new file mode 100644 index 00000000..6561fdbd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkflowInstances.json @@ -0,0 +1,192 @@ +{ + "name": "ListWorkflowInstances", + "fully_qualified_name": "DatadogApi.ListWorkflowInstances@0.1.0", + "description": "Retrieve all instances of a specific workflow from Datadog.\n\nUse this tool to get a list of all instances for a specified workflow within Datadog. Ensure you have a registered application key or the necessary permissions configured in the UI.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_id", + "required": true, + "description": "The ID of the workflow to retrieve instances for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "inferrable": true, + "http_endpoint_parameter_name": "workflow_id" + }, + { + "name": "page_size", + "required": false, + "description": "Size for a given page. Must be an integer with a maximum value of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return when listing workflow instances.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListWorkflowInstances'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows/{workflow_id}/instances", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "workflow_id", + "tool_parameter_name": "workflow_id", + "description": "The ID of the workflow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkloadProtectionAgentRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkloadProtectionAgentRules.json new file mode 100644 index 00000000..a91cc67e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkloadProtectionAgentRules.json @@ -0,0 +1,126 @@ +{ + "name": "ListWorkloadProtectionAgentRules", + "fully_qualified_name": "DatadogApi.ListWorkloadProtectionAgentRules@0.1.0", + "description": "Retrieve the list of Workload Protection agent rules.\n\nUse this tool to get the current list of agent rules for workload protection from Datadog. This is not available for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_policy_id", + "required": false, + "description": "The ID of the Agent policy to retrieve the list of workload protection agent rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ListCSMThreatsAgentRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "agent_policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkloadProtectionPolicies.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkloadProtectionPolicies.json new file mode 100644 index 00000000..4b6d12f3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ListWorkloadProtectionPolicies.json @@ -0,0 +1,91 @@ +{ + "name": "ListWorkloadProtectionPolicies", + "fully_qualified_name": "DatadogApi.ListWorkloadProtectionPolicies@0.1.0", + "description": "Retrieve a list of Workload Protection policies from Datadog.\n\nThis tool calls the Datadog API to retrieve a list of Workload Protection policies. It is used to obtain information about the configurations for workload security. Note: This endpoint is not available for the US1-FED site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'ListCSMThreatsAgentPolicies'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/policy", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageBudget.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageBudget.json new file mode 100644 index 00000000..0cd82433 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageBudget.json @@ -0,0 +1,456 @@ +{ + "name": "ManageBudget", + "fully_qualified_name": "DatadogApi.ManageBudget@0.1.0", + "description": "Create or update a budget in Datadog.\n\nThis tool allows you to create a new budget or update an existing budget using the Datadog API.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "budget_data", + "required": true, + "description": "A JSON object containing all necessary details for creating or updating a budget. Include attributes like the creation timestamp, user id, budget amounts, start and end months, and any specific tags. Ensure the 'type' field is set to 'budget'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created_at": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timestamp when the budget was created." + }, + "created_by": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the user that created the budget." + }, + "end_month": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The month when the budget ends." + }, + "entries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `amount` of the budget entry." + }, + "month": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `month` of the budget entry." + }, + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The key of the tag." + }, + "tag_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the tag." + } + }, + "description": "The `tag_filters` of the budget entry." + } + }, + "description": "The entries of the budget." + }, + "metrics_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The cost query used to track against the budget." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the budget." + }, + "org_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the org the budget belongs to." + }, + "start_month": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The month when the budget starts." + }, + "total_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sum of all budget entries' amounts." + }, + "updated_at": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timestamp when the budget was last updated." + }, + "updated_by": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the user that created the budget." + } + }, + "inner_properties": null, + "description": "The attributes of a budget." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `BudgetWithEntriesData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the object, must be `budget`." + } + }, + "inner_properties": null, + "description": "A budget and all its entries." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpsertBudget'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/budget", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "budget_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created_at": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timestamp when the budget was created." + }, + "created_by": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the user that created the budget." + }, + "end_month": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The month when the budget ends." + }, + "entries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `amount` of the budget entry." + }, + "month": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `month` of the budget entry." + }, + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The key of the tag." + }, + "tag_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the tag." + } + }, + "description": "The `tag_filters` of the budget entry." + } + }, + "description": "The entries of the budget." + }, + "metrics_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The cost query used to track against the budget." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the budget." + }, + "org_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the org the budget belongs to." + }, + "start_month": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The month when the budget starts." + }, + "total_amount": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sum of all budget entries' amounts." + }, + "updated_at": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timestamp when the budget was last updated." + }, + "updated_by": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the user that created the budget." + } + }, + "inner_properties": null, + "description": "The attributes of a budget." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `BudgetWithEntriesData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the object, must be `budget`." + } + }, + "inner_properties": null, + "description": "A budget and all its entries." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of the `BudgetWithEntries` object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A budget and all its entries.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes of a budget.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"The timestamp when the budget was created.\",\n \"example\": 1738258683590,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"created_by\": {\n \"description\": \"The id of the user that created the budget.\",\n \"example\": \"00000000-0a0a-0a0a-aaa0-00000000000a\",\n \"type\": \"string\"\n },\n \"end_month\": {\n \"description\": \"The month when the budget ends.\",\n \"example\": 202502,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"entries\": {\n \"description\": \"The entries of the budget.\",\n \"items\": {\n \"description\": \"The entry of a budget.\",\n \"properties\": {\n \"amount\": {\n \"description\": \"The `amount` of the budget entry.\",\n \"example\": 500,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"month\": {\n \"description\": \"The `month` of the budget entry.\",\n \"example\": 202501,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tag_filters\": {\n \"description\": \"The `tag_filters` of the budget entry.\",\n \"items\": {\n \"description\": \"Tag filter for the budget's entries.\",\n \"properties\": {\n \"tag_key\": {\n \"description\": \"The key of the tag.\",\n \"example\": \"service\",\n \"type\": \"string\"\n },\n \"tag_value\": {\n \"description\": \"The value of the tag.\",\n \"example\": \"ec2\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"metrics_query\": {\n \"description\": \"The cost query used to track against the budget.\",\n \"example\": \"aws.cost.amortized{service:ec2} by {service}\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the budget.\",\n \"example\": \"my budget\",\n \"type\": \"string\"\n },\n \"org_id\": {\n \"description\": \"The id of the org the budget belongs to.\",\n \"example\": 123,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"start_month\": {\n \"description\": \"The month when the budget starts.\",\n \"example\": 202501,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"total_amount\": {\n \"description\": \"The sum of all budget entries' amounts.\",\n \"example\": 1000,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"updated_at\": {\n \"description\": \"The timestamp when the budget was last updated.\",\n \"example\": 1738258683590,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"updated_by\": {\n \"description\": \"The id of the user that created the budget.\",\n \"example\": \"00000000-0a0a-0a0a-aaa0-00000000000a\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `BudgetWithEntriesData` `id`.\",\n \"example\": \"00000000-0a0a-0a0a-aaa0-00000000000a\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the object, must be `budget`.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageIncidentAttachments.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageIncidentAttachments.json new file mode 100644 index 00000000..6bdb4797 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageIncidentAttachments.json @@ -0,0 +1,264 @@ +{ + "name": "ManageIncidentAttachments", + "fully_qualified_name": "DatadogApi.ManageIncidentAttachments@0.1.0", + "description": "Manage attachments for a specific incident in bulk.\n\nUse this tool to create, update, or delete multiple attachments related to a specific incident. It is called when adjustments to the attachments of an incident are needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The UUID of the incident to manage its attachments.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_attachments_payload", + "required": true, + "description": "A JSON array specifying attachments to create, update, or delete. Use without 'id' to create, without 'attributes' to delete, and both 'id' and 'attributes' to update.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Incident attachment attributes." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the incident attachment." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_attachments" + ], + "properties": null, + "inner_properties": null, + "description": "The incident attachment resource type." + } + }, + "description": "An array of incident attachments. An attachment object without an \"id\" key indicates that you want to\ncreate that attachment. An attachment object without an \"attributes\" key indicates that you want to\ndelete that attachment. An attachment object with both the \"id\" key and a populated \"attributes\" object\nindicates that you want to update that attachment." + } + }, + "inner_properties": null, + "description": "Incident Attachment Payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "related_objects_inclusion", + "required": false, + "description": "List of related object types to include in the response (e.g., comments, attachments).", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects are included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIncidentAttachments'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/attachments", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "related_objects_inclusion", + "description": "Specifies which types of related objects are included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects are included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_attachments_payload", + "description": "Incident Attachment Payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Incident attachment attributes." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the incident attachment." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_attachments" + ], + "properties": null, + "inner_properties": null, + "description": "The incident attachment resource type." + } + }, + "description": "An array of incident attachments. An attachment object without an \"id\" key indicates that you want to\ncreate that attachment. An attachment object without an \"attributes\" key indicates that you want to\ndelete that attachment. An attachment object with both the \"id\" key and a populated \"attributes\" object\nindicates that you want to update that attachment." + } + }, + "inner_properties": null, + "description": "Incident Attachment Payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The update request for an incident's attachments.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An array of incident attachments. An attachment object without an \\\"id\\\" key indicates that you want to\\ncreate that attachment. An attachment object without an \\\"attributes\\\" key indicates that you want to\\ndelete that attachment. An attachment object with both the \\\"id\\\" key and a populated \\\"attributes\\\" object\\nindicates that you want to update that attachment.\",\n \"example\": [\n {\n \"attributes\": {\n \"attachment\": {\n \"documentUrl\": \"https://app.datadoghq.com/notebook/123\",\n \"title\": \"Postmortem IR-123\"\n },\n \"attachment_type\": \"postmortem\"\n },\n \"id\": \"00000000-abcd-0002-0000-000000000000\",\n \"type\": \"incident_attachments\"\n },\n {\n \"attributes\": {\n \"attachment\": {\n \"documentUrl\": \"https://www.example.com/webstore-failure-runbook\",\n \"title\": \"Runbook for webstore service failures\"\n },\n \"attachment_type\": \"link\"\n },\n \"type\": \"incident_attachments\"\n },\n {\n \"id\": \"00000000-abcd-0003-0000-000000000000\",\n \"type\": \"incident_attachments\"\n }\n ],\n \"items\": {\n \"description\": \"A single incident attachment.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Incident attachment attributes.\",\n \"oneOf\": [\n {\n \"description\": \"The attributes object for a postmortem attachment.\",\n \"properties\": {\n \"attachment\": {\n \"description\": \"The postmortem attachment.\",\n \"properties\": {\n \"documentUrl\": {\n \"description\": \"The URL of this notebook attachment.\",\n \"example\": \"https://app.datadoghq.com/notebook/123\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"The title of this postmortem attachment.\",\n \"example\": \"Postmortem IR-123\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"documentUrl\",\n \"title\"\n ],\n \"type\": \"object\"\n },\n \"attachment_type\": {\n \"default\": \"postmortem\",\n \"description\": \"The type of postmortem attachment attributes.\",\n \"enum\": [\n \"postmortem\"\n ],\n \"example\": \"postmortem\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"POSTMORTEM\"\n ]\n }\n },\n \"required\": [\n \"attachment_type\",\n \"attachment\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The attributes object for a link attachment.\",\n \"properties\": {\n \"attachment\": {\n \"description\": \"The link attachment.\",\n \"properties\": {\n \"documentUrl\": {\n \"description\": \"The URL of this link attachment.\",\n \"example\": \"https://www.example.com/webstore-failure-runbook\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"The title of this link attachment.\",\n \"example\": \"Runbook for webstore service failures\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"documentUrl\",\n \"title\"\n ],\n \"type\": \"object\"\n },\n \"attachment_type\": {\n \"default\": \"link\",\n \"description\": \"The type of link attachment attributes.\",\n \"enum\": [\n \"link\"\n ],\n \"example\": \"link\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LINK\"\n ]\n },\n \"modified\": {\n \"description\": \"Timestamp when the incident attachment link was last modified.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"attachment_type\",\n \"attachment\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"id\": {\n \"description\": \"A unique identifier that represents the incident attachment.\",\n \"example\": \"00000000-abcd-0001-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"incident_attachments\",\n \"description\": \"The incident attachment resource type.\",\n \"enum\": [\n \"incident_attachments\"\n ],\n \"example\": \"incident_attachments\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_ATTACHMENTS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident Attachment Payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageSoftwareCatalogEntity.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageSoftwareCatalogEntity.json new file mode 100644 index 00000000..5e99fcb8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ManageSoftwareCatalogEntity.json @@ -0,0 +1,126 @@ +{ + "name": "ManageSoftwareCatalogEntity", + "fully_qualified_name": "DatadogApi.ManageSoftwareCatalogEntity@0.1.0", + "description": "Create or update entities in the Software Catalog.\n\nUse this tool to either create a new entity or update an existing one within the Software Catalog in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "entity_data", + "required": true, + "description": "Entity data in YAML or JSON format to create or update in the Software Catalog.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Entity YAML or JSON." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpsertCatalogEntity'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/catalog/entity", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "entity_data", + "description": "Entity YAML or JSON.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Entity YAML or JSON." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create or update entity request.\",\n \"oneOf\": [\n {\n \"description\": \"Entity schema v3.\",\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"Schema for service entities.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"The version of the schema data that was used to populate this entity's data. This could be via the API, Terraform, or YAML file in a repository. The field is known as schema-version in the previous version.\",\n \"enum\": [\n \"v3\",\n \"v2.2\",\n \"v2.1\",\n \"v2\"\n ],\n \"example\": \"v3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V3\",\n \"V2_2\",\n \"V2_1\",\n \"V2\"\n ]\n },\n \"datadog\": {\n \"additionalProperties\": false,\n \"description\": \"Datadog product integrations for the service entity.\",\n \"properties\": {\n \"codeLocations\": {\n \"additionalProperties\": false,\n \"description\": \"Schema for mapping source code locations to an entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Code location item.\",\n \"properties\": {\n \"paths\": {\n \"description\": \"The paths (glob) to the source code of the service.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"repositoryURL\": {\n \"description\": \"The repository path of the source code of the entity.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"events\": {\n \"additionalProperties\": false,\n \"description\": \"Events associations.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Events association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"logs\": {\n \"additionalProperties\": false,\n \"description\": \"Logs association.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Log association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"performanceData\": {\n \"additionalProperties\": false,\n \"description\": \"Performance stats association.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of APM entity tags that associates the APM Stats data with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"pipelines\": {\n \"additionalProperties\": false,\n \"description\": \"CI Pipelines association.\",\n \"properties\": {\n \"fingerprints\": {\n \"description\": \"A list of CI Fingerprints that associate CI Pipelines with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.\",\n \"type\": \"object\"\n },\n \"integrations\": {\n \"additionalProperties\": false,\n \"description\": \"A base schema for defining third-party integrations.\",\n \"properties\": {\n \"opsgenie\": {\n \"additionalProperties\": false,\n \"description\": \"An Opsgenie integration schema.\",\n \"properties\": {\n \"region\": {\n \"description\": \"The region for the Opsgenie integration.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"serviceURL\": {\n \"description\": \"The service URL for the Opsgenie integration.\",\n \"example\": \"https://www.opsgenie.com/service/shopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"additionalProperties\": false,\n \"description\": \"A PagerDuty integration schema.\",\n \"properties\": {\n \"serviceURL\": {\n \"description\": \"The service URL for the PagerDuty integration.\",\n \"example\": \"https://www.pagerduty.com/service-directory/Pshopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kind\": {\n \"description\": \"The definition of Entity V3 Service Kind object.\",\n \"enum\": [\n \"service\"\n ],\n \"example\": \"service\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SERVICE\"\n ]\n },\n \"metadata\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata object.\",\n \"properties\": {\n \"additionalOwners\": {\n \"additionalProperties\": false,\n \"description\": \"The additional owners of the entity, usually a team.\",\n \"items\": {\n \"description\": \"The definition of Entity V3 Metadata Additional Owners Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Team name.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Team type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"contacts\": {\n \"additionalProperties\": false,\n \"description\": \"A list of contacts for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Contacts Items object.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://slack/\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact name.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"example\": \"slack\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"Short description of the entity. The UI can leverage the description for display.\",\n \"type\": \"string\"\n },\n \"displayName\": {\n \"description\": \"User friendly name of the entity. The UI can leverage the display name for display.\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A read-only globally unique identifier for the entity generated by Datadog. User supplied values are ignored.\",\n \"example\": \"4b163705-23c0-4573-b2fb-f6cea2163fcb\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"inheritFrom\": {\n \"description\": \"The entity reference from which to inherit metadata\",\n \"example\": \"application:default/myapp\",\n \"type\": \"string\"\n },\n \"links\": {\n \"additionalProperties\": false,\n \"description\": \"A list of links for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Links Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"mylink\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Link provider.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"other\",\n \"description\": \"Link type.\",\n \"example\": \"link\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://mylink\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"managed\": {\n \"additionalProperties\": {},\n \"description\": \"A read-only set of Datadog managed attributes generated by Datadog. User supplied values are ignored.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Unique name given to an entity under the kind/namespace.\",\n \"example\": \"myService\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is a part of unique identifier. It has a default value of 'default'.\",\n \"example\": \"default\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"owner\": {\n \"description\": \"The owner of the entity, usually a team.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"this:tag\",\n \"that:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"spec\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Service Spec object.\",\n \"properties\": {\n \"componentOf\": {\n \"description\": \"A list of components the service is a part of\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"dependsOn\": {\n \"description\": \"A list of components the service depends on.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"languages\": {\n \"description\": \"The service's programming language.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"lifecycle\": {\n \"description\": \"The lifecycle state of the component.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"tier\": {\n \"description\": \"The importance of the component.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of service.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"metadata\"\n ],\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"Schema for datastore entities.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"The version of the schema data that was used to populate this entity's data. This could be via the API, Terraform, or YAML file in a repository. The field is known as schema-version in the previous version.\",\n \"enum\": [\n \"v3\",\n \"v2.2\",\n \"v2.1\",\n \"v2\"\n ],\n \"example\": \"v3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V3\",\n \"V2_2\",\n \"V2_1\",\n \"V2\"\n ]\n },\n \"datadog\": {\n \"additionalProperties\": false,\n \"description\": \"Datadog product integrations for the datastore entity.\",\n \"properties\": {\n \"events\": {\n \"additionalProperties\": false,\n \"description\": \"Events associations.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Events association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"logs\": {\n \"additionalProperties\": false,\n \"description\": \"Logs association.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Log association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"performanceData\": {\n \"additionalProperties\": false,\n \"description\": \"Performance stats association.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of APM entity tags that associates the APM Stats data with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Custom extensions. This is the free-formed field to send client side metadata. No Datadog features are affected by this field.\",\n \"type\": \"object\"\n },\n \"integrations\": {\n \"additionalProperties\": false,\n \"description\": \"A base schema for defining third-party integrations.\",\n \"properties\": {\n \"opsgenie\": {\n \"additionalProperties\": false,\n \"description\": \"An Opsgenie integration schema.\",\n \"properties\": {\n \"region\": {\n \"description\": \"The region for the Opsgenie integration.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"serviceURL\": {\n \"description\": \"The service URL for the Opsgenie integration.\",\n \"example\": \"https://www.opsgenie.com/service/shopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"additionalProperties\": false,\n \"description\": \"A PagerDuty integration schema.\",\n \"properties\": {\n \"serviceURL\": {\n \"description\": \"The service URL for the PagerDuty integration.\",\n \"example\": \"https://www.pagerduty.com/service-directory/Pshopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kind\": {\n \"description\": \"The definition of Entity V3 Datastore Kind object.\",\n \"enum\": [\n \"datastore\"\n ],\n \"example\": \"datastore\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATASTORE\"\n ]\n },\n \"metadata\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata object.\",\n \"properties\": {\n \"additionalOwners\": {\n \"additionalProperties\": false,\n \"description\": \"The additional owners of the entity, usually a team.\",\n \"items\": {\n \"description\": \"The definition of Entity V3 Metadata Additional Owners Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Team name.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Team type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"contacts\": {\n \"additionalProperties\": false,\n \"description\": \"A list of contacts for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Contacts Items object.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://slack/\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact name.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"example\": \"slack\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"Short description of the entity. The UI can leverage the description for display.\",\n \"type\": \"string\"\n },\n \"displayName\": {\n \"description\": \"User friendly name of the entity. The UI can leverage the display name for display.\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A read-only globally unique identifier for the entity generated by Datadog. User supplied values are ignored.\",\n \"example\": \"4b163705-23c0-4573-b2fb-f6cea2163fcb\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"inheritFrom\": {\n \"description\": \"The entity reference from which to inherit metadata\",\n \"example\": \"application:default/myapp\",\n \"type\": \"string\"\n },\n \"links\": {\n \"additionalProperties\": false,\n \"description\": \"A list of links for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Links Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"mylink\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Link provider.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"other\",\n \"description\": \"Link type.\",\n \"example\": \"link\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://mylink\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"managed\": {\n \"additionalProperties\": {},\n \"description\": \"A read-only set of Datadog managed attributes generated by Datadog. User supplied values are ignored.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Unique name given to an entity under the kind/namespace.\",\n \"example\": \"myService\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is a part of unique identifier. It has a default value of 'default'.\",\n \"example\": \"default\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"owner\": {\n \"description\": \"The owner of the entity, usually a team.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"this:tag\",\n \"that:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"spec\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Datastore Spec object.\",\n \"properties\": {\n \"componentOf\": {\n \"description\": \"A list of components the datastore is a part of\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"lifecycle\": {\n \"description\": \"The lifecycle state of the datastore.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"tier\": {\n \"description\": \"The importance of the datastore.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of datastore.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"metadata\"\n ],\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"Schema for queue entities.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"The version of the schema data that was used to populate this entity's data. This could be via the API, Terraform, or YAML file in a repository. The field is known as schema-version in the previous version.\",\n \"enum\": [\n \"v3\",\n \"v2.2\",\n \"v2.1\",\n \"v2\"\n ],\n \"example\": \"v3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V3\",\n \"V2_2\",\n \"V2_1\",\n \"V2\"\n ]\n },\n \"datadog\": {\n \"additionalProperties\": false,\n \"description\": \"Datadog product integrations for the datastore entity.\",\n \"properties\": {\n \"events\": {\n \"additionalProperties\": false,\n \"description\": \"Events associations.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Events association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"logs\": {\n \"additionalProperties\": false,\n \"description\": \"Logs association.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Log association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"performanceData\": {\n \"additionalProperties\": false,\n \"description\": \"Performance stats association.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of APM entity tags that associates the APM Stats data with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.\",\n \"type\": \"object\"\n },\n \"integrations\": {\n \"additionalProperties\": false,\n \"description\": \"A base schema for defining third-party integrations.\",\n \"properties\": {\n \"opsgenie\": {\n \"additionalProperties\": false,\n \"description\": \"An Opsgenie integration schema.\",\n \"properties\": {\n \"region\": {\n \"description\": \"The region for the Opsgenie integration.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"serviceURL\": {\n \"description\": \"The service URL for the Opsgenie integration.\",\n \"example\": \"https://www.opsgenie.com/service/shopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"additionalProperties\": false,\n \"description\": \"A PagerDuty integration schema.\",\n \"properties\": {\n \"serviceURL\": {\n \"description\": \"The service URL for the PagerDuty integration.\",\n \"example\": \"https://www.pagerduty.com/service-directory/Pshopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kind\": {\n \"description\": \"The definition of Entity V3 Queue Kind object.\",\n \"enum\": [\n \"queue\"\n ],\n \"example\": \"queue\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"QUEUE\"\n ]\n },\n \"metadata\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata object.\",\n \"properties\": {\n \"additionalOwners\": {\n \"additionalProperties\": false,\n \"description\": \"The additional owners of the entity, usually a team.\",\n \"items\": {\n \"description\": \"The definition of Entity V3 Metadata Additional Owners Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Team name.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Team type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"contacts\": {\n \"additionalProperties\": false,\n \"description\": \"A list of contacts for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Contacts Items object.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://slack/\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact name.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"example\": \"slack\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"Short description of the entity. The UI can leverage the description for display.\",\n \"type\": \"string\"\n },\n \"displayName\": {\n \"description\": \"User friendly name of the entity. The UI can leverage the display name for display.\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A read-only globally unique identifier for the entity generated by Datadog. User supplied values are ignored.\",\n \"example\": \"4b163705-23c0-4573-b2fb-f6cea2163fcb\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"inheritFrom\": {\n \"description\": \"The entity reference from which to inherit metadata\",\n \"example\": \"application:default/myapp\",\n \"type\": \"string\"\n },\n \"links\": {\n \"additionalProperties\": false,\n \"description\": \"A list of links for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Links Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"mylink\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Link provider.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"other\",\n \"description\": \"Link type.\",\n \"example\": \"link\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://mylink\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"managed\": {\n \"additionalProperties\": {},\n \"description\": \"A read-only set of Datadog managed attributes generated by Datadog. User supplied values are ignored.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Unique name given to an entity under the kind/namespace.\",\n \"example\": \"myService\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is a part of unique identifier. It has a default value of 'default'.\",\n \"example\": \"default\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"owner\": {\n \"description\": \"The owner of the entity, usually a team.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"this:tag\",\n \"that:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"spec\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Queue Spec object.\",\n \"properties\": {\n \"componentOf\": {\n \"description\": \"A list of components the queue is a part of\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"lifecycle\": {\n \"description\": \"The lifecycle state of the queue.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"tier\": {\n \"description\": \"The importance of the queue.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of queue.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"metadata\"\n ],\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"Schema for system entities.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"The version of the schema data that was used to populate this entity's data. This could be via the API, Terraform, or YAML file in a repository. The field is known as schema-version in the previous version.\",\n \"enum\": [\n \"v3\",\n \"v2.2\",\n \"v2.1\",\n \"v2\"\n ],\n \"example\": \"v3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V3\",\n \"V2_2\",\n \"V2_1\",\n \"V2\"\n ]\n },\n \"datadog\": {\n \"additionalProperties\": false,\n \"description\": \"Datadog product integrations for the service entity.\",\n \"properties\": {\n \"events\": {\n \"additionalProperties\": false,\n \"description\": \"Events associations.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Events association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"logs\": {\n \"additionalProperties\": false,\n \"description\": \"Logs association.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Log association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"performanceData\": {\n \"additionalProperties\": false,\n \"description\": \"Performance stats association.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of APM entity tags that associates the APM Stats data with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"pipelines\": {\n \"additionalProperties\": false,\n \"description\": \"CI Pipelines association.\",\n \"properties\": {\n \"fingerprints\": {\n \"description\": \"A list of CI Fingerprints that associate CI Pipelines with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.\",\n \"type\": \"object\"\n },\n \"integrations\": {\n \"additionalProperties\": false,\n \"description\": \"A base schema for defining third-party integrations.\",\n \"properties\": {\n \"opsgenie\": {\n \"additionalProperties\": false,\n \"description\": \"An Opsgenie integration schema.\",\n \"properties\": {\n \"region\": {\n \"description\": \"The region for the Opsgenie integration.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"serviceURL\": {\n \"description\": \"The service URL for the Opsgenie integration.\",\n \"example\": \"https://www.opsgenie.com/service/shopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"additionalProperties\": false,\n \"description\": \"A PagerDuty integration schema.\",\n \"properties\": {\n \"serviceURL\": {\n \"description\": \"The service URL for the PagerDuty integration.\",\n \"example\": \"https://www.pagerduty.com/service-directory/Pshopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kind\": {\n \"description\": \"The definition of Entity V3 System Kind object.\",\n \"enum\": [\n \"system\"\n ],\n \"example\": \"system\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SYSTEM\"\n ]\n },\n \"metadata\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata object.\",\n \"properties\": {\n \"additionalOwners\": {\n \"additionalProperties\": false,\n \"description\": \"The additional owners of the entity, usually a team.\",\n \"items\": {\n \"description\": \"The definition of Entity V3 Metadata Additional Owners Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Team name.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Team type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"contacts\": {\n \"additionalProperties\": false,\n \"description\": \"A list of contacts for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Contacts Items object.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://slack/\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact name.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"example\": \"slack\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"Short description of the entity. The UI can leverage the description for display.\",\n \"type\": \"string\"\n },\n \"displayName\": {\n \"description\": \"User friendly name of the entity. The UI can leverage the display name for display.\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A read-only globally unique identifier for the entity generated by Datadog. User supplied values are ignored.\",\n \"example\": \"4b163705-23c0-4573-b2fb-f6cea2163fcb\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"inheritFrom\": {\n \"description\": \"The entity reference from which to inherit metadata\",\n \"example\": \"application:default/myapp\",\n \"type\": \"string\"\n },\n \"links\": {\n \"additionalProperties\": false,\n \"description\": \"A list of links for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Links Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"mylink\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Link provider.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"other\",\n \"description\": \"Link type.\",\n \"example\": \"link\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://mylink\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"managed\": {\n \"additionalProperties\": {},\n \"description\": \"A read-only set of Datadog managed attributes generated by Datadog. User supplied values are ignored.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Unique name given to an entity under the kind/namespace.\",\n \"example\": \"myService\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is a part of unique identifier. It has a default value of 'default'.\",\n \"example\": \"default\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"owner\": {\n \"description\": \"The owner of the entity, usually a team.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"this:tag\",\n \"that:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"spec\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 System Spec object.\",\n \"properties\": {\n \"components\": {\n \"description\": \"A list of components belongs to the system.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"lifecycle\": {\n \"description\": \"The lifecycle state of the component.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"tier\": {\n \"description\": \"An entity reference to the owner of the component.\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"metadata\"\n ],\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"Schema for API entities.\",\n \"properties\": {\n \"apiVersion\": {\n \"description\": \"The version of the schema data that was used to populate this entity's data. This could be via the API, Terraform, or YAML file in a repository. The field is known as schema-version in the previous version.\",\n \"enum\": [\n \"v3\",\n \"v2.2\",\n \"v2.1\",\n \"v2\"\n ],\n \"example\": \"v3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"V3\",\n \"V2_2\",\n \"V2_1\",\n \"V2\"\n ]\n },\n \"datadog\": {\n \"additionalProperties\": false,\n \"description\": \"Datadog product integrations for the API entity.\",\n \"properties\": {\n \"codeLocations\": {\n \"additionalProperties\": false,\n \"description\": \"Schema for mapping source code locations to an entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Code location item.\",\n \"properties\": {\n \"paths\": {\n \"description\": \"The paths (glob) to the source code of the service.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"repositoryURL\": {\n \"description\": \"The repository path of the source code of the entity.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"events\": {\n \"additionalProperties\": false,\n \"description\": \"Events associations.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Events association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"logs\": {\n \"additionalProperties\": false,\n \"description\": \"Logs association.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"Log association item.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query to run.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"performanceData\": {\n \"additionalProperties\": false,\n \"description\": \"Performance stats association.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of APM entity tags that associates the APM Stats data with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"pipelines\": {\n \"additionalProperties\": false,\n \"description\": \"CI Pipelines association.\",\n \"properties\": {\n \"fingerprints\": {\n \"description\": \"A list of CI Fingerprints that associate CI Pipelines with the entity.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"extensions\": {\n \"additionalProperties\": {},\n \"description\": \"Custom extensions. This is the free-formed field to send client-side metadata. No Datadog features are affected by this field.\",\n \"type\": \"object\"\n },\n \"integrations\": {\n \"additionalProperties\": false,\n \"description\": \"A base schema for defining third-party integrations.\",\n \"properties\": {\n \"opsgenie\": {\n \"additionalProperties\": false,\n \"description\": \"An Opsgenie integration schema.\",\n \"properties\": {\n \"region\": {\n \"description\": \"The region for the Opsgenie integration.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"serviceURL\": {\n \"description\": \"The service URL for the Opsgenie integration.\",\n \"example\": \"https://www.opsgenie.com/service/shopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n },\n \"pagerduty\": {\n \"additionalProperties\": false,\n \"description\": \"A PagerDuty integration schema.\",\n \"properties\": {\n \"serviceURL\": {\n \"description\": \"The service URL for the PagerDuty integration.\",\n \"example\": \"https://www.pagerduty.com/service-directory/Pshopping-cart\",\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"serviceURL\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"kind\": {\n \"description\": \"The definition of Entity V3 API Kind object.\",\n \"enum\": [\n \"api\"\n ],\n \"example\": \"api\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"API\"\n ]\n },\n \"metadata\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata object.\",\n \"properties\": {\n \"additionalOwners\": {\n \"additionalProperties\": false,\n \"description\": \"The additional owners of the entity, usually a team.\",\n \"items\": {\n \"description\": \"The definition of Entity V3 Metadata Additional Owners Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Team name.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Team type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"contacts\": {\n \"additionalProperties\": false,\n \"description\": \"A list of contacts for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Contacts Items object.\",\n \"properties\": {\n \"contact\": {\n \"description\": \"Contact value.\",\n \"example\": \"https://slack/\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Contact name.\",\n \"minLength\": 2,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Contact type.\",\n \"example\": \"slack\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"contact\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"Short description of the entity. The UI can leverage the description for display.\",\n \"type\": \"string\"\n },\n \"displayName\": {\n \"description\": \"User friendly name of the entity. The UI can leverage the display name for display.\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A read-only globally unique identifier for the entity generated by Datadog. User supplied values are ignored.\",\n \"example\": \"4b163705-23c0-4573-b2fb-f6cea2163fcb\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"inheritFrom\": {\n \"description\": \"The entity reference from which to inherit metadata\",\n \"example\": \"application:default/myapp\",\n \"type\": \"string\"\n },\n \"links\": {\n \"additionalProperties\": false,\n \"description\": \"A list of links for the entity.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 Metadata Links Items object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Link name.\",\n \"example\": \"mylink\",\n \"type\": \"string\"\n },\n \"provider\": {\n \"description\": \"Link provider.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"other\",\n \"description\": \"Link type.\",\n \"example\": \"link\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Link URL.\",\n \"example\": \"https://mylink\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"managed\": {\n \"additionalProperties\": {},\n \"description\": \"A read-only set of Datadog managed attributes generated by Datadog. User supplied values are ignored.\",\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Unique name given to an entity under the kind/namespace.\",\n \"example\": \"myService\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"namespace\": {\n \"description\": \"Namespace is a part of unique identifier. It has a default value of 'default'.\",\n \"example\": \"default\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"owner\": {\n \"description\": \"The owner of the entity, usually a team.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A set of custom tags.\",\n \"example\": [\n \"this:tag\",\n \"that:tag\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"spec\": {\n \"additionalProperties\": false,\n \"description\": \"The definition of Entity V3 API Spec object.\",\n \"properties\": {\n \"implementedBy\": {\n \"description\": \"Services which implemented the API.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"interface\": {\n \"additionalProperties\": false,\n \"description\": \"The API definition.\",\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"The definition of `EntityV3APISpecInterfaceFileRef` object.\",\n \"properties\": {\n \"fileRef\": {\n \"description\": \"The reference to the API definition file.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"The definition of `EntityV3APISpecInterfaceDefinition` object.\",\n \"properties\": {\n \"definition\": {\n \"description\": \"The API definition.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n ]\n },\n \"lifecycle\": {\n \"description\": \"The lifecycle state of the component.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"tier\": {\n \"description\": \"The importance of the component.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of API.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"apiVersion\",\n \"kind\",\n \"metadata\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n {\n \"description\": \"Entity definition in raw JSON or YAML representation.\",\n \"example\": \"apiVersion: v3\\nkind: service\\nmetadata:\\n name: myservice\",\n \"type\": \"string\"\n }\n ]\n }\n }\n },\n \"description\": \"Entity YAML or JSON.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/OrderRumRetentionFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/OrderRumRetentionFilters.json new file mode 100644 index 00000000..7456489d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/OrderRumRetentionFilters.json @@ -0,0 +1,215 @@ +{ + "name": "OrderRumRetentionFilters", + "fully_qualified_name": "DatadogApi.OrderRumRetentionFilters@0.1.0", + "description": "Order RUM retention filters for a RUM application.\n\nUse this tool to reorder the RUM retention filters for a specified RUM application. It returns the updated RUM retention filter objects without attributes when successful.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The ID of the RUM application for which to order retention filters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + }, + { + "name": "new_rum_retention_filter_definition", + "required": true, + "description": "JSON object defining the new RUM retention filter. Includes a list of filter IDs with type. Expected format: {\"data\": [{\"id\": \"UUID\", \"type\": \"retention_filters\"}]}", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of retention filter in UUID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "retention_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be retention_filters." + } + }, + "description": "A list of RUM retention filter IDs along with type." + } + }, + "inner_properties": null, + "description": "New definition of the RUM retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'OrderRetentionFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{app_id}/relationships/retention_filters", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_rum_retention_filter_definition", + "description": "New definition of the RUM retention filter.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of retention filter in UUID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "retention_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be retention_filters." + } + }, + "description": "A list of RUM retention filter IDs along with type." + } + }, + "inner_properties": null, + "description": "New definition of the RUM retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The list of RUM retention filter IDs along with their corresponding type to reorder.\\nAll retention filter IDs should be included in the list created for a RUM application.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A list of RUM retention filter IDs along with type.\",\n \"items\": {\n \"description\": \"The RUM retention filter data for ordering.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of retention filter in UUID.\",\n \"example\": \"051601eb-54a0-abc0-03f9-cc02efa18892\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"retention_filters\",\n \"description\": \"The type of the resource. The value should always be retention_filters.\",\n \"enum\": [\n \"retention_filters\"\n ],\n \"example\": \"retention_filters\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RETENTION_FILTERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the RUM retention filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/PublishAppOnDatadog.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/PublishAppOnDatadog.json new file mode 100644 index 00000000..75f0852b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/PublishAppOnDatadog.json @@ -0,0 +1,126 @@ +{ + "name": "PublishAppOnDatadog", + "fully_qualified_name": "DatadogApi.PublishAppOnDatadog@0.1.0", + "description": "Publish an app for user access on Datadog.\n\nUse this tool to publish an app for use by other users on Datadog. Ensure a restriction policy is set for correct user access. A registered application key is required for this operation.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_id_of_app_to_publish", + "required": true, + "description": "The unique identifier of the app you want to publish on Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to publish." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'PublishApp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}/deployment", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "app_id_of_app_to_publish", + "description": "The ID of the app to publish.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to publish." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/QueryScalarData.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/QueryScalarData.json new file mode 100644 index 00000000..78894c6d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/QueryScalarData.json @@ -0,0 +1,322 @@ +{ + "name": "QueryScalarData", + "fully_qualified_name": "DatadogApi.QueryScalarData@0.1.0", + "description": "Query scalar values from diverse data sources.\n\nUse this tool to query scalar values from various data sources, with options to apply formulas and functions, ideal for insights in widgets like Query Value, Table, and Toplist.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "scalar_query_request", + "required": true, + "description": "A JSON object describing the details of a scalar formula request, including formulas, queries, and the date range.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "formulas": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "formula": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Formula string, referencing one or more queries with their name property." + }, + "limit": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of results to which to limit." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "Direction of sort." + } + }, + "inner_properties": null, + "description": "Message for specifying limits to the number of values returned by a query.\nThis limit is only for scalar queries and has no effect on timeseries queries." + } + }, + "description": "List of formulas to be calculated and returned as responses." + }, + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "List of queries to be run and used as inputs to the formulas." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date (exclusive) of the query in milliseconds since the Unix epoch." + } + }, + "inner_properties": null, + "description": "The object describing a scalar formula request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "scalar_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be scalar_request." + } + }, + "inner_properties": null, + "description": "A single scalar query to be executed." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'QueryScalarData'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/query/scalar", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "scalar_query_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "formulas": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "formula": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Formula string, referencing one or more queries with their name property." + }, + "limit": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of results to which to limit." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "Direction of sort." + } + }, + "inner_properties": null, + "description": "Message for specifying limits to the number of values returned by a query.\nThis limit is only for scalar queries and has no effect on timeseries queries." + } + }, + "description": "List of formulas to be calculated and returned as responses." + }, + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "List of queries to be run and used as inputs to the formulas." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date (exclusive) of the query in milliseconds since the Unix epoch." + } + }, + "inner_properties": null, + "description": "The object describing a scalar formula request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "scalar_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be scalar_request." + } + }, + "inner_properties": null, + "description": "A single scalar query to be executed." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A wrapper request around one scalar query to be executed.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A single scalar query to be executed.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing a scalar formula request.\",\n \"properties\": {\n \"formulas\": {\n \"description\": \"List of formulas to be calculated and returned as responses.\",\n \"items\": {\n \"description\": \"A formula for calculation based on one or more queries.\",\n \"properties\": {\n \"formula\": {\n \"description\": \"Formula string, referencing one or more queries with their name property.\",\n \"example\": \"a+b\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"description\": \"Message for specifying limits to the number of values returned by a query.\\nThis limit is only for scalar queries and has no effect on timeseries queries.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The number of results to which to limit.\",\n \"example\": 10,\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n },\n \"order\": {\n \"default\": \"desc\",\n \"description\": \"Direction of sort.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASC\",\n \"DESC\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"formula\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"from\": {\n \"description\": \"Start date (inclusive) of the query in milliseconds since the Unix epoch.\",\n \"example\": 1568899800000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"queries\": {\n \"description\": \"List of queries to be run and used as inputs to the formulas.\",\n \"example\": [\n {\n \"aggregator\": \"avg\",\n \"data_source\": \"metrics\",\n \"query\": \"avg:system.cpu.user{*} by {env}\"\n }\n ],\n \"items\": {\n \"description\": \"An individual scalar query to one of the basic Datadog data sources.\",\n \"example\": {\n \"aggregator\": \"avg\",\n \"data_source\": \"metrics\",\n \"query\": \"avg:system.cpu.user{*} by {env}\"\n },\n \"oneOf\": [\n {\n \"description\": \"An individual scalar metrics query.\",\n \"properties\": {\n \"aggregator\": {\n \"default\": \"avg\",\n \"description\": \"The type of aggregation that can be performed on metrics-based queries.\",\n \"enum\": [\n \"avg\",\n \"min\",\n \"max\",\n \"sum\",\n \"last\",\n \"percentile\",\n \"mean\",\n \"l2norm\",\n \"area\"\n ],\n \"example\": \"avg\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AVG\",\n \"MIN\",\n \"MAX\",\n \"SUM\",\n \"LAST\",\n \"PERCENTILE\",\n \"MEAN\",\n \"L2NORM\",\n \"AREA\"\n ]\n },\n \"data_source\": {\n \"default\": \"metrics\",\n \"description\": \"A data source that is powered by the Metrics platform.\",\n \"enum\": [\n \"metrics\",\n \"cloud_cost\"\n ],\n \"example\": \"metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"METRICS\",\n \"CLOUD_COST\"\n ]\n },\n \"name\": {\n \"description\": \"The variable name for use in formulas.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"A classic metrics query string.\",\n \"example\": \"avg:system.cpu.user{*} by {env}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"data_source\",\n \"query\",\n \"aggregator\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"An individual scalar events query.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The instructions for what to compute for this query.\",\n \"properties\": {\n \"aggregation\": {\n \"default\": \"count\",\n \"description\": \"The type of aggregation that can be performed on events-based queries.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PC75\",\n \"PC90\",\n \"PC95\",\n \"PC98\",\n \"PC99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\"\n ]\n },\n \"interval\": {\n \"description\": \"Interval for compute in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"metric\": {\n \"description\": \"The \\\"measure\\\" attribute on which to perform the computation.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n },\n \"data_source\": {\n \"default\": \"logs\",\n \"description\": \"A data source that is powered by the Events Platform.\",\n \"enum\": [\n \"logs\",\n \"rum\",\n \"dora\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"RUM\",\n \"DORA\"\n ]\n },\n \"group_by\": {\n \"description\": \"The list of facets on which to split results.\",\n \"items\": {\n \"description\": \"A dimension on which to split a query's results.\",\n \"properties\": {\n \"facet\": {\n \"description\": \"The facet by which to split groups.\",\n \"example\": \"@error.type\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum buckets to return for this group by. Note: at most 10000 buckets are allowed.\\nIf grouping by multiple facets, the product of limits must not exceed 10000.\",\n \"example\": 10,\n \"format\": \"int32\",\n \"maximum\": 10000,\n \"type\": \"integer\"\n },\n \"sort\": {\n \"description\": \"The dimension by which to sort a query's results.\",\n \"properties\": {\n \"aggregation\": {\n \"default\": \"count\",\n \"description\": \"The type of aggregation that can be performed on events-based queries.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PC75\",\n \"PC90\",\n \"PC95\",\n \"PC98\",\n \"PC99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\"\n ]\n },\n \"metric\": {\n \"description\": \"The metric's calculated value which should be used to define the sort order of a query's results.\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"order\": {\n \"default\": \"desc\",\n \"description\": \"Direction of sort.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASC\",\n \"DESC\"\n ]\n },\n \"type\": {\n \"description\": \"The type of sort to use on the calculated value.\",\n \"enum\": [\n \"alphabetical\",\n \"measure\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALPHABETICAL\",\n \"MEASURE\"\n ]\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"facet\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"indexes\": {\n \"description\": \"The indexes in which to search.\",\n \"example\": [\n \"main\"\n ],\n \"items\": {\n \"description\": \"The unique index name.\",\n \"example\": \"main\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The variable name for use in formulas.\",\n \"type\": \"string\"\n },\n \"search\": {\n \"description\": \"Configuration of the search/filter for an events query.\",\n \"properties\": {\n \"query\": {\n \"description\": \"The search/filter string for an events query.\",\n \"example\": \"status:warn service:foo\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data_source\",\n \"compute\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"to\": {\n \"description\": \"End date (exclusive) of the query in milliseconds since the Unix epoch.\",\n \"example\": 1568923200000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"to\",\n \"from\",\n \"queries\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"scalar_request\",\n \"description\": \"The type of the resource. The value should always be scalar_request.\",\n \"enum\": [\n \"scalar_request\"\n ],\n \"example\": \"scalar_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SCALAR_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/QueryTimeseriesData.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/QueryTimeseriesData.json new file mode 100644 index 00000000..d2a328a8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/QueryTimeseriesData.json @@ -0,0 +1,338 @@ +{ + "name": "QueryTimeseriesData", + "fully_qualified_name": "DatadogApi.QueryTimeseriesData@0.1.0", + "description": "Query and process timeseries data from multiple sources.\n\nThis tool queries timeseries data across various data sources and processes it by applying specified formulas and functions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "timeseries_query_payload", + "required": true, + "description": "A JSON object detailing the timeseries query including formulas, query range, and resource type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "formulas": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "formula": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Formula string, referencing one or more queries with their name property." + }, + "limit": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of results to which to limit." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "Direction of sort." + } + }, + "inner_properties": null, + "description": "Message for specifying limits to the number of values returned by a query.\nThis limit is only for scalar queries and has no effect on timeseries queries." + } + }, + "description": "List of formulas to be calculated and returned as responses." + }, + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch." + }, + "interval": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A time interval in milliseconds.\nMay be overridden by a larger interval if the query would result in\ntoo many points for the specified timeframe.\nDefaults to a reasonable interval for the given timeframe." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "List of queries to be run and used as inputs to the formulas." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date (exclusive) of the query in milliseconds since the Unix epoch." + } + }, + "inner_properties": null, + "description": "The object describing a timeseries formula request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be timeseries_request." + } + }, + "inner_properties": null, + "description": "A single timeseries query to be executed." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'QueryTimeseriesData'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/query/timeseries", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "timeseries_query_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "formulas": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "formula": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Formula string, referencing one or more queries with their name property." + }, + "limit": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of results to which to limit." + }, + "order": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "asc", + "desc" + ], + "properties": null, + "inner_properties": null, + "description": "Direction of sort." + } + }, + "inner_properties": null, + "description": "Message for specifying limits to the number of values returned by a query.\nThis limit is only for scalar queries and has no effect on timeseries queries." + } + }, + "description": "List of formulas to be calculated and returned as responses." + }, + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch." + }, + "interval": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A time interval in milliseconds.\nMay be overridden by a larger interval if the query would result in\ntoo many points for the specified timeframe.\nDefaults to a reasonable interval for the given timeframe." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "List of queries to be run and used as inputs to the formulas." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date (exclusive) of the query in milliseconds since the Unix epoch." + } + }, + "inner_properties": null, + "description": "The object describing a timeseries formula request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timeseries_request" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be timeseries_request." + } + }, + "inner_properties": null, + "description": "A single timeseries query to be executed." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A request wrapper around a single timeseries query to be executed.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A single timeseries query to be executed.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing a timeseries formula request.\",\n \"properties\": {\n \"formulas\": {\n \"description\": \"List of formulas to be calculated and returned as responses.\",\n \"items\": {\n \"description\": \"A formula for calculation based on one or more queries.\",\n \"properties\": {\n \"formula\": {\n \"description\": \"Formula string, referencing one or more queries with their name property.\",\n \"example\": \"a+b\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"description\": \"Message for specifying limits to the number of values returned by a query.\\nThis limit is only for scalar queries and has no effect on timeseries queries.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The number of results to which to limit.\",\n \"example\": 10,\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n },\n \"order\": {\n \"default\": \"desc\",\n \"description\": \"Direction of sort.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASC\",\n \"DESC\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"formula\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"from\": {\n \"description\": \"Start date (inclusive) of the query in milliseconds since the Unix epoch.\",\n \"example\": 1568899800000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"A time interval in milliseconds.\\nMay be overridden by a larger interval if the query would result in\\ntoo many points for the specified timeframe.\\nDefaults to a reasonable interval for the given timeframe.\",\n \"example\": 5000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"queries\": {\n \"description\": \"List of queries to be run and used as inputs to the formulas.\",\n \"example\": [\n {\n \"data_source\": \"metrics\",\n \"query\": \"avg:system.cpu.user{*} by {env}\"\n }\n ],\n \"items\": {\n \"description\": \"An individual timeseries query to one of the basic Datadog data sources.\",\n \"example\": {\n \"data_source\": \"metrics\",\n \"query\": \"avg:system.cpu.user{*} by {env}\"\n },\n \"oneOf\": [\n {\n \"description\": \"An individual timeseries metrics query.\",\n \"properties\": {\n \"data_source\": {\n \"default\": \"metrics\",\n \"description\": \"A data source that is powered by the Metrics platform.\",\n \"enum\": [\n \"metrics\",\n \"cloud_cost\"\n ],\n \"example\": \"metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"METRICS\",\n \"CLOUD_COST\"\n ]\n },\n \"name\": {\n \"description\": \"The variable name for use in formulas.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"A classic metrics query string.\",\n \"example\": \"avg:system.cpu.user{*} by {env}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"data_source\",\n \"query\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"An individual timeseries events query.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The instructions for what to compute for this query.\",\n \"properties\": {\n \"aggregation\": {\n \"default\": \"count\",\n \"description\": \"The type of aggregation that can be performed on events-based queries.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PC75\",\n \"PC90\",\n \"PC95\",\n \"PC98\",\n \"PC99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\"\n ]\n },\n \"interval\": {\n \"description\": \"Interval for compute in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"metric\": {\n \"description\": \"The \\\"measure\\\" attribute on which to perform the computation.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n },\n \"data_source\": {\n \"default\": \"logs\",\n \"description\": \"A data source that is powered by the Events Platform.\",\n \"enum\": [\n \"logs\",\n \"rum\",\n \"dora\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"RUM\",\n \"DORA\"\n ]\n },\n \"group_by\": {\n \"description\": \"The list of facets on which to split results.\",\n \"items\": {\n \"description\": \"A dimension on which to split a query's results.\",\n \"properties\": {\n \"facet\": {\n \"description\": \"The facet by which to split groups.\",\n \"example\": \"@error.type\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum buckets to return for this group by. Note: at most 10000 buckets are allowed.\\nIf grouping by multiple facets, the product of limits must not exceed 10000.\",\n \"example\": 10,\n \"format\": \"int32\",\n \"maximum\": 10000,\n \"type\": \"integer\"\n },\n \"sort\": {\n \"description\": \"The dimension by which to sort a query's results.\",\n \"properties\": {\n \"aggregation\": {\n \"default\": \"count\",\n \"description\": \"The type of aggregation that can be performed on events-based queries.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"pc75\",\n \"pc90\",\n \"pc95\",\n \"pc98\",\n \"pc99\",\n \"sum\",\n \"min\",\n \"max\",\n \"avg\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"PC75\",\n \"PC90\",\n \"PC95\",\n \"PC98\",\n \"PC99\",\n \"SUM\",\n \"MIN\",\n \"MAX\",\n \"AVG\"\n ]\n },\n \"metric\": {\n \"description\": \"The metric's calculated value which should be used to define the sort order of a query's results.\",\n \"example\": \"@duration\",\n \"type\": \"string\"\n },\n \"order\": {\n \"default\": \"desc\",\n \"description\": \"Direction of sort.\",\n \"enum\": [\n \"asc\",\n \"desc\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASC\",\n \"DESC\"\n ]\n },\n \"type\": {\n \"description\": \"The type of sort to use on the calculated value.\",\n \"enum\": [\n \"alphabetical\",\n \"measure\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALPHABETICAL\",\n \"MEASURE\"\n ]\n }\n },\n \"required\": [\n \"aggregation\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"facet\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"indexes\": {\n \"description\": \"The indexes in which to search.\",\n \"example\": [\n \"main\"\n ],\n \"items\": {\n \"description\": \"The unique index name.\",\n \"example\": \"main\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The variable name for use in formulas.\",\n \"type\": \"string\"\n },\n \"search\": {\n \"description\": \"Configuration of the search/filter for an events query.\",\n \"properties\": {\n \"query\": {\n \"description\": \"The search/filter string for an events query.\",\n \"example\": \"status:warn service:foo\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data_source\",\n \"compute\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"to\": {\n \"description\": \"End date (exclusive) of the query in milliseconds since the Unix epoch.\",\n \"example\": 1568923200000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"to\",\n \"from\",\n \"queries\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"timeseries_request\",\n \"description\": \"The type of the resource. The value should always be timeseries_request.\",\n \"enum\": [\n \"timeseries_request\"\n ],\n \"example\": \"timeseries_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESERIES_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RegisterDatadogAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RegisterDatadogAppKey.json new file mode 100644 index 00000000..1c232962 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RegisterDatadogAppKey.json @@ -0,0 +1,126 @@ +{ + "name": "RegisterDatadogAppKey", + "fully_qualified_name": "DatadogApi.RegisterDatadogAppKey@0.1.0", + "description": "Register a new app key in Datadog.\n\nUse this tool to register a new application key with Datadog, enabling API access and integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_key_id", + "required": true, + "description": "The unique identifier for the app key to be registered with Datadog. It must be a valid string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'RegisterAppKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/app_key_registrations/{app_key_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "app_key_id", + "description": "The ID of the app key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemovePermissionFromRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemovePermissionFromRole.json new file mode 100644 index 00000000..6e5241bd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemovePermissionFromRole.json @@ -0,0 +1,196 @@ +{ + "name": "RemovePermissionFromRole", + "fully_qualified_name": "DatadogApi.RemovePermissionFromRole@0.1.0", + "description": "Removes a permission from a specified role in Datadog.\n\nUse this tool to remove a specific permission from a role in Datadog's system. Ideal for managing role permissions and access control.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_identifier", + "required": true, + "description": "The unique identifier for the role from which a permission will be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + }, + { + "name": "permission_id", + "required": false, + "description": "ID of the permission to be removed from the specified role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "permission_resource_type", + "required": false, + "description": "This should be set to 'permissions' to specify the permissions resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'RemovePermissionFromRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}/permissions", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "permission_id", + "description": "ID of the permission.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the permission." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "permission_resource_type", + "description": "Permissions resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "permissions" + ], + "properties": null, + "inner_properties": null, + "description": "Permissions resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "permissions", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to a permissions object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to permission object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the permission.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"permissions\",\n \"description\": \"Permissions resource type.\",\n \"enum\": [\n \"permissions\"\n ],\n \"example\": \"permissions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PERMISSIONS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveProject.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveProject.json new file mode 100644 index 00000000..5c15904f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveProject.json @@ -0,0 +1,126 @@ +{ + "name": "RemoveProject", + "fully_qualified_name": "DatadogApi.RemoveProject@0.1.0", + "description": "Remove a project using its ID.\n\nUse this tool to remove a project by providing the project's ID to ensure it is no longer available in the system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "project_id", + "required": true, + "description": "The unique identifier (UUID) of the project to be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project UUID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteProject'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/projects/{project_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "project_id", + "tool_parameter_name": "project_id", + "description": "Project UUID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Project UUID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveRoleFromArchive.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveRoleFromArchive.json new file mode 100644 index 00000000..c9d6a8eb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveRoleFromArchive.json @@ -0,0 +1,196 @@ +{ + "name": "RemoveRoleFromArchive", + "fully_qualified_name": "DatadogApi.RemoveRoleFromArchive@0.1.0", + "description": "Removes a role from a specified archive in Datadog.\n\nThis tool should be called to remove a user role from a specific archive in Datadog. It helps revoke access permissions associated with that role for the archive.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_id", + "required": true, + "description": "The ID of the archive from which the role will be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "archive_id" + }, + { + "name": "role_unique_identifier", + "required": false, + "description": "The unique identifier of the role to be removed from the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "role_type", + "required": false, + "description": "The type of role to be removed, typically set to 'roles'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'RemoveRoleFromArchive'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}/readers", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "archive_id", + "tool_parameter_name": "archive_id", + "description": "The ID of the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "role_unique_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "role_type", + "description": "Roles type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "roles", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveRoleFromRestrictionQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveRoleFromRestrictionQuery.json new file mode 100644 index 00000000..0896b670 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveRoleFromRestrictionQuery.json @@ -0,0 +1,196 @@ +{ + "name": "RemoveRoleFromRestrictionQuery", + "fully_qualified_name": "DatadogApi.RemoveRoleFromRestrictionQuery@0.1.0", + "description": "Removes a role from a Datadog restriction query.\n\nUse this tool to delete a specific role from a restriction query in Datadog. Appropriate for situations where you need to manage access by modifying restriction queries.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "restriction_query_id", + "required": true, + "description": "The ID of the restriction query to remove the role from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "restriction_query_id" + }, + { + "name": "role_unique_identifier", + "required": false, + "description": "The unique identifier of the role to be removed from the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "role_type", + "required": false, + "description": "The type of the role, must be 'roles'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'RemoveRoleFromRestrictionQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/restriction_queries/{restriction_query_id}/roles", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "restriction_query_id", + "tool_parameter_name": "restriction_query_id", + "description": "The ID of the restriction query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the restriction query." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "role_unique_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "role_type", + "description": "Roles type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "roles" + ], + "properties": null, + "inner_properties": null, + "description": "Roles type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "roles", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to role.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to role object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the role.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"roles\",\n \"description\": \"Roles type.\",\n \"enum\": [\n \"roles\"\n ],\n \"example\": \"roles\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ROLES\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveTeamLink.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveTeamLink.json new file mode 100644 index 00000000..b21a0964 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveTeamLink.json @@ -0,0 +1,159 @@ +{ + "name": "RemoveTeamLink", + "fully_qualified_name": "DatadogApi.RemoveTeamLink@0.1.0", + "description": "Remove a link from a team.\n\nUse this tool to remove a specific link from a team by providing the team and link identifiers. Useful for managing team associations and cleaning up unnecessary links.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier of the team from which the link will be removed. Required for identifying the specific team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "link_identifier", + "required": true, + "description": "The unique identifier of the link to be removed from the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "link_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteTeamLink'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/links/{link_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "link_id", + "tool_parameter_name": "link_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveTeamMember.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveTeamMember.json new file mode 100644 index 00000000..7ef4e9eb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveTeamMember.json @@ -0,0 +1,159 @@ +{ + "name": "RemoveTeamMember", + "fully_qualified_name": "DatadogApi.RemoveTeamMember@0.1.0", + "description": "Removes a member team from a super team.\n\nUse this tool to remove a specific member team from a super team based on the provided member team ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "super_team_id", + "required": true, + "description": "The unique identifier for the super team from which a member team will be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "super_team_id" + }, + { + "name": "member_team_identifier", + "required": true, + "description": "The unique ID of the member team to be removed from the super team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "member_team_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'RemoveMemberTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{super_team_id}/member_teams/{member_team_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "super_team_id", + "tool_parameter_name": "super_team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "member_team_id", + "tool_parameter_name": "member_team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveUserFromRole.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveUserFromRole.json new file mode 100644 index 00000000..04d93556 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveUserFromRole.json @@ -0,0 +1,196 @@ +{ + "name": "RemoveUserFromRole", + "fully_qualified_name": "DatadogApi.RemoveUserFromRole@0.1.0", + "description": "Remove a user from a specified role in Datadog.\n\nUse this tool to remove a specified user from a role in Datadog when updating user permissions or cleaning up role assignments.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "role_identifier", + "required": true, + "description": "The unique identifier of the role to remove the user from.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "inferrable": true, + "http_endpoint_parameter_name": "role_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "The unique identifier representing the user to be removed from the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "user_resource_type", + "required": true, + "description": "Specifies the resource type, which should be set as 'users'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'RemoveUserFromRole'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/roles/{role_id}/users", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "role_id", + "tool_parameter_name": "role_identifier", + "description": "The unique identifier of the role.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the role." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "user_identifier", + "description": "A unique identifier that represents the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "user_resource_type", + "description": "Users resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "users", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Relationship to user.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-2345-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveUserFromTeam.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveUserFromTeam.json new file mode 100644 index 00000000..91fa19c5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RemoveUserFromTeam.json @@ -0,0 +1,159 @@ +{ + "name": "RemoveUserFromTeam", + "fully_qualified_name": "DatadogApi.RemoveUserFromTeam@0.1.0", + "description": "Remove a user from a specified team.\n\nUse this tool when you need to remove a user's membership from a specific team in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "A string representing the unique identifier of the team from which the user will be removed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "user_identifier_for_removal", + "required": true, + "description": "The unique identifier of the user to be removed from the team.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'DeleteTeamMembership'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/memberships/{user_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_identifier_for_removal", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderApmRetentionFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderApmRetentionFilters.json new file mode 100644 index 00000000..8b171df1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderApmRetentionFilters.json @@ -0,0 +1,182 @@ +{ + "name": "ReorderApmRetentionFilters", + "fully_qualified_name": "DatadogApi.ReorderApmRetentionFilters@0.1.0", + "description": "Reorder execution order of APM retention filters.\n\nUse this tool to change the sequence in which APM retention filters are executed. This is useful for prioritizing certain filters over others in your Datadog configuration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "new_retention_filters_order", + "required": true, + "description": "A JSON array representing the new order of APM retention filters, each with an 'id' and 'type'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "apm_retention_filter" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource." + } + }, + "description": "A list of retention filters objects." + } + }, + "inner_properties": null, + "description": "The list of retention filters in the new order." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ReorderApmRetentionFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/retention-filters-execution-order", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "new_retention_filters_order", + "description": "The list of retention filters in the new order.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "apm_retention_filter" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource." + } + }, + "description": "A list of retention filters objects." + } + }, + "inner_properties": null, + "description": "The list of retention filters in the new order." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A list of retention filters to reorder.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A list of retention filters objects.\",\n \"items\": {\n \"description\": \"The retention filter object .\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the retention filter.\",\n \"example\": \"7RBOb7dLSYWI01yc3pIH8w\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"apm_retention_filter\",\n \"description\": \"The type of the resource.\",\n \"enum\": [\n \"apm_retention_filter\"\n ],\n \"example\": \"apm_retention_filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"apm_retention_filter\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The list of retention filters in the new order.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderCustomAllocationRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderCustomAllocationRules.json new file mode 100644 index 00000000..127ae285 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderCustomAllocationRules.json @@ -0,0 +1,182 @@ +{ + "name": "ReorderCustomAllocationRules", + "fully_qualified_name": "DatadogApi.ReorderCustomAllocationRules@0.1.0", + "description": "Change execution order of custom allocation rules in Datadog.\n\nUse this tool to reorder custom allocation rules by specifying the complete list of rule IDs in the desired sequence. Lower indices are executed first, so arrange them according to priority.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rules_order_list", + "required": true, + "description": "A JSON array of rule objects specifying the complete and desired execution order of custom allocation rules. Each object must include an 'id' of the rule and 'type' set to 'arbitrary_rule'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ReorderRuleResourceData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "arbitrary_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Arbitrary rule resource type." + } + }, + "description": "The `ReorderRuleResourceArray` `data`." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ReorderCustomAllocationRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/arbitrary_rule/reorder", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "rules_order_list", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ReorderRuleResourceData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "arbitrary_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Arbitrary rule resource type." + } + }, + "description": "The `ReorderRuleResourceArray` `data`." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `ReorderRuleResourceArray` object.\",\n \"example\": {\n \"data\": [\n {\n \"id\": \"456\",\n \"type\": \"arbitrary_rule\"\n },\n {\n \"id\": \"123\",\n \"type\": \"arbitrary_rule\"\n },\n {\n \"id\": \"789\",\n \"type\": \"arbitrary_rule\"\n }\n ]\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The `ReorderRuleResourceArray` `data`.\",\n \"items\": {\n \"description\": \"The definition of `ReorderRuleResourceData` object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The `ReorderRuleResourceData` `id`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"arbitrary_rule\",\n \"description\": \"Arbitrary rule resource type.\",\n \"enum\": [\n \"arbitrary_rule\"\n ],\n \"example\": \"arbitrary_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ARBITRARY_RULE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderScanningGroups.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderScanningGroups.json new file mode 100644 index 00000000..910aa4b1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderScanningGroups.json @@ -0,0 +1,306 @@ +{ + "name": "ReorderScanningGroups", + "fully_qualified_name": "DatadogApi.ReorderScanningGroups@0.1.0", + "description": "Reorder the list of scanning groups.\n\nThis tool is used to change the order of sensitive data scanning groups in Datadog. Call this tool when you need to reorder the existing groups.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "reorder_data_payload", + "required": true, + "description": "JSON payload specifying the order of scanning groups. Includes configuration ID, relationship details, and optional API version information.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "groups": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "description": "List of groups. The order is important." + } + }, + "inner_properties": null, + "description": "List of groups, ordered." + } + }, + "inner_properties": null, + "description": "Relationships of the configuration." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_configuration" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner configuration type." + } + }, + "inner_properties": null, + "description": "Data related to the reordering of scanning groups." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ReorderScanningGroups'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "reorder_data_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "groups": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "description": "List of groups. The order is important." + } + }, + "inner_properties": null, + "description": "List of groups, ordered." + } + }, + "inner_properties": null, + "description": "Relationships of the configuration." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_configuration" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner configuration type." + } + }, + "inner_properties": null, + "description": "Data related to the reordering of scanning groups." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Group reorder request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the reordering of scanning groups.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the configuration.\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Relationships of the configuration.\",\n \"properties\": {\n \"groups\": {\n \"description\": \"List of groups, ordered.\",\n \"properties\": {\n \"data\": {\n \"description\": \"List of groups. The order is important.\",\n \"items\": {\n \"description\": \"Data related to a Sensitive Data Scanner Group.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the group.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_group\",\n \"description\": \"Sensitive Data Scanner group type.\",\n \"enum\": [\n \"sensitive_data_scanner_group\"\n ],\n \"example\": \"sensitive_data_scanner_group\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_GROUP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_configuration\",\n \"description\": \"Sensitive Data Scanner configuration type.\",\n \"enum\": [\n \"sensitive_data_scanner_configuration\"\n ],\n \"example\": \"sensitive_data_scanner_configuration\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_CONFIGURATIONS\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"meta\": {\n \"description\": \"Meta payload containing information about the API.\",\n \"properties\": {\n \"version\": {\n \"description\": \"Version of the API (optional).\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\",\n \"meta\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderTagPipelineRulesets.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderTagPipelineRulesets.json new file mode 100644 index 00000000..bbd30146 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ReorderTagPipelineRulesets.json @@ -0,0 +1,182 @@ +{ + "name": "ReorderTagPipelineRulesets", + "fully_qualified_name": "DatadogApi.ReorderTagPipelineRulesets@0.1.0", + "description": "Change the execution order of tag pipeline rulesets.\n\nUse this tool to modify the order in which tag pipeline rulesets are executed in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "ruleset_order_data", + "required": true, + "description": "A JSON object containing an array of ruleset objects. Each ruleset object must include an `id` (string) and `type` ('ruleset'). This determines the order of execution for the rulesets.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ReorderRulesetResourceData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ruleset" + ], + "properties": null, + "inner_properties": null, + "description": "Ruleset resource type." + } + }, + "description": "The `ReorderRulesetResourceArray` `data`." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ReorderTagPipelinesRulesets'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/tags/enrichment/reorder", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "ruleset_order_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ReorderRulesetResourceData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ruleset" + ], + "properties": null, + "inner_properties": null, + "description": "Ruleset resource type." + } + }, + "description": "The `ReorderRulesetResourceArray` `data`." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `ReorderRulesetResourceArray` object.\",\n \"example\": {\n \"data\": [\n {\n \"id\": \"55ef2385-9ae1-4410-90c4-5ac1b60fec10\",\n \"type\": \"ruleset\"\n },\n {\n \"id\": \"a7b8c9d0-1234-5678-9abc-def012345678\",\n \"type\": \"ruleset\"\n },\n {\n \"id\": \"f1e2d3c4-b5a6-9780-1234-567890abcdef\",\n \"type\": \"ruleset\"\n }\n ]\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The `ReorderRulesetResourceArray` `data`.\",\n \"items\": {\n \"description\": \"The definition of `ReorderRulesetResourceData` object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The `ReorderRulesetResourceData` `id`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"ruleset\",\n \"description\": \"Ruleset resource type.\",\n \"enum\": [\n \"ruleset\"\n ],\n \"example\": \"ruleset\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RULESET\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ResolveOnCallPage.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ResolveOnCallPage.json new file mode 100644 index 00000000..108cce5e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ResolveOnCallPage.json @@ -0,0 +1,126 @@ +{ + "name": "ResolveOnCallPage", + "fully_qualified_name": "DatadogApi.ResolveOnCallPage@0.1.0", + "description": "Resolves an On-Call Page in Datadog.\n\nThis tool resolves an open on-call page in Datadog, which is useful for indicating that an incident or issue has been addressed. Use it when you need to confirm the resolution of a specific on-call incident.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "on_call_page_id", + "required": true, + "description": "The unique identifier of the on-call page to resolve in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ResolveOnCallPage'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/pages/{page_id}/resolve", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "page_id", + "tool_parameter_name": "on_call_page_id", + "description": "The page ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The page ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveDatasetInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveDatasetInfo.json new file mode 100644 index 00000000..63874557 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveDatasetInfo.json @@ -0,0 +1,126 @@ +{ + "name": "RetrieveDatasetInfo", + "fully_qualified_name": "DatadogApi.RetrieveDatasetInfo@0.1.0", + "description": "Retrieve detailed information about a specific dataset from Datadog.\n\nUse this tool to get information about a dataset using its unique ID. It retrieves comprehensive details related to the specified dataset from Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dataset_identifier", + "required": true, + "description": "The unique identifier of the dataset to retrieve from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a defined dataset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "dataset_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetDataset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/datasets/{dataset_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "dataset_id", + "tool_parameter_name": "dataset_identifier", + "description": "The ID of a defined dataset.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a defined dataset." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveDatastore.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveDatastore.json new file mode 100644 index 00000000..5ebdd2c3 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveDatastore.json @@ -0,0 +1,126 @@ +{ + "name": "RetrieveDatastore", + "fully_qualified_name": "DatadogApi.RetrieveDatastore@0.1.0", + "description": "Retrieve datastore information by ID.\n\nUse this tool to access details of a specific datastore by providing its ID. It retrieves information from Datadog's datastore endpoint.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_identifier", + "required": true, + "description": "The unique ID of the datastore to be retrieved from Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetDatastore'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "datastore_id", + "tool_parameter_name": "datastore_identifier", + "description": "The unique identifier of the datastore to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveGcpScanSettings.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveGcpScanSettings.json new file mode 100644 index 00000000..383a5c35 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveGcpScanSettings.json @@ -0,0 +1,126 @@ +{ + "name": "RetrieveGcpScanSettings", + "fully_qualified_name": "DatadogApi.RetrieveGcpScanSettings@0.1.0", + "description": "Retrieve GCP project agentless scan options.\n\nThis tool fetches the agentless scanning options for a specified activated GCP project from Datadog, helping to determine scan configurations and settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "gcp_project_id", + "required": true, + "description": "The unique ID of the GCP project to retrieve scan options for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetGcpScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp/{project_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "project_id", + "tool_parameter_name": "gcp_project_id", + "description": "The GCP project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveResourceRestrictionPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveResourceRestrictionPolicy.json new file mode 100644 index 00000000..cc1f1b0d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveResourceRestrictionPolicy.json @@ -0,0 +1,126 @@ +{ + "name": "RetrieveResourceRestrictionPolicy", + "fully_qualified_name": "DatadogApi.RetrieveResourceRestrictionPolicy@0.1.0", + "description": "Retrieve restriction policy for a specific resource.\n\nThis tool is used to obtain the restriction policy linked to a particular resource by providing the resource ID. It should be called when you need to understand access restrictions or permissions associated with the resource.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "resource_identifier", + "required": true, + "description": "The ID of the resource, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules." + }, + "inferrable": true, + "http_endpoint_parameter_name": "resource_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'GetRestrictionPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/restriction_policy/{resource_id}", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "resource_id", + "tool_parameter_name": "resource_identifier", + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveSupportCaseTypes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveSupportCaseTypes.json new file mode 100644 index 00000000..761c136b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RetrieveSupportCaseTypes.json @@ -0,0 +1,91 @@ +{ + "name": "RetrieveSupportCaseTypes", + "fully_qualified_name": "DatadogApi.RetrieveSupportCaseTypes@0.1.0", + "description": "Retrieves all available support case types from Datadog.\n\nThis tool should be called to get a complete list of support case types available in Datadog. Useful for understanding the types of support cases that can be submitted.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [] + }, + "output": { + "description": "Response from the API endpoint 'GetAllCaseTypes'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/types", + "http_method": "GET", + "headers": {}, + "parameters": [], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RunHistoricalDetectionJob.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RunHistoricalDetectionJob.json new file mode 100644 index 00000000..a5a7d584 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/RunHistoricalDetectionJob.json @@ -0,0 +1,1734 @@ +{ + "name": "RunHistoricalDetectionJob", + "fully_qualified_name": "DatadogApi.RunHistoricalDetectionJob@0.1.0", + "description": "Initiate a historical detection job in Datadog.\n\nUse this tool to start a historical detection job via Datadog's SIEM API. It is called when there's a need to analyze past data using historical detections.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "historical_job_request_data", + "required": true, + "description": "JSON object containing the job parameters for running a historical detection job, including rules, queries, and job options.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fromRule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting time of data analyzed by the job." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the detection rule used to create the job." + }, + "index": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index used to load the data." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notifications sent when the job is completed." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ending time of data analyzed by the job." + } + }, + "inner_properties": null, + "description": "Definition of a historical job based on a security monitoring rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Request ID." + }, + "jobDefinition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "calculatedFields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expression." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field name." + } + }, + "description": "Calculated fields." + }, + "cases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "duration": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Duration of the action in seconds. 0 indicates no expiration." + }, + "flaggedIPType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses." + }, + "userBehaviorName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule." + } + }, + "inner_properties": null, + "description": "Options for the rule action" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "properties": null, + "inner_properties": null, + "description": "The action type." + } + }, + "description": "Action to perform for each rule case." + }, + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases used for generating job results." + }, + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting time of data analyzed by the job." + }, + "groupSignalsBy": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups." + }, + "index": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index used to load the data." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Message for generated results." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Job name." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "detectionMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "properties": null, + "inner_properties": null, + "description": "The detection method." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "impossibleTravelOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "baselineUserLocations": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access." + } + }, + "inner_properties": null, + "description": "Options on impossible travel detection method." + }, + "keepAlive": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used." + }, + "maxSignalDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp." + }, + "newValueOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "forgetAfter": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "1", + "2", + "7", + "14", + "21", + "28" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days after which a learned value is forgotten." + }, + "learningDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1", + "7" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned." + }, + "learningMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "duration", + "threshold" + ], + "properties": null, + "inner_properties": null, + "description": "The learning method used to determine when signals should be generated for values that weren't learned." + }, + "learningThreshold": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "A number of occurrences after which signals will be generated for values that weren't learned." + } + }, + "inner_properties": null, + "description": "Options on new value detection method." + }, + "sequenceDetectionOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "stepTransitions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "child": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the child step." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "parent": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the parent step." + } + }, + "description": "Transitions defining the allowed order of steps and their evaluation windows." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Condition referencing rule queries (e.g., `a > 0`)." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name identifying the step." + } + }, + "description": "Steps that define the conditions to be matched in sequence." + } + }, + "inner_properties": null, + "description": "Options on sequence detection method." + }, + "thirdPartyRuleOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "defaultNotifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for the logs that do not correspond to any of the cases." + }, + "defaultStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "rootQueries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "groupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to group by." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to run on logs." + } + }, + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert." + }, + "signalTitleTemplate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A template for the signal title; if omitted, the title is generated based on the case name." + } + }, + "inner_properties": null, + "description": "Options on third party detection method." + } + }, + "inner_properties": null, + "description": "Job options." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "properties": null, + "inner_properties": null, + "description": "The aggregation type." + }, + "dataSource": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "properties": null, + "inner_properties": null, + "description": "Source of events, either logs, audit trail, or Datadog events." + }, + "distinctFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field for which the cardinality is measured. Sent as an array." + }, + "groupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to group by." + }, + "hasOptionalGroupByFields": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values." + }, + "metrics": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the query." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to run on logs." + } + }, + "description": "Queries for selecting logs analyzed by the job." + }, + "referenceTables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "checkPresence": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to include or exclude the matched values." + }, + "columnName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the column in the reference table." + }, + "logFieldPath": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field in the log to match against the reference table." + }, + "ruleQueryName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the query to apply the reference table to." + }, + "tableName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + } + }, + "description": "Reference tables used in the queries." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags for generated signals." + }, + "thirdPartyCases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for each case." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A query to map a third party event to this case." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ending time of data analyzed by the job." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Job type." + } + }, + "inner_properties": null, + "description": "Definition of a historical job." + } + }, + "inner_properties": null, + "description": "Run a historical job request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "historicalDetectionsJobCreate" + ], + "properties": null, + "inner_properties": null, + "description": "Type of data." + } + }, + "inner_properties": null, + "description": "Data for running a historical job request." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'RunHistoricalJob'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/siem-historical-detections/jobs", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "historical_job_request_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fromRule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting time of data analyzed by the job." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the detection rule used to create the job." + }, + "index": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index used to load the data." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notifications sent when the job is completed." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ending time of data analyzed by the job." + } + }, + "inner_properties": null, + "description": "Definition of a historical job based on a security monitoring rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Request ID." + }, + "jobDefinition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "calculatedFields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expression." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field name." + } + }, + "description": "Calculated fields." + }, + "cases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "duration": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Duration of the action in seconds. 0 indicates no expiration." + }, + "flaggedIPType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses." + }, + "userBehaviorName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule." + } + }, + "inner_properties": null, + "description": "Options for the rule action" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "properties": null, + "inner_properties": null, + "description": "The action type." + } + }, + "description": "Action to perform for each rule case." + }, + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases used for generating job results." + }, + "from": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Starting time of data analyzed by the job." + }, + "groupSignalsBy": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups." + }, + "index": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index used to load the data." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Message for generated results." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Job name." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "detectionMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "properties": null, + "inner_properties": null, + "description": "The detection method." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "impossibleTravelOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "baselineUserLocations": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access." + } + }, + "inner_properties": null, + "description": "Options on impossible travel detection method." + }, + "keepAlive": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used." + }, + "maxSignalDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp." + }, + "newValueOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "forgetAfter": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "1", + "2", + "7", + "14", + "21", + "28" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days after which a learned value is forgotten." + }, + "learningDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1", + "7" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned." + }, + "learningMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "duration", + "threshold" + ], + "properties": null, + "inner_properties": null, + "description": "The learning method used to determine when signals should be generated for values that weren't learned." + }, + "learningThreshold": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "A number of occurrences after which signals will be generated for values that weren't learned." + } + }, + "inner_properties": null, + "description": "Options on new value detection method." + }, + "sequenceDetectionOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "stepTransitions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "child": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the child step." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "parent": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the parent step." + } + }, + "description": "Transitions defining the allowed order of steps and their evaluation windows." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Condition referencing rule queries (e.g., `a > 0`)." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name identifying the step." + } + }, + "description": "Steps that define the conditions to be matched in sequence." + } + }, + "inner_properties": null, + "description": "Options on sequence detection method." + }, + "thirdPartyRuleOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "defaultNotifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for the logs that do not correspond to any of the cases." + }, + "defaultStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "rootQueries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "groupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to group by." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to run on logs." + } + }, + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert." + }, + "signalTitleTemplate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A template for the signal title; if omitted, the title is generated based on the case name." + } + }, + "inner_properties": null, + "description": "Options on third party detection method." + } + }, + "inner_properties": null, + "description": "Job options." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "aggregation": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "count", + "cardinality", + "sum", + "max", + "new_value", + "geo_data", + "event_count", + "none" + ], + "properties": null, + "inner_properties": null, + "description": "The aggregation type." + }, + "dataSource": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs", + "audit", + "app_sec_spans", + "spans", + "security_runtime", + "network", + "events" + ], + "properties": null, + "inner_properties": null, + "description": "Source of events, either logs, audit trail, or Datadog events." + }, + "distinctFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field for which the cardinality is measured. Sent as an array." + }, + "groupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to group by." + }, + "hasOptionalGroupByFields": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values." + }, + "metrics": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the query." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to run on logs." + } + }, + "description": "Queries for selecting logs analyzed by the job." + }, + "referenceTables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "checkPresence": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to include or exclude the matched values." + }, + "columnName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the column in the reference table." + }, + "logFieldPath": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field in the log to match against the reference table." + }, + "ruleQueryName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the query to apply the reference table to." + }, + "tableName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + } + }, + "description": "Reference tables used in the queries." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags for generated signals." + }, + "thirdPartyCases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for each case." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A query to map a third party event to this case." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases for generating results from third-party detection method. Only available for third-party detection method." + }, + "to": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Ending time of data analyzed by the job." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Job type." + } + }, + "inner_properties": null, + "description": "Definition of a historical job." + } + }, + "inner_properties": null, + "description": "Run a historical job request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "historicalDetectionsJobCreate" + ], + "properties": null, + "inner_properties": null, + "description": "Type of data." + } + }, + "inner_properties": null, + "description": "Data for running a historical job request." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Run a historical job request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data for running a historical job request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Run a historical job request.\",\n \"properties\": {\n \"fromRule\": {\n \"description\": \"Definition of a historical job based on a security monitoring rule.\",\n \"properties\": {\n \"from\": {\n \"description\": \"Starting time of data analyzed by the job.\",\n \"example\": 1729843470000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"id\": {\n \"description\": \"ID of the detection rule used to create the job.\",\n \"example\": \"abc-def-ghi\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Index used to load the data.\",\n \"example\": \"cloud_siem\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notifications sent when the job is completed.\",\n \"example\": [\n \"@sns-cloudtrail-results\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"to\": {\n \"description\": \"Ending time of data analyzed by the job.\",\n \"example\": 1729847070000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"id\",\n \"from\",\n \"to\",\n \"index\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Request ID.\",\n \"type\": \"string\"\n },\n \"jobDefinition\": {\n \"description\": \"Definition of a historical job.\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases used for generating job results.\",\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"from\": {\n \"description\": \"Starting time of data analyzed by the job.\",\n \"example\": 1729843470000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"index\": {\n \"description\": \"Index used to load the data.\",\n \"example\": \"cloud_siem\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Message for generated results.\",\n \"example\": \"A large number of failed login attempts.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Job name.\",\n \"example\": \"Excessive number of failed attempts.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Job options.\",\n \"properties\": {\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs analyzed by the job.\",\n \"items\": {\n \"description\": \"Query for selecting logs analyzed by the historical job.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the query. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables used in the queries.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating results from third-party detection method. Only available for third-party detection method.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when a signal is generated by a third party rule.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"to\": {\n \"description\": \"Ending time of data analyzed by the job.\",\n \"example\": 1729847070000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"description\": \"Job type.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"from\",\n \"to\",\n \"index\",\n \"name\",\n \"cases\",\n \"queries\",\n \"message\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of data.\",\n \"enum\": [\n \"historicalDetectionsJobCreate\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HISTORICALDETECTIONSJOBCREATE\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ScheduleDowntime.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ScheduleDowntime.json new file mode 100644 index 00000000..c145f34b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ScheduleDowntime.json @@ -0,0 +1,312 @@ +{ + "name": "ScheduleDowntime", + "fully_qualified_name": "DatadogApi.ScheduleDowntime@0.1.0", + "description": "Schedule downtime for services or systems through Datadog.\n\nUse this tool to schedule a downtime for services or systems using Datadog's API. It is useful for planning maintenance or handling expected outages by suppressing alerts during the specified period.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "downtime_details", + "required": true, + "description": "Details for scheduling downtime, including attributes like message, monitor identifier, and schedule. It specifies how to handle notifications and the scope of the downtime.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "display_timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone in which to display the downtime's start and end times in Datadog applications. This is not used\nas an offset for scheduling." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A message to include with notifications for this downtime. Email notifications can be sent to specific users\nby using the same `@username` notation as events." + }, + "monitor_identifier": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Monitor identifier for the downtime." + }, + "mute_first_recovery_notification": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the first recovery notification during a downtime should be muted." + }, + "notify_end_states": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "States that will trigger a monitor notification when the `notify_end_types` action occurs." + }, + "notify_end_types": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state." + }, + "schedule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Schedule for the downtime." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/)." + } + }, + "inner_properties": null, + "description": "Downtime details." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "downtime" + ], + "properties": null, + "inner_properties": null, + "description": "Downtime resource type." + } + }, + "inner_properties": null, + "description": "Object to create a downtime." + } + }, + "inner_properties": null, + "description": "Schedule a downtime request body." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateDowntime'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/downtime", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "downtime_details", + "description": "Schedule a downtime request body.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "display_timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone in which to display the downtime's start and end times in Datadog applications. This is not used\nas an offset for scheduling." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A message to include with notifications for this downtime. Email notifications can be sent to specific users\nby using the same `@username` notation as events." + }, + "monitor_identifier": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Monitor identifier for the downtime." + }, + "mute_first_recovery_notification": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the first recovery notification during a downtime should be muted." + }, + "notify_end_states": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "States that will trigger a monitor notification when the `notify_end_types` action occurs." + }, + "notify_end_types": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state." + }, + "schedule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Schedule for the downtime." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/)." + } + }, + "inner_properties": null, + "description": "Downtime details." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "downtime" + ], + "properties": null, + "inner_properties": null, + "description": "Downtime resource type." + } + }, + "inner_properties": null, + "description": "Object to create a downtime." + } + }, + "inner_properties": null, + "description": "Schedule a downtime request body." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating a downtime.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object to create a downtime.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Downtime details.\",\n \"properties\": {\n \"display_timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone in which to display the downtime's start and end times in Datadog applications. This is not used\\nas an offset for scheduling.\",\n \"example\": \"America/New_York\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"A message to include with notifications for this downtime. Email notifications can be sent to specific users\\nby using the same `@username` notation as events.\",\n \"example\": \"Message about the downtime\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"monitor_identifier\": {\n \"description\": \"Monitor identifier for the downtime.\",\n \"oneOf\": [\n {\n \"additionalProperties\": {},\n \"description\": \"Object of the monitor identifier.\",\n \"properties\": {\n \"monitor_id\": {\n \"description\": \"ID of the monitor to prevent notifications.\",\n \"example\": 123,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"monitor_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": {},\n \"description\": \"Object of the monitor tags.\",\n \"properties\": {\n \"monitor_tags\": {\n \"description\": \"A list of monitor tags. For example, tags that are applied directly to monitors,\\nnot tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies.\\nThe resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags`\\nto `[*]` configures the downtime to mute all monitors for the given scope.\",\n \"example\": [\n \"service:postgres\",\n \"team:frontend\"\n ],\n \"items\": {\n \"description\": \"A list of monitor tags.\",\n \"example\": \"service:postgres\",\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"monitor_tags\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"mute_first_recovery_notification\": {\n \"description\": \"If the first recovery notification during a downtime should be muted.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"notify_end_states\": {\n \"description\": \"States that will trigger a monitor notification when the `notify_end_types` action occurs.\",\n \"example\": [\n \"alert\",\n \"warn\"\n ],\n \"items\": {\n \"description\": \"State that will trigger a monitor notification when the `notify_end_types` action occurs.\",\n \"enum\": [\n \"alert\",\n \"no data\",\n \"warn\"\n ],\n \"example\": \"alert\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALERT\",\n \"NO_DATA\",\n \"WARN\"\n ]\n },\n \"type\": \"array\"\n },\n \"notify_end_types\": {\n \"description\": \"Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state.\",\n \"example\": [\n \"canceled\",\n \"expired\"\n ],\n \"items\": {\n \"description\": \"Action that will trigger a monitor notification if the downtime is in the `notify_end_types` state.\",\n \"enum\": [\n \"canceled\",\n \"expired\"\n ],\n \"example\": \"canceled\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CANCELED\",\n \"EXPIRED\"\n ]\n },\n \"type\": \"array\"\n },\n \"schedule\": {\n \"description\": \"Schedule for the downtime.\",\n \"oneOf\": [\n {\n \"description\": \"A recurring downtime schedule definition.\",\n \"properties\": {\n \"recurrences\": {\n \"description\": \"A list of downtime recurrences.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An object defining the recurrence of the downtime.\",\n \"properties\": {\n \"duration\": {\n \"description\": \"The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'.\",\n \"example\": \"123d\",\n \"type\": \"string\"\n },\n \"rrule\": {\n \"description\": \"The `RRULE` standard for defining recurring events.\\nFor example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`.\\nMost common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported.\\n\\n**Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`).\\nMore examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).\",\n \"example\": \"FREQ=MONTHLY;BYSETPOS=3;BYDAY=WE;INTERVAL=1\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the\\ndowntime starts the moment it is created.\",\n \"example\": \"2020-01-02T03:04\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"duration\",\n \"rrule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone in which to schedule the downtime.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"recurrences\"\n ],\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"A one-time downtime definition.\",\n \"properties\": {\n \"end\": {\n \"description\": \"ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the\\ndowntime continues forever.\",\n \"example\": \"2020-01-02T03:04:00+00:00\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the\\ndowntime starts the moment it is created.\",\n \"example\": \"2020-01-02T03:04:00+00:00\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n ]\n },\n \"scope\": {\n \"description\": \"The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).\",\n \"example\": \"env:(staging OR prod) AND datacenter:us-east-1\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"scope\",\n \"monitor_identifier\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"downtime\",\n \"description\": \"Downtime resource type.\",\n \"enum\": [\n \"downtime\"\n ],\n \"example\": \"downtime\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DOWNTIME\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Schedule a downtime request body.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchAuditLogs.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchAuditLogs.json new file mode 100644 index 00000000..8f885e72 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchAuditLogs.json @@ -0,0 +1,363 @@ +{ + "name": "SearchAuditLogs", + "fully_qualified_name": "DatadogApi.SearchAuditLogs@0.1.0", + "description": "Retrieve audit logs events based on a search query.\n\nUse this tool to filter and search through Datadog audit logs events using complex queries. Results are paginated.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "minimum_time", + "required": false, + "description": "Minimum time for the requested events. Accepts date, math, or timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum time for the requested events. Supports date, math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "audit_logs_search_query", + "required": false, + "description": "A string representing the search query following the Audit Logs search syntax to filter the logs.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following the Audit Logs search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "maximum_time_for_requested_events", + "required": false, + "description": "Maximum time for the requested events. Supports date, math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum time for the requested events. Supports date, math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "time_offset_seconds", + "required": false, + "description": "Time offset in seconds to apply to the query, adjusting the timeframe of the log search.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time offset (in seconds) to apply to the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.time_offset" + }, + { + "name": "timezone", + "required": false, + "description": "Specify the timezone for the query, using GMT, UTC, an offset like UTC+1, or a Timezone Database identifier like America/New_York.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timezone" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for retrieving subsequent pages of audit log results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "max_events_limit", + "required": false, + "description": "Specify the maximum number of events to include in the response, enabling efficient pagination.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_parameter", + "required": false, + "description": "Sort events by timestamp. Use 'timestamp' for ascending, '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchAuditLogs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/audit/events/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "minimum_time", + "description": "Minimum time for the requested events. Supports date, math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Minimum time for the requested events. Supports date, math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now-15m", + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "audit_logs_search_query", + "description": "Search query following the Audit Logs search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following the Audit Logs search syntax." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "maximum_time_for_requested_events", + "description": "Maximum time for the requested events. Supports date, math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum time for the requested events. Supports date, math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now", + "documentation_urls": [] + }, + { + "name": "options.time_offset", + "tool_parameter_name": "time_offset_seconds", + "description": "Time offset (in seconds) to apply to the query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time offset (in seconds) to apply to the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "options.timezone", + "tool_parameter_name": "timezone", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "UTC", + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "max_events_limit", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_parameter", + "description": "Sort parameters when querying events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a Audit Logs events list.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"Search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"Minimum time for the requested events. Supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"Search query following the Audit Logs search syntax.\",\n \"example\": \"@type:session AND @session.type:user\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"Maximum time for the requested events. Supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nNote: Specify either timezone or time offset, not both. Otherwise, the query fails.\",\n \"properties\": {\n \"time_offset\": {\n \"description\": \"Time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging attributes for listing events.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of events in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"Sort parameters when querying events.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCases.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCases.json new file mode 100644 index 00000000..eeaff216 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCases.json @@ -0,0 +1,266 @@ +{ + "name": "SearchCases", + "fully_qualified_name": "DatadogApi.SearchCases@0.1.0", + "description": "Search and retrieve support cases from Datadog.\n\nUse this tool to search and retrieve support case information from Datadog. It is useful for accessing case details and statuses.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "page_size", + "required": false, + "description": "The number of results per page, with a maximum value of 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_number", + "required": false, + "description": "The specific page number to return in the search results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[number]" + }, + { + "name": "sort_by_field", + "required": false, + "description": "Specify the field to sort by. Options are 'created_at', 'priority', or 'status'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "priority", + "status" + ], + "properties": null, + "inner_properties": null, + "description": "Specify which field to sort" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort[field]" + }, + { + "name": "search_query", + "required": false, + "description": "The search query to filter cases. Use keywords or phrases to specify your search criteria.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query" + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter" + }, + { + "name": "order_ascending", + "required": false, + "description": "Set to true for ascending order; false for descending.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify if order is ascending or not" + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort[asc]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchCases'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[number]", + "tool_parameter_name": "page_number", + "description": "Specific page number to return.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific page number to return." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + }, + { + "name": "sort[field]", + "tool_parameter_name": "sort_by_field", + "description": "Specify which field to sort", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created_at", + "priority", + "status" + ], + "properties": null, + "inner_properties": null, + "description": "Specify which field to sort" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter", + "tool_parameter_name": "search_query", + "description": "Search query", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort[asc]", + "tool_parameter_name": "order_ascending", + "description": "Specify if order is ascending or not", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specify if order is ascending or not" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCiPipelineEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCiPipelineEvents.json new file mode 100644 index 00000000..66160502 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCiPipelineEvents.json @@ -0,0 +1,363 @@ +{ + "name": "SearchCiPipelineEvents", + "fully_qualified_name": "DatadogApi.SearchCiPipelineEvents@0.1.0", + "description": "Retrieve CI pipeline events matching a search query.\n\nUse this tool to obtain CI Visibility pipeline events that fit a specific search query. It's useful for filtering and searching through pipeline events using complex queries. The results are paginated.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "min_time_for_events", + "required": false, + "description": "Specify the minimum time for the requested events. Supports date, math expressions, and timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "search_query", + "required": false, + "description": "The search query using CI Visibility Explorer search syntax to filter pipeline events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "filter_to_time", + "required": false, + "description": "The maximum time for requested events; supports date, math, and timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "query_time_offset_seconds", + "required": false, + "description": "The time offset in seconds to apply to the query for event retrieval.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.time_offset" + }, + { + "name": "timezone", + "required": false, + "description": "Specify the timezone as GMT, UTC, a UTC offset (like UTC+1), or a Timezone Database identifier (e.g., America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timezone" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Use this to fetch the next set of results by providing the cursor value from the previous query response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "max_events_per_page", + "required": false, + "description": "Specify the maximum number of events to retrieve in a single response. This limits the number of events returned in one page of results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_events_by", + "required": false, + "description": "Defines the order of CI pipeline events by timestamp. Use 'timestamp' for ascending order and '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchCIAppPipelineEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ci/pipelines/events/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "min_time_for_events", + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now-15m", + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "search_query", + "description": "The search query following the CI Visibility Explorer search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "filter_to_time", + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now", + "documentation_urls": [] + }, + { + "name": "options.time_offset", + "tool_parameter_name": "query_time_offset_seconds", + "description": "The time offset (in seconds) to apply to the query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "options.timezone", + "tool_parameter_name": "timezone", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "UTC", + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "max_events_per_page", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_events_by", + "description": "Sort parameters when querying events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a pipelines search.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query following the CI Visibility Explorer search syntax.\",\n \"example\": \"@ci.provider.name:github AND @ci.status:error\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nOnly supply timezone or time offset, not both. Otherwise, the query fails.\",\n \"properties\": {\n \"time_offset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging attributes for listing events.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of events in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"Sort parameters when querying events.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCiTestEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCiTestEvents.json new file mode 100644 index 00000000..0ba5a5b9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchCiTestEvents.json @@ -0,0 +1,363 @@ +{ + "name": "SearchCiTestEvents", + "fully_qualified_name": "DatadogApi.SearchCiTestEvents@0.1.0", + "description": "Retrieve CI Visibility test events with advanced search capabilities.\n\nUse this tool to obtain CI Visibility test events that match specific search criteria. Ideal for building complex event filtering and searching within Datadog's CI data.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_time_filter", + "required": false, + "description": "The minimum time for requested events; can be a date, mathematical expression, or timestamp in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "search_query", + "required": false, + "description": "The search query using CI Visibility Explorer syntax for filtering test events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "maximum_event_time", + "required": false, + "description": "The maximum time for the requested events. Supports date strings, math expressions, or timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "time_offset_seconds", + "required": false, + "description": "The time offset, in seconds, to apply to the query for adjusting the search time range.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.time_offset" + }, + { + "name": "timezone", + "required": false, + "description": "Specify the timezone as GMT, UTC, a UTC offset (e.g., UTC+1), or a Timezone Database identifier (e.g., America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timezone" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Cursor for retrieving the next set of paginated results based on previous queries.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "maximum_events_in_response", + "required": false, + "description": "Specify the maximum number of events to be returned in the response. This limits the size of the result set.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify the sorting order for events. Use 'timestamp' for ascending or '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchCIAppTestEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ci/tests/events/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "start_time_filter", + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now-15m", + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "search_query", + "description": "The search query following the CI Visibility Explorer search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the CI Visibility Explorer search syntax." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "maximum_event_time", + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now", + "documentation_urls": [] + }, + { + "name": "options.time_offset", + "tool_parameter_name": "time_offset_seconds", + "description": "The time offset (in seconds) to apply to the query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "options.timezone", + "tool_parameter_name": "timezone", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "UTC", + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "maximum_events_in_response", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Sort parameters when querying events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a tests search.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query following the CI Visibility Explorer search syntax.\",\n \"example\": \"@test.service:web-ui-tests AND @test.status:fail\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nOnly supply timezone or time offset, not both. Otherwise, the query fails.\",\n \"properties\": {\n \"time_offset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging attributes for listing events.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of events in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"Sort parameters when querying events.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogEvents.json new file mode 100644 index 00000000..8d749470 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogEvents.json @@ -0,0 +1,363 @@ +{ + "name": "SearchDatadogEvents", + "fully_qualified_name": "DatadogApi.SearchDatadogEvents@0.1.0", + "description": "Search and filter events in Datadog.\n\nUse this tool to find and filter events in Datadog using complex search queries. It returns a paginated list of events that match the specified criteria.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_time", + "required": false, + "description": "The earliest time for requested events, using date math or timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events. Supports date math and regular timestamps in milliseconds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "event_search_query", + "required": false, + "description": "The search query using Datadog's event search syntax to filter events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the event search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "max_event_time", + "required": false, + "description": "Specify the maximum time for the events. Supports date math and timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events. Supports date math and regular timestamps in milliseconds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "time_offset_seconds", + "required": false, + "description": "The time offset to apply to the query in seconds. Use an integer to specify the shift in time for the search results.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset to apply to the query in seconds." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timeOffset" + }, + { + "name": "timezone", + "required": false, + "description": "Specify the timezone for the query. It can be GMT, UTC, an offset (like UTC+1), or a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timezone" + }, + { + "name": "paging_cursor", + "required": false, + "description": "The cursor for pagination to retrieve the next set of results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The returned paging point to use to get the next results." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "maximum_events_per_page", + "required": false, + "description": "Specify the maximum number of events returned per page in the response. This controls the pagination size.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of logs in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify event sorting order: 'timestamp' for ascending, '-timestamp' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The sort parameters when querying events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/events/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "start_time", + "description": "The minimum time for the requested events. Supports date math and regular timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events. Supports date math and regular timestamps in milliseconds." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now-15m", + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "event_search_query", + "description": "The search query following the event search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the event search syntax." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "max_event_time", + "description": "The maximum time for the requested events. Supports date math and regular timestamps in milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events. Supports date math and regular timestamps in milliseconds." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now", + "documentation_urls": [] + }, + { + "name": "options.timeOffset", + "tool_parameter_name": "time_offset_seconds", + "description": "The time offset to apply to the query in seconds.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset to apply to the query in seconds." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "options.timezone", + "tool_parameter_name": "timezone", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "UTC", + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "paging_cursor", + "description": "The returned paging point to use to get the next results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The returned paging point to use to get the next results." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "maximum_events_per_page", + "description": "The maximum number of logs in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of logs in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "The sort parameters when querying events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The sort parameters when querying events." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The object sent with the request to retrieve a list of events from your organization.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested events. Supports date math and regular timestamps in milliseconds.\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query following the event search syntax.\",\n \"example\": \"service:web* AND @http.status_code:[200 TO 299]\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested events. Supports date math and regular timestamps in milliseconds.\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"The global query options that are used. Either provide a timezone or a time offset but not both,\\notherwise the query fails.\",\n \"properties\": {\n \"timeOffset\": {\n \"description\": \"The time offset to apply to the query in seconds.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Pagination settings.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"The returned paging point to use to get the next results.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum number of logs in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"The sort parameters when querying events.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogIncidents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogIncidents.json new file mode 100644 index 00000000..855ca8ff --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogIncidents.json @@ -0,0 +1,270 @@ +{ + "name": "SearchDatadogIncidents", + "fully_qualified_name": "DatadogApi.SearchDatadogIncidents@0.1.0", + "description": "Search for incidents in Datadog by query.\n\nUse this tool to find incidents in Datadog that match a specific query. It helps in quickly retrieving relevant incident information based on search criteria.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_query", + "required": true, + "description": "Query to determine which incidents to return. Use facets joined by `AND` and multiple values by `OR`, e.g., `state:active AND severity:(SEV-2 OR SEV-1)`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which incidents should be returned. The query can contain any number of incident facets\njoined by `ANDs`, along with multiple values for each of those facets joined by `OR`s. For\nexample: `state:active AND severity:(SEV-2 OR SEV-1)`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "query" + }, + { + "name": "include_related_objects", + "required": false, + "description": "Specifies which types of related objects ('users', 'attachments') should be included in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users", + "attachments" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "sort_order", + "required": false, + "description": "Defines the order of returned incidents. Use 'created' for ascending and '-created' for descending.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created", + "-created" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the order of returned incidents." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + }, + { + "name": "page_size", + "required": false, + "description": "Specify the number of incidents to return per page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[size]" + }, + { + "name": "page_offset", + "required": false, + "description": "The starting position offset for returning incidents. Use an integer value.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page[offset]" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchIncidents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/search", + "http_method": "GET", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_objects", + "description": "Specifies which types of related objects should be included in the response.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users", + "attachments" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "query", + "tool_parameter_name": "incident_query", + "description": "Specifies which incidents should be returned. The query can contain any number of incident facets\njoined by `ANDs`, along with multiple values for each of those facets joined by `OR`s. For\nexample: `state:active AND severity:(SEV-2 OR SEV-1)`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which incidents should be returned. The query can contain any number of incident facets\njoined by `ANDs`, along with multiple values for each of those facets joined by `OR`s. For\nexample: `state:active AND severity:(SEV-2 OR SEV-1)`." + }, + "accepted_as": "query", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Specifies the order of returned incidents.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "created", + "-created" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the order of returned incidents." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page[size]", + "tool_parameter_name": "page_size", + "description": "Size for a given page. The maximum allowed value is 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Size for a given page. The maximum allowed value is 100." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "page[offset]", + "tool_parameter_name": "page_offset", + "description": "Specific offset to use as the beginning of the returned page.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific offset to use as the beginning of the returned page." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": 0, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogIssues.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogIssues.json new file mode 100644 index 00000000..6a3817d4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchDatadogIssues.json @@ -0,0 +1,389 @@ +{ + "name": "SearchDatadogIssues", + "fully_qualified_name": "DatadogApi.SearchDatadogIssues@0.1.0", + "description": "Search and retrieve issues from Datadog using a query.\n\nUse this tool to programmatically search for issues in your organization via Datadog. It returns a list of issues that match a specified search query, up to 100 per request.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "start_date_millis", + "required": true, + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.from" + }, + { + "name": "search_event_query", + "required": true, + "description": "Search query using the event search syntax to find relevant issues.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following the event search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.query" + }, + { + "name": "end_date", + "required": true, + "description": "End date (exclusive) for the query in milliseconds since the Unix epoch. Determines up to when the issues are retrieved.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date (exclusive) of the query in milliseconds since the Unix epoch." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.to" + }, + { + "name": "object_type", + "required": true, + "description": "Specify the type of the object. The value must be 'search_request'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "search_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the object." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "include_relationship_objects", + "required": false, + "description": "List of relationship objects to include in the response, specified as an array of strings.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationship objects that should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "sort_results_by", + "required": false, + "description": "Attribute to sort the search results. Options: TOTAL_COUNT, FIRST_SEEN, IMPACTED_SESSIONS, PRIORITY.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "TOTAL_COUNT", + "FIRST_SEEN", + "IMPACTED_SESSIONS", + "PRIORITY" + ], + "properties": null, + "inner_properties": null, + "description": "The attribute to sort the search results by." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.order_by" + }, + { + "name": "search_persona", + "required": false, + "description": "Persona for the search. Choose from ALL, BROWSER, MOBILE, or BACKEND. Either track(s) or persona(s) must be specified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALL", + "BROWSER", + "MOBILE", + "BACKEND" + ], + "properties": null, + "inner_properties": null, + "description": "Persona for the search. Either track(s) or persona(s) must be specified." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.persona" + }, + { + "name": "event_track_to_query", + "required": false, + "description": "Specify the track of events to query: 'trace', 'logs', or 'rum'. Either track or persona must be provided.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "trace", + "logs", + "rum" + ], + "properties": null, + "inner_properties": null, + "description": "Track of the events to query. Either track(s) or persona(s) must be specified." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.track" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchIssues'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/error-tracking/issues/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationship_objects", + "description": "Comma-separated list of relationship objects that should be included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationship objects that should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.from", + "tool_parameter_name": "start_date_millis", + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date (inclusive) of the query in milliseconds since the Unix epoch." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.order_by", + "tool_parameter_name": "sort_results_by", + "description": "The attribute to sort the search results by.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "TOTAL_COUNT", + "FIRST_SEEN", + "IMPACTED_SESSIONS", + "PRIORITY" + ], + "properties": null, + "inner_properties": null, + "description": "The attribute to sort the search results by." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.persona", + "tool_parameter_name": "search_persona", + "description": "Persona for the search. Either track(s) or persona(s) must be specified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALL", + "BROWSER", + "MOBILE", + "BACKEND" + ], + "properties": null, + "inner_properties": null, + "description": "Persona for the search. Either track(s) or persona(s) must be specified." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.query", + "tool_parameter_name": "search_event_query", + "description": "Search query following the event search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following the event search syntax." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.to", + "tool_parameter_name": "end_date", + "description": "End date (exclusive) of the query in milliseconds since the Unix epoch.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date (exclusive) of the query in milliseconds since the Unix epoch." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.track", + "tool_parameter_name": "event_track_to_query", + "description": "Track of the events to query. Either track(s) or persona(s) must be specified.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "trace", + "logs", + "rum" + ], + "properties": null, + "inner_properties": null, + "description": "Track of the events to query. Either track(s) or persona(s) must be specified." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "object_type", + "description": "Type of the object.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "search_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the object." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Search issues request payload.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Search issues request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Object describing a search issue request.\",\n \"properties\": {\n \"from\": {\n \"description\": \"Start date (inclusive) of the query in milliseconds since the Unix epoch.\",\n \"example\": 1671612804000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"order_by\": {\n \"description\": \"The attribute to sort the search results by.\",\n \"enum\": [\n \"TOTAL_COUNT\",\n \"FIRST_SEEN\",\n \"IMPACTED_SESSIONS\",\n \"PRIORITY\"\n ],\n \"example\": \"IMPACTED_SESSIONS\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TOTAL_COUNT\",\n \"FIRST_SEEN\",\n \"IMPACTED_SESSIONS\",\n \"PRIORITY\"\n ]\n },\n \"persona\": {\n \"description\": \"Persona for the search. Either track(s) or persona(s) must be specified.\",\n \"enum\": [\n \"ALL\",\n \"BROWSER\",\n \"MOBILE\",\n \"BACKEND\"\n ],\n \"example\": \"BACKEND\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALL\",\n \"BROWSER\",\n \"MOBILE\",\n \"BACKEND\"\n ]\n },\n \"query\": {\n \"description\": \"Search query following the event search syntax.\",\n \"example\": \"service:orders-* AND @language:go\",\n \"type\": \"string\"\n },\n \"to\": {\n \"description\": \"End date (exclusive) of the query in milliseconds since the Unix epoch.\",\n \"example\": 1671620004000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"track\": {\n \"description\": \"Track of the events to query. Either track(s) or persona(s) must be specified.\",\n \"enum\": [\n \"trace\",\n \"logs\",\n \"rum\"\n ],\n \"example\": \"trace\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TRACE\",\n \"LOGS\",\n \"RUM\"\n ]\n }\n },\n \"required\": [\n \"query\",\n \"from\",\n \"to\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of the object.\",\n \"enum\": [\n \"search_request\"\n ],\n \"example\": \"search_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SEARCH_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Search issues request payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchFlakyTests.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchFlakyTests.json new file mode 100644 index 00000000..07bb82ee --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchFlakyTests.json @@ -0,0 +1,288 @@ +{ + "name": "SearchFlakyTests", + "fully_qualified_name": "DatadogApi.SearchFlakyTests@0.1.0", + "description": "Retrieve a list of flaky tests with pagination support.\n\nUse this tool to fetch information about flaky tests from the Flaky Test Management system. Useful for identifying tests that frequently fail or are unreliable.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "filter_query", + "required": false, + "description": "Search query for filtering flaky tests using log syntax. Keys include 'flaky_test_state', 'flaky_test_category', '@test.name', '@test.suite', '@test.module', '@test.service', '@git.repository.id_v2', '@git.branch', '@test.codeowners', 'env'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following log syntax used to filter flaky tests, same as on Flaky Tests Management UI. The supported search keys are:\n- `flaky_test_state`\n- `flaky_test_category`\n- `@test.name`\n- `@test.suite`\n- `@test.module`\n- `@test.service`\n- `@git.repository.id_v2`\n- `@git.branch`\n- `@test.codeowners`\n- `env`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter.query" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "A cursor from the previous request to fetch the following results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.page.cursor" + }, + { + "name": "maximum_flaky_tests_limit", + "required": false, + "description": "Specify the maximum number of flaky tests to include in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of flaky tests in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.page.limit" + }, + { + "name": "sort_flaky_tests", + "required": false, + "description": "Sort flaky test results by specified criteria: FQN, first or last flaked, failure rate, etc. Use prefixed '-' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fqn", + "-fqn", + "first_flaked", + "-first_flaked", + "last_flaked", + "-last_flaked", + "failure_rate", + "-failure_rate", + "pipelines_failed", + "-pipelines_failed", + "pipelines_duration_lost", + "-pipelines_duration_lost" + ], + "properties": null, + "inner_properties": null, + "description": "Parameter for sorting flaky test results. The default sort is by ascending Fully Qualified Name (FQN). The FQN is the concatenation of the test module, suite, and name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.sort" + }, + { + "name": "request_data_type", + "required": false, + "description": "Defines the data structure type for the Flaky Tests Search request. Use 'search_flaky_tests_request'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "search_flaky_tests_request" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `FlakyTestsSearchRequestDataType` object." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchFlakyTests'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/test/flaky-test-management/tests", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.filter.query", + "tool_parameter_name": "filter_query", + "description": "Search query following log syntax used to filter flaky tests, same as on Flaky Tests Management UI. The supported search keys are:\n- `flaky_test_state`\n- `flaky_test_category`\n- `@test.name`\n- `@test.suite`\n- `@test.module`\n- `@test.service`\n- `@git.repository.id_v2`\n- `@git.branch`\n- `@test.codeowners`\n- `env`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query following log syntax used to filter flaky tests, same as on Flaky Tests Management UI. The supported search keys are:\n- `flaky_test_state`\n- `flaky_test_category`\n- `@test.name`\n- `@test.suite`\n- `@test.module`\n- `@test.service`\n- `@git.repository.id_v2`\n- `@git.branch`\n- `@test.codeowners`\n- `env`" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "data.attributes.page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous request." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.page.limit", + "tool_parameter_name": "maximum_flaky_tests_limit", + "description": "Maximum number of flaky tests in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of flaky tests in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "data.attributes.sort", + "tool_parameter_name": "sort_flaky_tests", + "description": "Parameter for sorting flaky test results. The default sort is by ascending Fully Qualified Name (FQN). The FQN is the concatenation of the test module, suite, and name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fqn", + "-fqn", + "first_flaked", + "-first_flaked", + "last_flaked", + "-last_flaked", + "failure_rate", + "-failure_rate", + "pipelines_failed", + "-pipelines_failed", + "pipelines_duration_lost", + "-pipelines_duration_lost" + ], + "properties": null, + "inner_properties": null, + "description": "Parameter for sorting flaky test results. The default sort is by ascending Fully Qualified Name (FQN). The FQN is the concatenation of the test module, suite, and name." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "request_data_type", + "description": "The definition of `FlakyTestsSearchRequestDataType` object.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "search_flaky_tests_request" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `FlakyTestsSearchRequestDataType` object." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a flaky tests search.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The JSON:API data for flaky tests search request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for the flaky tests search request.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"Search filter settings.\",\n \"properties\": {\n \"query\": {\n \"default\": \"*\",\n \"description\": \"Search query following log syntax used to filter flaky tests, same as on Flaky Tests Management UI. The supported search keys are:\\n- `flaky_test_state`\\n- `flaky_test_category`\\n- `@test.name`\\n- `@test.suite`\\n- `@test.module`\\n- `@test.service`\\n- `@git.repository.id_v2`\\n- `@git.branch`\\n- `@test.codeowners`\\n- `env`\",\n \"example\": \"flaky_test_state:active @git.repository.id_v2:\\\"github.com/datadog/shopist\\\"\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Pagination attributes for listing flaky tests.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous request.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of flaky tests in the response.\",\n \"example\": 25,\n \"format\": \"int64\",\n \"maximum\": 1000,\n \"minimum\": 1,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"Parameter for sorting flaky test results. The default sort is by ascending Fully Qualified Name (FQN). The FQN is the concatenation of the test module, suite, and name.\",\n \"enum\": [\n \"fqn\",\n \"-fqn\",\n \"first_flaked\",\n \"-first_flaked\",\n \"last_flaked\",\n \"-last_flaked\",\n \"failure_rate\",\n \"-failure_rate\",\n \"pipelines_failed\",\n \"-pipelines_failed\",\n \"pipelines_duration_lost\",\n \"-pipelines_duration_lost\"\n ],\n \"example\": \"failure_rate\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FQN_ASCENDING\",\n \"FQN_DESCENDING\",\n \"FIRST_FLAKED_ASCENDING\",\n \"FIRST_FLAKED_DESCENDING\",\n \"LAST_FLAKED_ASCENDING\",\n \"LAST_FLAKED_DESCENDING\",\n \"FAILURE_RATE_ASCENDING\",\n \"FAILURE_RATE_DESCENDING\",\n \"PIPELINES_FAILED_ASCENDING\",\n \"PIPELINES_FAILED_DESCENDING\",\n \"PIPELINES_DURATION_LOST_ASCENDING\",\n \"PIPELINES_DURATION_LOST_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The definition of `FlakyTestsSearchRequestDataType` object.\",\n \"enum\": [\n \"search_flaky_tests_request\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SEARCH_FLAKY_TESTS_REQUEST\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchRumEvents.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchRumEvents.json new file mode 100644 index 00000000..eadb31e1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchRumEvents.json @@ -0,0 +1,363 @@ +{ + "name": "SearchRumEvents", + "fully_qualified_name": "DatadogApi.SearchRumEvents@0.1.0", + "description": "Search and filter RUM events based on a query.\n\nThis tool retrieves RUM events that match a specified search query. It's useful for building complex filtering and search operations on RUM events. Results are paginated for easy navigation.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "minimum_event_time", + "required": false, + "description": "The minimum time for events in ISO 8601 format, math expressions, or milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "rum_search_query", + "required": false, + "description": "The search query following the RUM search syntax to filter events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the RUM search syntax." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "filter_max_time", + "required": false, + "description": "Specify the maximum event time in ISO 8601 format, mathematical expressions, or milliseconds.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "time_offset_seconds", + "required": false, + "description": "The time offset in seconds to apply to the query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.time_offset" + }, + { + "name": "timezone", + "required": false, + "description": "Specify the timezone as GMT, UTC, an offset (like UTC+1), or a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "options.timezone" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "Provide the cursor to fetch the next set of results from a previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "maximum_events_in_response", + "required": false, + "description": "Specifies the maximum number of RUM events to return in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify the sort order for events by timestamp. Use 'timestamp' for ascending order and '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchRUMEvents'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/events/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "minimum_event_time", + "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now-15m", + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "rum_search_query", + "description": "The search query following the RUM search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query following the RUM search syntax." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "*", + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "filter_max_time", + "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "now", + "documentation_urls": [] + }, + { + "name": "options.time_offset", + "tool_parameter_name": "time_offset_seconds", + "description": "The time offset (in seconds) to apply to the query.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time offset (in seconds) to apply to the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "options.timezone", + "tool_parameter_name": "timezone", + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "UTC", + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "List following results with a cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List following results with a cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "maximum_events_in_response", + "description": "Maximum number of events in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum number of events in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "Sort parameters when querying events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "Sort parameters when querying events." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a RUM events list.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"The search and filter query settings.\",\n \"properties\": {\n \"from\": {\n \"default\": \"now-15m\",\n \"description\": \"The minimum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).\",\n \"example\": \"now-15m\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query following the RUM search syntax.\",\n \"example\": \"@type:session AND @session.type:user\",\n \"type\": \"string\"\n },\n \"to\": {\n \"default\": \"now\",\n \"description\": \"The maximum time for the requested events; supports date (in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format with full date, hours, minutes, and the `Z` UTC indicator - seconds and fractional seconds are optional), math, and regular timestamps (in milliseconds).\",\n \"example\": \"now\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"options\": {\n \"description\": \"Global query options that are used during the query.\\nNote: Only supply timezone or time offset, not both. Otherwise, the query fails.\",\n \"properties\": {\n \"time_offset\": {\n \"description\": \"The time offset (in seconds) to apply to the query.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).\",\n \"example\": \"GMT\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"Paging attributes for listing events.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"List following results with a cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"Maximum number of events in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"Sort parameters when querying events.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchSecuritySignals.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchSecuritySignals.json new file mode 100644 index 00000000..a75e1714 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SearchSecuritySignals.json @@ -0,0 +1,297 @@ +{ + "name": "SearchSecuritySignals", + "fully_qualified_name": "DatadogApi.SearchSecuritySignals@0.1.0", + "description": "Retrieve security signals based on a search query.\n\nUse this tool to find security signals that match specific search criteria. Ideal for monitoring security alerts and potential threats.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "minimum_timestamp", + "required": false, + "description": "The minimum timestamp for requested security signals. Use ISO 8601 format, e.g., '2023-10-05T14:48:00Z'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.from" + }, + { + "name": "search_query", + "required": false, + "description": "A string used to search and filter the security signals based on specific criteria.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query for listing security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.query" + }, + { + "name": "maximum_timestamp_for_signals", + "required": false, + "description": "The latest date and time for security signals to be included in the search results, formatted as a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter.to" + }, + { + "name": "pagination_cursor", + "required": false, + "description": "The cursor to continue listing results from the previous query. Use it for paginating results.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.cursor" + }, + { + "name": "maximum_signals_per_response", + "required": false, + "description": "The maximum number of security signals to return in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "page.limit" + }, + { + "name": "sort_order", + "required": false, + "description": "Specify how to sort the security signals. Use 'timestamp' for ascending and '-timestamp' for descending order.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The sort parameters used for querying security signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "sort" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SearchSecurityMonitoringSignals'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/signals/search", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "filter.from", + "tool_parameter_name": "minimum_timestamp", + "description": "The minimum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The minimum timestamp for requested security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter.query", + "tool_parameter_name": "search_query", + "description": "Search query for listing security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Search query for listing security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "filter.to", + "tool_parameter_name": "maximum_timestamp_for_signals", + "description": "The maximum timestamp for requested security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum timestamp for requested security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.cursor", + "tool_parameter_name": "pagination_cursor", + "description": "A list of results using the cursor provided in the previous query.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of results using the cursor provided in the previous query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "page.limit", + "tool_parameter_name": "maximum_signals_per_response", + "description": "The maximum number of security signals in the response.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maximum number of security signals in the response." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": 10, + "documentation_urls": [] + }, + { + "name": "sort", + "tool_parameter_name": "sort_order", + "description": "The sort parameters used for querying security signals.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "timestamp", + "-timestamp" + ], + "properties": null, + "inner_properties": null, + "description": "The sort parameters used for querying security signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The request for a security signal list.\",\n \"properties\": {\n \"filter\": {\n \"description\": \"Search filters for listing security signals.\",\n \"properties\": {\n \"from\": {\n \"description\": \"The minimum timestamp for requested security signals.\",\n \"example\": \"2019-01-02T09:42:36.320Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Search query for listing security signals.\",\n \"example\": \"security:attack status:high\",\n \"type\": \"string\"\n },\n \"to\": {\n \"description\": \"The maximum timestamp for requested security signals.\",\n \"example\": \"2019-01-03T09:42:36.320Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"page\": {\n \"description\": \"The paging attributes for listing security signals.\",\n \"properties\": {\n \"cursor\": {\n \"description\": \"A list of results using the cursor provided in the previous query.\",\n \"example\": \"eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==\",\n \"type\": \"string\"\n },\n \"limit\": {\n \"default\": 10,\n \"description\": \"The maximum number of security signals in the response.\",\n \"example\": 25,\n \"format\": \"int32\",\n \"maximum\": 1000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"sort\": {\n \"description\": \"The sort parameters used for querying security signals.\",\n \"enum\": [\n \"timestamp\",\n \"-timestamp\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TIMESTAMP_ASCENDING\",\n \"TIMESTAMP_DESCENDING\"\n ]\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": false\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SendInvitations.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SendInvitations.json new file mode 100644 index 00000000..5cdf3f93 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SendInvitations.json @@ -0,0 +1,256 @@ +{ + "name": "SendInvitations", + "fully_qualified_name": "DatadogApi.SendInvitations@0.1.0", + "description": "Invite users to join the organization via email.\n\nThis tool sends invitation emails to specified users, asking them to join the organization. It should be used when you need to extend an invite to new members through email.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_invitations_data", + "required": true, + "description": "A JSON array of user objects to invite. Each user object should include an 'id' and 'type'. 'type' must be 'users'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "Relationships data for user invitation." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "user_invitations" + ], + "properties": null, + "inner_properties": null, + "description": "User invitations type." + } + }, + "description": "List of user invitations." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SendInvitations'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/user_invitations", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "user_invitations_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "Relationships data for user invitation." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "user_invitations" + ], + "properties": null, + "inner_properties": null, + "description": "User invitations type." + } + }, + "description": "List of user invitations." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Object to invite users to join the organization.\",\n \"properties\": {\n \"data\": {\n \"description\": \"List of user invitations.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Object to create a user invitation.\",\n \"properties\": {\n \"relationships\": {\n \"description\": \"Relationships data for user invitation.\",\n \"properties\": {\n \"user\": {\n \"description\": \"Relationship to user.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-2345-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"user\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"user_invitations\",\n \"description\": \"User invitations type.\",\n \"enum\": [\n \"user_invitations\"\n ],\n \"example\": \"user_invitations\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USER_INVITATIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"relationships\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetOnCallTeamRoutingRules.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetOnCallTeamRoutingRules.json new file mode 100644 index 00000000..75847b2d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetOnCallTeamRoutingRules.json @@ -0,0 +1,504 @@ +{ + "name": "SetOnCallTeamRoutingRules", + "fully_qualified_name": "DatadogApi.SetOnCallTeamRoutingRules@0.1.0", + "description": "Set or update a team's On-Call routing rules in Datadog.\n\nUse this tool to configure or modify the On-Call routing rules for a specific team in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team whose routing rules are being set. It should be a string.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "routing_rules_request_data", + "required": true, + "description": "JSON payload for creating or updating routing rules, including rule attributes, ID, and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Specifies the list of actions to perform when the routing rule is matched." + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifies the policy to be applied when this routing rule matches." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the query or condition that triggers this routing rule." + }, + "time_restriction": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "restrictions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "end_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the ending time for this restriction." + }, + "start_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "start_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the starting time for this restriction." + } + }, + "description": "Defines the list of time-based restrictions." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the time zone applicable to the restrictions." + } + }, + "inner_properties": null, + "description": "Holds time zone information and a list of time restrictions for a routing rule." + }, + "urgency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "low", + "high", + "dynamic" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the level of urgency for a routing rule (low, high, or dynamic)." + } + }, + "description": "A list of routing rule items that define how incoming pages should be handled." + } + }, + "inner_properties": null, + "description": "Represents the attributes of a request to update or create team routing rules." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier for this set of team routing rules." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_routing_rules" + ], + "properties": null, + "inner_properties": null, + "description": "Team routing rules resource type." + } + }, + "inner_properties": null, + "description": "Holds the data necessary to create or update team routing rules, including attributes, ID, and resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to include in the response. Allowed: `rules`, `rules.policy`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `rules`, `rules.policy`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SetOnCallTeamRoutingRules'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/teams/{team_id}/routing-rules", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `rules`, `rules.policy`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `rules`, `rules.policy`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "The team ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team ID" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "routing_rules_request_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Specifies the list of actions to perform when the routing rule is matched." + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifies the policy to be applied when this routing rule matches." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines the query or condition that triggers this routing rule." + }, + "time_restriction": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "restrictions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "end_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the ending time for this restriction." + }, + "start_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "start_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the starting time for this restriction." + } + }, + "description": "Defines the list of time-based restrictions." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the time zone applicable to the restrictions." + } + }, + "inner_properties": null, + "description": "Holds time zone information and a list of time restrictions for a routing rule." + }, + "urgency": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "low", + "high", + "dynamic" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the level of urgency for a routing rule (low, high, or dynamic)." + } + }, + "description": "A list of routing rule items that define how incoming pages should be handled." + } + }, + "inner_properties": null, + "description": "Represents the attributes of a request to update or create team routing rules." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier for this set of team routing rules." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_routing_rules" + ], + "properties": null, + "inner_properties": null, + "description": "Team routing rules resource type." + } + }, + "inner_properties": null, + "description": "Holds the data necessary to create or update team routing rules, including attributes, ID, and resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Represents a request to create or update team routing rules, including the data payload.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"rules\": [\n {\n \"actions\": null,\n \"policy_id\": \"\",\n \"query\": \"tags.service:test\",\n \"time_restriction\": {\n \"restrictions\": [\n {\n \"end_day\": \"monday\",\n \"end_time\": \"17:00:00\",\n \"start_day\": \"monday\",\n \"start_time\": \"09:00:00\"\n },\n {\n \"end_day\": \"tuesday\",\n \"end_time\": \"17:00:00\",\n \"start_day\": \"tuesday\",\n \"start_time\": \"09:00:00\"\n }\n ],\n \"time_zone\": \"\"\n },\n \"urgency\": \"high\"\n },\n {\n \"actions\": [\n {\n \"channel\": \"channel\",\n \"type\": \"send_slack_message\",\n \"workspace\": \"workspace\"\n }\n ],\n \"policy_id\": \"fad4eee1-13f5-40d8-886b-4e56d8d5d1c6\",\n \"query\": \"\",\n \"time_restriction\": null,\n \"urgency\": \"low\"\n }\n ]\n },\n \"id\": \"27590dae-47be-4a7d-9abf-8f4e45124020\",\n \"type\": \"team_routing_rules\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Holds the data necessary to create or update team routing rules, including attributes, ID, and resource type.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Represents the attributes of a request to update or create team routing rules.\",\n \"properties\": {\n \"rules\": {\n \"description\": \"A list of routing rule items that define how incoming pages should be handled.\",\n \"items\": {\n \"description\": \"Defines an individual routing rule item that contains the rule data for the request.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Specifies the list of actions to perform when the routing rule is matched.\",\n \"items\": {\n \"description\": \"Defines an action that is executed when a routing rule matches certain criteria.\",\n \"oneOf\": [\n {\n \"description\": \"Sends a message to a Slack channel.\",\n \"properties\": {\n \"channel\": {\n \"description\": \"The channel ID.\",\n \"example\": \"CHANNEL\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"send_slack_message\",\n \"description\": \"Indicates that the action is a send Slack message action.\",\n \"enum\": [\n \"send_slack_message\"\n ],\n \"example\": \"send_slack_message\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SEND_SLACK_MESSAGE\"\n ]\n },\n \"workspace\": {\n \"description\": \"The workspace ID.\",\n \"example\": \"WORKSPACE\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"channel\",\n \"workspace\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Sends a message to a Microsoft Teams channel.\",\n \"properties\": {\n \"channel\": {\n \"description\": \"The channel ID.\",\n \"example\": \"CHANNEL\",\n \"type\": \"string\"\n },\n \"team\": {\n \"description\": \"The team ID.\",\n \"example\": \"TEAM\",\n \"type\": \"string\"\n },\n \"tenant\": {\n \"description\": \"The tenant ID.\",\n \"example\": \"TENANT\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"send_teams_message\",\n \"description\": \"Indicates that the action is a send Microsoft Teams message action.\",\n \"enum\": [\n \"send_teams_message\"\n ],\n \"example\": \"send_teams_message\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SEND_TEAMS_MESSAGE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"channel\",\n \"tenant\",\n \"team\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"policy_id\": {\n \"description\": \"Identifies the policy to be applied when this routing rule matches.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Defines the query or condition that triggers this routing rule.\",\n \"type\": \"string\"\n },\n \"time_restriction\": {\n \"description\": \"Holds time zone information and a list of time restrictions for a routing rule.\",\n \"properties\": {\n \"restrictions\": {\n \"description\": \"Defines the list of time-based restrictions.\",\n \"items\": {\n \"description\": \"Defines a single time restriction rule with start and end times and the applicable weekdays.\",\n \"properties\": {\n \"end_day\": {\n \"description\": \"A day of the week.\",\n \"enum\": [\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ]\n },\n \"end_time\": {\n \"description\": \"Specifies the ending time for this restriction.\",\n \"type\": \"string\"\n },\n \"start_day\": {\n \"description\": \"A day of the week.\",\n \"enum\": [\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ]\n },\n \"start_time\": {\n \"description\": \"Specifies the starting time for this restriction.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"time_zone\": {\n \"description\": \"Specifies the time zone applicable to the restrictions.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"time_zone\",\n \"restrictions\"\n ],\n \"type\": \"object\"\n },\n \"urgency\": {\n \"description\": \"Specifies the level of urgency for a routing rule (low, high, or dynamic).\",\n \"enum\": [\n \"low\",\n \"high\",\n \"dynamic\"\n ],\n \"example\": \"low\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOW\",\n \"HIGH\",\n \"DYNAMIC\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Specifies the unique identifier for this set of team routing rules.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"team_routing_rules\",\n \"description\": \"Team routing rules resource type.\",\n \"enum\": [\n \"team_routing_rules\"\n ],\n \"example\": \"team_routing_rules\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_ROUTING_RULES\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetOnDemandConcurrencyCap.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetOnDemandConcurrencyCap.json new file mode 100644 index 00000000..ce22c77c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetOnDemandConcurrencyCap.json @@ -0,0 +1,126 @@ +{ + "name": "SetOnDemandConcurrencyCap", + "fully_qualified_name": "DatadogApi.SetOnDemandConcurrencyCap@0.1.0", + "description": "Update the on-demand concurrency cap setting in Datadog.\n\nUse this tool to save a new value for the on-demand concurrency cap in the Datadog Synthetics settings. This updates the maximum number of on-demand tests that can run concurrently.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "on_demand_concurrency_cap_value", + "required": false, + "description": "Specify the new value for the on-demand concurrency cap in Datadog.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the on-demand concurrency cap." + }, + "inferrable": true, + "http_endpoint_parameter_name": "on_demand_concurrency_cap" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SetOnDemandConcurrencyCap'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/synthetics/settings/on_demand_concurrency_cap", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "on_demand_concurrency_cap", + "tool_parameter_name": "on_demand_concurrency_cap_value", + "description": "Value of the on-demand concurrency cap.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Value of the on-demand concurrency cap." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"On-demand concurrency cap attributes.\",\n \"properties\": {\n \"on_demand_concurrency_cap\": {\n \"description\": \"Value of the on-demand concurrency cap.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \".\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetServiceRuleOutcomesBatch.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetServiceRuleOutcomesBatch.json new file mode 100644 index 00000000..d88cc73e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SetServiceRuleOutcomesBatch.json @@ -0,0 +1,274 @@ +{ + "name": "SetServiceRuleOutcomesBatch", + "fully_qualified_name": "DatadogApi.SetServiceRuleOutcomesBatch@0.1.0", + "description": "Batch set multiple service-rule outcomes.\n\nThis tool is used to set multiple service-rule outcomes in a single batched request to Datadog, making it efficient for updating multiple outcomes simultaneously.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "scorecard_outcomes_batch", + "required": true, + "description": "JSON batch request for scorecard outcomes, including service details, rule evaluations, and remarks.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "results": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "remarks": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks." + }, + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID for a scorecard rule." + }, + "service_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique name for a service in the catalog." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pass", + "fail", + "skip" + ], + "properties": null, + "inner_properties": null, + "description": "The state of the rule evaluation." + } + }, + "description": "Set of scorecard outcomes to update." + } + }, + "inner_properties": null, + "description": "The JSON:API attributes for a batched set of scorecard outcomes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "batched-outcome" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard outcomes." + } + }, + "inner_properties": null, + "description": "Scorecard outcomes batch request data." + } + }, + "inner_properties": null, + "description": "Set of scorecard outcomes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateScorecardOutcomesBatch'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/scorecard/outcomes/batch", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "scorecard_outcomes_batch", + "description": "Set of scorecard outcomes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "results": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "remarks": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks." + }, + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID for a scorecard rule." + }, + "service_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique name for a service in the catalog." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pass", + "fail", + "skip" + ], + "properties": null, + "inner_properties": null, + "description": "The state of the rule evaluation." + } + }, + "description": "Set of scorecard outcomes to update." + } + }, + "inner_properties": null, + "description": "The JSON:API attributes for a batched set of scorecard outcomes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "batched-outcome" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard outcomes." + } + }, + "inner_properties": null, + "description": "Scorecard outcomes batch request data." + } + }, + "inner_properties": null, + "description": "Set of scorecard outcomes." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Scorecard outcomes batch request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Scorecard outcomes batch request data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The JSON:API attributes for a batched set of scorecard outcomes.\",\n \"properties\": {\n \"results\": {\n \"description\": \"Set of scorecard outcomes to update.\",\n \"items\": {\n \"description\": \"Scorecard outcome for a specific rule, for a given service within a batched update.\",\n \"properties\": {\n \"remarks\": {\n \"description\": \"Any remarks regarding the scorecard rule's evaluation, and supports HTML hyperlinks.\",\n \"example\": \"See: Services\",\n \"type\": \"string\"\n },\n \"rule_id\": {\n \"description\": \"The unique ID for a scorecard rule.\",\n \"example\": \"q8MQxk8TCqrHnWkx\",\n \"type\": \"string\"\n },\n \"service_name\": {\n \"description\": \"The unique name for a service in the catalog.\",\n \"example\": \"my-service\",\n \"type\": \"string\"\n },\n \"state\": {\n \"description\": \"The state of the rule evaluation.\",\n \"enum\": [\n \"pass\",\n \"fail\",\n \"skip\"\n ],\n \"example\": \"pass\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PASS\",\n \"FAIL\",\n \"SKIP\"\n ]\n }\n },\n \"required\": [\n \"rule_id\",\n \"service_name\",\n \"state\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"batched-outcome\",\n \"description\": \"The JSON:API type for scorecard outcomes.\",\n \"enum\": [\n \"batched-outcome\"\n ],\n \"example\": \"batched-outcome\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BATCHED_OUTCOME\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Set of scorecard outcomes.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SyncDatadogTeamsWithGithub.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SyncDatadogTeamsWithGithub.json new file mode 100644 index 00000000..c4c4e50f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/SyncDatadogTeamsWithGithub.json @@ -0,0 +1,204 @@ +{ + "name": "SyncDatadogTeamsWithGithub", + "fully_qualified_name": "DatadogApi.SyncDatadogTeamsWithGithub@0.1.0", + "description": "Link existing Datadog teams with GitHub teams by name matching.\n\nSynchronizes Datadog teams with GitHub teams by name, evaluating all current teams without making modifications. Requires a connected GitHub organization and appropriate permissions.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "source_platform", + "required": true, + "description": "Specify the external source platform for team synchronization. Only \"github\" is supported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "github" + ], + "properties": null, + "inner_properties": null, + "description": "The external source platform for team synchronization. Only \"github\" is supported." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.source" + }, + { + "name": "synchronization_type", + "required": true, + "description": "Type of synchronization operation. Only \"link\" is supported to match existing teams by name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "link" + ], + "properties": null, + "inner_properties": null, + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.type" + }, + { + "name": "team_sync_bulk_type", + "required": true, + "description": "Specifies the type for bulk team synchronization. Use 'team_sync_bulk'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_sync_bulk" + ], + "properties": null, + "inner_properties": null, + "description": "Team sync bulk type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'SyncTeams'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/sync", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.source", + "tool_parameter_name": "source_platform", + "description": "The external source platform for team synchronization. Only \"github\" is supported.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "github" + ], + "properties": null, + "inner_properties": null, + "description": "The external source platform for team synchronization. Only \"github\" is supported." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.type", + "tool_parameter_name": "synchronization_type", + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "link" + ], + "properties": null, + "inner_properties": null, + "description": "The type of synchronization operation. Only \"link\" is supported, which links existing teams by matching names." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "team_sync_bulk_type", + "description": "Team sync bulk type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_sync_bulk" + ], + "properties": null, + "inner_properties": null, + "description": "Team sync bulk type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Team sync request.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"source\": \"github\",\n \"type\": \"link\"\n },\n \"type\": \"team_sync_bulk\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Team sync data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team sync attributes.\",\n \"properties\": {\n \"source\": {\n \"description\": \"The external source platform for team synchronization. Only \\\"github\\\" is supported.\",\n \"enum\": [\n \"github\"\n ],\n \"example\": \"github\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GITHUB\"\n ]\n },\n \"type\": {\n \"description\": \"The type of synchronization operation. Only \\\"link\\\" is supported, which links existing teams by matching names.\",\n \"enum\": [\n \"link\"\n ],\n \"example\": \"link\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LINK\"\n ]\n }\n },\n \"required\": [\n \"source\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Team sync bulk type.\",\n \"enum\": [\n \"team_sync_bulk\"\n ],\n \"example\": \"team_sync_bulk\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_SYNC_BULK\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TestSecurityMonitoringRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TestSecurityMonitoringRule.json new file mode 100644 index 00000000..d67d33c1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TestSecurityMonitoringRule.json @@ -0,0 +1,325 @@ +{ + "name": "TestSecurityMonitoringRule", + "fully_qualified_name": "DatadogApi.TestSecurityMonitoringRule@0.1.0", + "description": "Test an existing security monitoring rule in Datadog.\n\nUse this tool to test an existing security monitoring rule in Datadog by specifying the rule ID. It will return the results of the test, helping to ensure the rule is functioning as expected.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_monitoring_rule_id", + "required": true, + "description": "The ID of the existing security monitoring rule to test in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "test_request_body", + "required": true, + "description": "JSON object containing the rule and test data: 'rule' specifies the rule to test, 'ruleQueryPayloads' is an array detailing payloads used to test the rule query, including expected results, indexes, and payload details like source, tags, and message.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Test a rule." + }, + "ruleQueryPayloads": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expectedResult": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected result of the test." + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the query under test." + }, + "payload": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ddsource": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Source of the payload." + }, + "ddtags": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags associated with your data." + }, + "hostname": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the originating host of the log." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The message of the payload." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the application or service generating the data." + } + }, + "inner_properties": null, + "description": "Payload used to test the rule query." + } + }, + "description": "Data payloads used to test rules query with the expected result." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'TestExistingSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}/test", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "security_monitoring_rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "test_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Test a rule." + }, + "ruleQueryPayloads": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expectedResult": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected result of the test." + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the query under test." + }, + "payload": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ddsource": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Source of the payload." + }, + "ddtags": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags associated with your data." + }, + "hostname": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the originating host of the log." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The message of the payload." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the application or service generating the data." + } + }, + "inner_properties": null, + "description": "Payload used to test the rule query." + } + }, + "description": "Data payloads used to test rules query with the expected result." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Test the rule queries of a rule (rule property is ignored when applied to an existing rule)\",\n \"properties\": {\n \"rule\": {\n \"description\": \"Test a rule.\",\n \"oneOf\": [\n {\n \"description\": \"The payload of a rule to test\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"customQueryExtension\": {\n \"description\": \"Query extension to append to the logs query.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"**This field is currently unstable and might be removed in a minor version upgrade.**\\nThe index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules - in other words, when the `schedulingOptions` field is present in the rule payload.\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"description\": \"List of indexes to query when the `dataSource` is `logs`. Only used for scheduled rules, such as when the `schedulingOptions` field is present in the rule payload.\",\n \"items\": {\n \"description\": \"Index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metric\": {\n \"deprecated\": true,\n \"description\": \"(Deprecated) The target field to aggregate over when using the sum or max\\naggregations. `metrics` field should be used instead.\",\n \"type\": \"string\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables for the rule.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulingOptions\": {\n \"description\": \"Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.\",\n \"nullable\": true,\n \"properties\": {\n \"rrule\": {\n \"description\": \"Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference.\",\n \"example\": \"FREQ=HOURLY;INTERVAL=1;\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"Start date for the schedule, in ISO 8601 format without timezone.\",\n \"example\": \"2025-07-14T12:00:00\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating signals from third-party rules. Only available for third-party rules.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when a signal is generated by a third party rule.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"log_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG_DETECTION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"ruleQueryPayloads\": {\n \"description\": \"Data payloads used to test rules query with the expected result.\",\n \"items\": {\n \"description\": \"Payload to test a rule query with the expected result.\",\n \"properties\": {\n \"expectedResult\": {\n \"description\": \"Expected result of the test.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"Index of the query under test.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"payload\": {\n \"additionalProperties\": {},\n \"description\": \"Payload used to test the rule query.\",\n \"properties\": {\n \"ddsource\": {\n \"description\": \"Source of the payload.\",\n \"example\": \"nginx\",\n \"type\": \"string\"\n },\n \"ddtags\": {\n \"description\": \"Tags associated with your data.\",\n \"example\": \"env:staging,version:5.1\",\n \"type\": \"string\"\n },\n \"hostname\": {\n \"description\": \"The name of the originating host of the log.\",\n \"example\": \"i-012345678\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"The message of the payload.\",\n \"example\": \"2019-11-19T14:37:58,995 INFO [process.name][20081] Hello World\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The name of the application or service generating the data.\",\n \"example\": \"payment\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TestSecurityRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TestSecurityRule.json new file mode 100644 index 00000000..280dd68a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TestSecurityRule.json @@ -0,0 +1,292 @@ +{ + "name": "TestSecurityRule", + "fully_qualified_name": "DatadogApi.TestSecurityRule@0.1.0", + "description": "Test a security monitoring rule.\n\nUse this tool to test a security monitoring rule within Datadog's system. It should be called when you need to verify the effectiveness or functionality of a specific rule.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "test_payload", + "required": true, + "description": "JSON object containing the rule to be tested and associated query payloads. Includes rule details and an array of query payloads, each with an expected result, index, and payload data including source, tags, hostname, message, and service.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Test a rule." + }, + "ruleQueryPayloads": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expectedResult": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected result of the test." + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the query under test." + }, + "payload": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ddsource": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Source of the payload." + }, + "ddtags": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags associated with your data." + }, + "hostname": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the originating host of the log." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The message of the payload." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the application or service generating the data." + } + }, + "inner_properties": null, + "description": "Payload used to test the rule query." + } + }, + "description": "Data payloads used to test rules query with the expected result." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'TestSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/test", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "test_payload", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Test a rule." + }, + "ruleQueryPayloads": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expectedResult": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expected result of the test." + }, + "index": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Index of the query under test." + }, + "payload": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ddsource": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Source of the payload." + }, + "ddtags": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags associated with your data." + }, + "hostname": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the originating host of the log." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The message of the payload." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the application or service generating the data." + } + }, + "inner_properties": null, + "description": "Payload used to test the rule query." + } + }, + "description": "Data payloads used to test rules query with the expected result." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Test the rule queries of a rule (rule property is ignored when applied to an existing rule)\",\n \"properties\": {\n \"rule\": {\n \"description\": \"Test a rule.\",\n \"oneOf\": [\n {\n \"description\": \"The payload of a rule to test\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"customQueryExtension\": {\n \"description\": \"Query extension to append to the logs query.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"**This field is currently unstable and might be removed in a minor version upgrade.**\\nThe index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules - in other words, when the `schedulingOptions` field is present in the rule payload.\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"description\": \"List of indexes to query when the `dataSource` is `logs`. Only used for scheduled rules, such as when the `schedulingOptions` field is present in the rule payload.\",\n \"items\": {\n \"description\": \"Index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metric\": {\n \"deprecated\": true,\n \"description\": \"(Deprecated) The target field to aggregate over when using the sum or max\\naggregations. `metrics` field should be used instead.\",\n \"type\": \"string\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables for the rule.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulingOptions\": {\n \"description\": \"Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.\",\n \"nullable\": true,\n \"properties\": {\n \"rrule\": {\n \"description\": \"Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference.\",\n \"example\": \"FREQ=HOURLY;INTERVAL=1;\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"Start date for the schedule, in ISO 8601 format without timezone.\",\n \"example\": \"2025-07-14T12:00:00\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating signals from third-party rules. Only available for third-party rules.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when a signal is generated by a third party rule.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"log_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG_DETECTION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"ruleQueryPayloads\": {\n \"description\": \"Data payloads used to test rules query with the expected result.\",\n \"items\": {\n \"description\": \"Payload to test a rule query with the expected result.\",\n \"properties\": {\n \"expectedResult\": {\n \"description\": \"Expected result of the test.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"Index of the query under test.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"payload\": {\n \"additionalProperties\": {},\n \"description\": \"Payload used to test the rule query.\",\n \"properties\": {\n \"ddsource\": {\n \"description\": \"Source of the payload.\",\n \"example\": \"nginx\",\n \"type\": \"string\"\n },\n \"ddtags\": {\n \"description\": \"Tags associated with your data.\",\n \"example\": \"env:staging,version:5.1\",\n \"type\": \"string\"\n },\n \"hostname\": {\n \"description\": \"The name of the originating host of the log.\",\n \"example\": \"i-012345678\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"The message of the payload.\",\n \"example\": \"2019-11-19T14:37:58,995 INFO [process.name][20081] Hello World\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The name of the application or service generating the data.\",\n \"example\": \"payment\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TriggerAwsResourceScan.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TriggerAwsResourceScan.json new file mode 100644 index 00000000..19a448d9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TriggerAwsResourceScan.json @@ -0,0 +1,163 @@ +{ + "name": "TriggerAwsResourceScan", + "fully_qualified_name": "DatadogApi.TriggerAwsResourceScan@0.1.0", + "description": "Trigger a high-priority scan of an AWS resource.\n\nUse this tool to initiate a high-priority scan of a specific AWS resource. Ensure agentless scanning is activated for the AWS account containing the resource you wish to scan.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_resource_arn", + "required": true, + "description": "The ARN of the AWS resource to scan, such as EC2, Lambda, AMI, ECR, RDS, or S3.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The arn of the resource to scan. Agentless supports the scan of EC2 instances, lambda functions, AMI, ECR, RDS and S3 buckets." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.arn" + }, + { + "name": "task_type", + "required": true, + "description": "The type of the on-demand task. This must always be set to 'aws_resource'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_resource" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the on demand task. The value should always be `aws_resource`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateAwsOnDemandTask'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/ondemand/aws", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.arn", + "tool_parameter_name": "aws_resource_arn", + "description": "The arn of the resource to scan. Agentless supports the scan of EC2 instances, lambda functions, AMI, ECR, RDS and S3 buckets.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The arn of the resource to scan. Agentless supports the scan of EC2 instances, lambda functions, AMI, ECR, RDS and S3 buckets." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "task_type", + "description": "The type of the on demand task. The value should always be `aws_resource`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_resource" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the on demand task. The value should always be `aws_resource`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "aws_resource", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the on demand task to submit.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single AWS on demand task.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for the AWS on demand task.\",\n \"properties\": {\n \"arn\": {\n \"description\": \"The arn of the resource to scan. Agentless supports the scan of EC2 instances, lambda functions, AMI, ECR, RDS and S3 buckets.\",\n \"example\": \"arn:aws:ec2:us-east-1:727000456123:instance/i-0eabb50529b67a1ba\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"arn\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"aws_resource\",\n \"description\": \"The type of the on demand task. The value should always be `aws_resource`.\",\n \"enum\": [\n \"aws_resource\"\n ],\n \"example\": \"aws_resource\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS_RESOURCE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The definition of the on demand task.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TriggerOnCallPage.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TriggerOnCallPage.json new file mode 100644 index 00000000..e37139f5 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/TriggerOnCallPage.json @@ -0,0 +1,342 @@ +{ + "name": "TriggerOnCallPage", + "fully_qualified_name": "DatadogApi.TriggerOnCallPage@0.1.0", + "description": "Triggers a new On-Call Page in Datadog.\n\nUse this tool to trigger a new On-Call Page in Datadog whenever immediate attention is required. Ideal for alerting on-call team members.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "issue_summary", + "required": false, + "description": "A short summary of the issue or context for the On-Call Page.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short summary of the issue or context." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "tags_for_categorization", + "required": false, + "description": "An array of tags for categorizing or filtering the On-Call page.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to help categorize or filter the page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + }, + { + "name": "target_identifier", + "required": false, + "description": "Identifier for the target, such as a team handle or user ID, used to specify the intended recipient of the On-Call Page.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the target (for example, team handle or user ID)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.target.identifier" + }, + { + "name": "target_type", + "required": false, + "description": "Specify the kind of target: 'team_id', 'team_handle', or 'user_id'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_id", + "team_handle", + "user_id" + ], + "properties": null, + "inner_properties": null, + "description": "The kind of target, `team_id` | `team_handle` | `user_id`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.target.type" + }, + { + "name": "page_title", + "required": false, + "description": "The title of the On-Call Page. Provide a concise and clear title to identify the issue or alert.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.title" + }, + { + "name": "on_call_page_urgency_level", + "required": false, + "description": "Specifies the urgency level of the On-Call Page. Accepts 'low' or 'high'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "low", + "high" + ], + "properties": null, + "inner_properties": null, + "description": "On-Call Page urgency level." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.urgency" + }, + { + "name": "resource_type_for_on_call", + "required": false, + "description": "Specify the type of resource for creating an On-Call Page. Use `pages`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pages" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource used when creating an On-Call Page." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'CreateOnCallPage'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/pages", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.description", + "tool_parameter_name": "issue_summary", + "description": "A short summary of the issue or context.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short summary of the issue or context." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "tags_for_categorization", + "description": "Tags to help categorize or filter the page.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to help categorize or filter the page." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.target.identifier", + "tool_parameter_name": "target_identifier", + "description": "Identifier for the target (for example, team handle or user ID).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier for the target (for example, team handle or user ID)." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.target.type", + "tool_parameter_name": "target_type", + "description": "The kind of target, `team_id` | `team_handle` | `user_id`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_id", + "team_handle", + "user_id" + ], + "properties": null, + "inner_properties": null, + "description": "The kind of target, `team_id` | `team_handle` | `user_id`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.title", + "tool_parameter_name": "page_title", + "description": "The title of the page.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the page." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.urgency", + "tool_parameter_name": "on_call_page_urgency_level", + "description": "On-Call Page urgency level.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "low", + "high" + ], + "properties": null, + "inner_properties": null, + "description": "On-Call Page urgency level." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "high", + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type_for_on_call", + "description": "The type of resource used when creating an On-Call Page.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pages" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource used when creating an On-Call Page." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "pages", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Full request to trigger an On-Call Page.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"description\": \"Page details.\",\n \"tags\": [\n \"service:test\"\n ],\n \"target\": {\n \"identifier\": \"my-team\",\n \"type\": \"team_handle\"\n },\n \"title\": \"Page title\",\n \"urgency\": \"low\"\n },\n \"type\": \"pages\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The main request body, including attributes and resource type.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Details about the On-Call Page you want to create.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A short summary of the issue or context.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"Tags to help categorize or filter the page.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"target\": {\n \"description\": \"Information about the target to notify (such as a team or user).\",\n \"properties\": {\n \"identifier\": {\n \"description\": \"Identifier for the target (for example, team handle or user ID).\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The kind of target, `team_id` | `team_handle` | `user_id`.\",\n \"enum\": [\n \"team_id\",\n \"team_handle\",\n \"user_id\"\n ],\n \"example\": \"team_id\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_ID\",\n \"TEAM_HANDLE\",\n \"USER_ID\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"title\": {\n \"description\": \"The title of the page.\",\n \"example\": \"Service: Test is down\",\n \"type\": \"string\"\n },\n \"urgency\": {\n \"default\": \"high\",\n \"description\": \"On-Call Page urgency level.\",\n \"enum\": [\n \"low\",\n \"high\"\n ],\n \"example\": \"high\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOW\",\n \"HIGH\"\n ]\n }\n },\n \"required\": [\n \"target\",\n \"title\",\n \"urgency\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"pages\",\n \"description\": \"The type of resource used when creating an On-Call Page.\",\n \"enum\": [\n \"pages\"\n ],\n \"example\": \"pages\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAGES\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnarchiveCase.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnarchiveCase.json new file mode 100644 index 00000000..be6c843e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnarchiveCase.json @@ -0,0 +1,163 @@ +{ + "name": "UnarchiveCase", + "fully_qualified_name": "DatadogApi.UnarchiveCase@0.1.0", + "description": "Unarchive a specific support case in Datadog.\n\nUse this tool to restore a previously archived support case based on its ID. This is helpful when you need to reactivate or view the details of a case that was archived.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier (UUID or key) of the case to be unarchived.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "case_resource_type", + "required": true, + "description": "The resource type of the case, must be 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UnarchiveCase'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/unarchive", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case empty request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case empty request data\",\n \"properties\": {\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Unarchive case payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnassignCase.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnassignCase.json new file mode 100644 index 00000000..6c1d2791 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnassignCase.json @@ -0,0 +1,163 @@ +{ + "name": "UnassignCase", + "fully_qualified_name": "DatadogApi.UnassignCase@0.1.0", + "description": "Unassigns a case from its current assignee.\n\nUse this tool to unassign a specific case from its current assignee within Datadog. This is helpful when you want to reassign or close a support case.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique UUID or key representing the case to be unassigned in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specifies the resource type of the case. Must be set to 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UnassignCase'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/unassign", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case empty request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case empty request data\",\n \"properties\": {\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Unassign case payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnpublishApp.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnpublishApp.json new file mode 100644 index 00000000..b3d370f8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnpublishApp.json @@ -0,0 +1,126 @@ +{ + "name": "UnpublishApp", + "fully_qualified_name": "DatadogApi.UnpublishApp@0.1.0", + "description": "Unpublish an app to remove its live version.\n\nUse this tool to unpublish an app and remove its live version. The app can still be updated and republished in the future. Requires a registered application key.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_identifier", + "required": true, + "description": "The ID of the app you want to unpublish, removing its live version.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to unpublish." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UnpublishApp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}/deployment", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "app_identifier", + "description": "The ID of the app to unpublish.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to unpublish." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnregisterAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnregisterAppKey.json new file mode 100644 index 00000000..0683c1e8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UnregisterAppKey.json @@ -0,0 +1,126 @@ +{ + "name": "UnregisterAppKey", + "fully_qualified_name": "DatadogApi.UnregisterAppKey@0.1.0", + "description": "Unregister an application key to revoke its access.\n\nUse this tool to revoke access by unregistering a specific application key from Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "app_key_id", + "required": true, + "description": "The unique identifier of the application key to be unregistered.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UnregisterAppKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/app_key_registrations/{app_key_id}", + "http_method": "DELETE", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "app_key_id", + "description": "The ID of the app key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": null, + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateActionConnection.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateActionConnection.json new file mode 100644 index 00000000..f9cc0090 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateActionConnection.json @@ -0,0 +1,249 @@ +{ + "name": "UpdateActionConnection", + "fully_qualified_name": "DatadogApi.UpdateActionConnection@0.1.0", + "description": "Update an existing action connection in Datadog.\n\nThis tool updates an action connection in Datadog using the provided connection ID. Ensure you have a registered application key before calling this tool.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "action_connection_id", + "required": true, + "description": "The unique identifier for the action connection to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the action connection" + }, + "inferrable": true, + "http_endpoint_parameter_name": "connection_id" + }, + { + "name": "action_connection_update_request", + "required": true, + "description": "JSON object containing data for updating an action connection. Includes attributes like name and integration details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "integration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionIntegrationUpdate` object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the connection" + } + }, + "inner_properties": null, + "description": "The definition of `ActionConnectionAttributesUpdate` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "action_connection" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the connection update." + } + }, + "inner_properties": null, + "description": "Update an existing Action Connection request body" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateActionConnection'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions/connections/{connection_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "connection_id", + "tool_parameter_name": "action_connection_id", + "description": "The ID of the action connection", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the action connection" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "action_connection_update_request", + "description": "Update an existing Action Connection request body", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "integration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionIntegrationUpdate` object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the connection" + } + }, + "inner_properties": null, + "description": "The definition of `ActionConnectionAttributesUpdate` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "action_connection" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ActionConnectionDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the connection update." + } + }, + "inner_properties": null, + "description": "Update an existing Action Connection request body" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to update an action connection.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the connection update.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `ActionConnectionAttributesUpdate` object.\",\n \"properties\": {\n \"integration\": {\n \"description\": \"The definition of `ActionConnectionIntegrationUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of `AWSIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of `AWSCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of `AWSAssumeRoleUpdate` object.\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"AWS account the connection is created for\",\n \"example\": \"111222333444\",\n \"pattern\": \"^\\\\d{12}$\",\n \"type\": \"string\"\n },\n \"generate_new_external_id\": {\n \"description\": \"The `AWSAssumeRoleUpdate` `generate_new_external_id`.\",\n \"type\": \"boolean\"\n },\n \"role\": {\n \"description\": \"Role to assume\",\n \"example\": \"my-role\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `AWSAssumeRoleType` object.\",\n \"enum\": [\n \"AWSAssumeRole\"\n ],\n \"example\": \"AWSAssumeRole\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWSASSUMEROLE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of `AWSIntegrationType` object.\",\n \"enum\": [\n \"AWS\"\n ],\n \"example\": \"AWS\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `AnthropicIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `AnthropicCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `AnthropicAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `AnthropicAPIKeyUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `AnthropicAPIKey` object.\",\n \"enum\": [\n \"AnthropicAPIKey\"\n ],\n \"example\": \"AnthropicAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ANTHROPICAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `AnthropicIntegrationType` object.\",\n \"enum\": [\n \"Anthropic\"\n ],\n \"example\": \"Anthropic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ANTHROPIC\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `AsanaIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `AsanaCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `AsanaAccessToken` object.\",\n \"properties\": {\n \"access_token\": {\n \"description\": \"The `AsanaAccessTokenUpdate` `access_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `AsanaAccessToken` object.\",\n \"enum\": [\n \"AsanaAccessToken\"\n ],\n \"example\": \"AsanaAccessToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASANAACCESSTOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `AsanaIntegrationType` object.\",\n \"enum\": [\n \"Asana\"\n ],\n \"example\": \"Asana\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASANA\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `AzureIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `AzureCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `AzureTenant` object.\",\n \"properties\": {\n \"app_client_id\": {\n \"description\": \"The Client ID, also known as the Application ID in Azure, is a unique identifier for an application. It's used to identify the application during the authentication process. Your Application (client) ID is listed in the application's overview page. You can navigate to your application via the Azure Directory. \",\n \"type\": \"string\"\n },\n \"client_secret\": {\n \"description\": \"The Client Secret is a confidential piece of information known only to the application and Azure AD. It's used to prove the application's identity. Your Client Secret is available from the application\\u2019s secrets page. You can navigate to your application via the Azure Directory.\",\n \"type\": \"string\"\n },\n \"custom_scopes\": {\n \"description\": \"If provided, the custom scope to be requested from Microsoft when acquiring an OAuth 2 access token. This custom scope is used only in conjunction with the HTTP action. A resource's scope is constructed by using the identifier URI for the resource and .default, separated by a forward slash (/) as follows:{identifierURI}/.default.\",\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"The Tenant ID, also known as the Directory ID in Azure, is a unique identifier that represents an Azure AD instance. Your Tenant ID (Directory ID) is listed in your Active Directory overview page under the 'Tenant information' section.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `AzureTenant` object.\",\n \"enum\": [\n \"AzureTenant\"\n ],\n \"example\": \"AzureTenant\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURETENANT\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `AzureIntegrationType` object.\",\n \"enum\": [\n \"Azure\"\n ],\n \"example\": \"Azure\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `CircleCIIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `CircleCICredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `CircleCIAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `CircleCIAPIKeyUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `CircleCIAPIKey` object.\",\n \"enum\": [\n \"CircleCIAPIKey\"\n ],\n \"example\": \"CircleCIAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CIRCLECIAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `CircleCIIntegrationType` object.\",\n \"enum\": [\n \"CircleCI\"\n ],\n \"example\": \"CircleCI\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CIRCLECI\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `ClickupIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `ClickupCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `ClickupAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `ClickupAPIKeyUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `ClickupAPIKey` object.\",\n \"enum\": [\n \"ClickupAPIKey\"\n ],\n \"example\": \"ClickupAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLICKUPAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `ClickupIntegrationType` object.\",\n \"enum\": [\n \"Clickup\"\n ],\n \"example\": \"Clickup\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLICKUP\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `CloudflareIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `CloudflareCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `CloudflareAPIToken` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `CloudflareAPITokenUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `CloudflareAPIToken` object.\",\n \"enum\": [\n \"CloudflareAPIToken\"\n ],\n \"example\": \"CloudflareAPIToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLAREAPITOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `CloudflareGlobalAPIToken` object.\",\n \"properties\": {\n \"auth_email\": {\n \"description\": \"The `CloudflareGlobalAPITokenUpdate` `auth_email`.\",\n \"type\": \"string\"\n },\n \"global_api_key\": {\n \"description\": \"The `CloudflareGlobalAPITokenUpdate` `global_api_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `CloudflareGlobalAPIToken` object.\",\n \"enum\": [\n \"CloudflareGlobalAPIToken\"\n ],\n \"example\": \"CloudflareGlobalAPIToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLAREGLOBALAPITOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `CloudflareIntegrationType` object.\",\n \"enum\": [\n \"Cloudflare\"\n ],\n \"example\": \"Cloudflare\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLARE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `ConfigCatIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `ConfigCatCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `ConfigCatSDKKey` object.\",\n \"properties\": {\n \"api_password\": {\n \"description\": \"The `ConfigCatSDKKeyUpdate` `api_password`.\",\n \"type\": \"string\"\n },\n \"api_username\": {\n \"description\": \"The `ConfigCatSDKKeyUpdate` `api_username`.\",\n \"type\": \"string\"\n },\n \"sdk_key\": {\n \"description\": \"The `ConfigCatSDKKeyUpdate` `sdk_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `ConfigCatSDKKey` object.\",\n \"enum\": [\n \"ConfigCatSDKKey\"\n ],\n \"example\": \"ConfigCatSDKKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFIGCATSDKKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `ConfigCatIntegrationType` object.\",\n \"enum\": [\n \"ConfigCat\"\n ],\n \"example\": \"ConfigCat\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFIGCAT\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `DatadogIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `DatadogCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `DatadogAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `DatadogAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"app_key\": {\n \"description\": \"The `DatadogAPIKeyUpdate` `app_key`.\",\n \"type\": \"string\"\n },\n \"datacenter\": {\n \"description\": \"The `DatadogAPIKeyUpdate` `datacenter`.\",\n \"type\": \"string\"\n },\n \"subdomain\": {\n \"description\": \"Custom subdomain used for Datadog URLs generated with this Connection. For example, if this org uses `https://acme.datadoghq.com` to access Datadog, set this field to `acme`. If this field is omitted, generated URLs will use the default site URL for its datacenter (see [https://docs.datadoghq.com/getting_started/site](https://docs.datadoghq.com/getting_started/site)).\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `DatadogAPIKey` object.\",\n \"enum\": [\n \"DatadogAPIKey\"\n ],\n \"example\": \"DatadogAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOGAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `DatadogIntegrationType` object.\",\n \"enum\": [\n \"Datadog\"\n ],\n \"example\": \"Datadog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `FastlyIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `FastlyCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `FastlyAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `FastlyAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `FastlyAPIKey` object.\",\n \"enum\": [\n \"FastlyAPIKey\"\n ],\n \"example\": \"FastlyAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLYAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `FastlyIntegrationType` object.\",\n \"enum\": [\n \"Fastly\"\n ],\n \"example\": \"Fastly\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `FreshserviceIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `FreshserviceCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `FreshserviceAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `FreshserviceAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"domain\": {\n \"description\": \"The `FreshserviceAPIKeyUpdate` `domain`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `FreshserviceAPIKey` object.\",\n \"enum\": [\n \"FreshserviceAPIKey\"\n ],\n \"example\": \"FreshserviceAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FRESHSERVICEAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `FreshserviceIntegrationType` object.\",\n \"enum\": [\n \"Freshservice\"\n ],\n \"example\": \"Freshservice\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FRESHSERVICE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GCPIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GCPCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GCPServiceAccount` object.\",\n \"properties\": {\n \"private_key\": {\n \"description\": \"The `GCPServiceAccountUpdate` `private_key`.\",\n \"type\": \"string\"\n },\n \"service_account_email\": {\n \"description\": \"The `GCPServiceAccountUpdate` `service_account_email`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GCPServiceAccount` object.\",\n \"enum\": [\n \"GCPServiceAccount\"\n ],\n \"example\": \"GCPServiceAccount\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCPSERVICEACCOUNT\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GCPIntegrationType` object.\",\n \"enum\": [\n \"GCP\"\n ],\n \"example\": \"GCP\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GeminiIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GeminiCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GeminiAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `GeminiAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GeminiAPIKey` object.\",\n \"enum\": [\n \"GeminiAPIKey\"\n ],\n \"example\": \"GeminiAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GEMINIAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GeminiIntegrationType` object.\",\n \"enum\": [\n \"Gemini\"\n ],\n \"example\": \"Gemini\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GEMINI\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GitlabIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GitlabCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GitlabAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `GitlabAPIKeyUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GitlabAPIKey` object.\",\n \"enum\": [\n \"GitlabAPIKey\"\n ],\n \"example\": \"GitlabAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GITLABAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GitlabIntegrationType` object.\",\n \"enum\": [\n \"Gitlab\"\n ],\n \"example\": \"Gitlab\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GITLAB\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `GreyNoiseIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `GreyNoiseCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `GreyNoiseAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `GreyNoiseAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `GreyNoiseAPIKey` object.\",\n \"enum\": [\n \"GreyNoiseAPIKey\"\n ],\n \"example\": \"GreyNoiseAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GREYNOISEAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `GreyNoiseIntegrationType` object.\",\n \"enum\": [\n \"GreyNoise\"\n ],\n \"example\": \"GreyNoise\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GREYNOISE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of `HTTPIntegrationUpdate` object.\",\n \"properties\": {\n \"base_url\": {\n \"description\": \"Base HTTP url for the integration\",\n \"example\": \"http://datadoghq.com\",\n \"type\": \"string\"\n },\n \"credentials\": {\n \"description\": \"The definition of `HTTPCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of `HTTPTokenAuthUpdate` object.\",\n \"properties\": {\n \"body\": {\n \"description\": \"The definition of `HTTPBody` object.\",\n \"properties\": {\n \"content\": {\n \"description\": \"Serialized body content\",\n \"example\": \"{\\\"some-json\\\": \\\"with-value\\\"}\",\n \"type\": \"string\"\n },\n \"content_type\": {\n \"description\": \"Content type of the body\",\n \"example\": \"application/json\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"headers\": {\n \"description\": \"The `HTTPTokenAuthUpdate` `headers`.\",\n \"items\": {\n \"description\": \"The definition of `HTTPHeaderUpdate` object.\",\n \"properties\": {\n \"deleted\": {\n \"description\": \"Should the header be deleted.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The `HTTPHeaderUpdate` `name`.\",\n \"example\": \"MyHttpHeader\",\n \"pattern\": \"^[A-Za-z][A-Za-z\\\\\\\\d\\\\\\\\-\\\\\\\\_]*$\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `HTTPHeaderUpdate` `value`.\",\n \"example\": \"Updated Header Value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tokens\": {\n \"description\": \"The `HTTPTokenAuthUpdate` `tokens`.\",\n \"items\": {\n \"description\": \"The definition of `HTTPTokenUpdate` object.\",\n \"properties\": {\n \"deleted\": {\n \"description\": \"Should the header be deleted.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The `HTTPToken` `name`.\",\n \"example\": \"MyToken\",\n \"pattern\": \"^[A-Za-z][A-Za-z\\\\\\\\d]*$\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `TokenType` object.\",\n \"enum\": [\n \"SECRET\"\n ],\n \"example\": \"SECRET\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SECRET\"\n ]\n },\n \"value\": {\n \"description\": \"The `HTTPToken` `value`.\",\n \"example\": \"Some Token Value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The definition of `HTTPTokenAuthType` object.\",\n \"enum\": [\n \"HTTPTokenAuth\"\n ],\n \"example\": \"HTTPTokenAuth\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTPTOKENAUTH\"\n ]\n },\n \"url_parameters\": {\n \"description\": \"The `HTTPTokenAuthUpdate` `url_parameters`.\",\n \"items\": {\n \"description\": \"The definition of `UrlParamUpdate` object.\",\n \"properties\": {\n \"deleted\": {\n \"description\": \"Should the header be deleted.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Name for tokens.\",\n \"example\": \"MyTokenName\",\n \"pattern\": \"^[A-Za-z][A-Za-z\\\\\\\\d]*$\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `UrlParamUpdate` `value`.\",\n \"example\": \"Some Url Parameter value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of `HTTPIntegrationType` object.\",\n \"enum\": [\n \"HTTP\"\n ],\n \"example\": \"HTTP\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `LaunchDarklyIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `LaunchDarklyCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `LaunchDarklyAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `LaunchDarklyAPIKeyUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `LaunchDarklyAPIKey` object.\",\n \"enum\": [\n \"LaunchDarklyAPIKey\"\n ],\n \"example\": \"LaunchDarklyAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LAUNCHDARKLYAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `LaunchDarklyIntegrationType` object.\",\n \"enum\": [\n \"LaunchDarkly\"\n ],\n \"example\": \"LaunchDarkly\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LAUNCHDARKLY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `NotionIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `NotionCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `NotionAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `NotionAPIKeyUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `NotionAPIKey` object.\",\n \"enum\": [\n \"NotionAPIKey\"\n ],\n \"example\": \"NotionAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTIONAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `NotionIntegrationType` object.\",\n \"enum\": [\n \"Notion\"\n ],\n \"example\": \"Notion\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTION\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `OktaIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `OktaCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `OktaAPIToken` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `OktaAPITokenUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"domain\": {\n \"description\": \"The `OktaAPITokenUpdate` `domain`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `OktaAPIToken` object.\",\n \"enum\": [\n \"OktaAPIToken\"\n ],\n \"example\": \"OktaAPIToken\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OKTAAPITOKEN\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `OktaIntegrationType` object.\",\n \"enum\": [\n \"Okta\"\n ],\n \"example\": \"Okta\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OKTA\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `OpenAIIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `OpenAICredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `OpenAIAPIKey` object.\",\n \"properties\": {\n \"api_token\": {\n \"description\": \"The `OpenAIAPIKeyUpdate` `api_token`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `OpenAIAPIKey` object.\",\n \"enum\": [\n \"OpenAIAPIKey\"\n ],\n \"example\": \"OpenAIAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPENAIAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `OpenAIIntegrationType` object.\",\n \"enum\": [\n \"OpenAI\"\n ],\n \"example\": \"OpenAI\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPENAI\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `ServiceNowIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `ServiceNowCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `ServiceNowBasicAuth` object.\",\n \"properties\": {\n \"instance\": {\n \"description\": \"The `ServiceNowBasicAuthUpdate` `instance`.\",\n \"type\": \"string\"\n },\n \"password\": {\n \"description\": \"The `ServiceNowBasicAuthUpdate` `password`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `ServiceNowBasicAuth` object.\",\n \"enum\": [\n \"ServiceNowBasicAuth\"\n ],\n \"example\": \"ServiceNowBasicAuth\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SERVICENOWBASICAUTH\"\n ]\n },\n \"username\": {\n \"description\": \"The `ServiceNowBasicAuthUpdate` `username`.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `ServiceNowIntegrationType` object.\",\n \"enum\": [\n \"ServiceNow\"\n ],\n \"example\": \"ServiceNow\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SERVICENOW\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `SplitIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `SplitCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `SplitAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `SplitAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `SplitAPIKey` object.\",\n \"enum\": [\n \"SplitAPIKey\"\n ],\n \"example\": \"SplitAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLITAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `SplitIntegrationType` object.\",\n \"enum\": [\n \"Split\"\n ],\n \"example\": \"Split\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLIT\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `StatsigIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `StatsigCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `StatsigAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `StatsigAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `StatsigAPIKey` object.\",\n \"enum\": [\n \"StatsigAPIKey\"\n ],\n \"example\": \"StatsigAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STATSIGAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `StatsigIntegrationType` object.\",\n \"enum\": [\n \"Statsig\"\n ],\n \"example\": \"Statsig\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STATSIG\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The definition of the `VirusTotalIntegrationUpdate` object.\",\n \"properties\": {\n \"credentials\": {\n \"description\": \"The definition of the `VirusTotalCredentialsUpdate` object.\",\n \"oneOf\": [\n {\n \"description\": \"The definition of the `VirusTotalAPIKey` object.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The `VirusTotalAPIKeyUpdate` `api_key`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of the `VirusTotalAPIKey` object.\",\n \"enum\": [\n \"VirusTotalAPIKey\"\n ],\n \"example\": \"VirusTotalAPIKey\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"VIRUSTOTALAPIKEY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": {\n \"description\": \"The definition of the `VirusTotalIntegrationType` object.\",\n \"enum\": [\n \"VirusTotal\"\n ],\n \"example\": \"VirusTotal\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"VIRUSTOTAL\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"Name of the connection\",\n \"example\": \"My AWS Connection\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The definition of `ActionConnectionDataType` object.\",\n \"enum\": [\n \"action_connection\"\n ],\n \"example\": \"action_connection\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ACTION_CONNECTION\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Update an existing Action Connection request body\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateApmRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateApmRetentionFilter.json new file mode 100644 index 00000000..ce8fcc8a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateApmRetentionFilter.json @@ -0,0 +1,402 @@ +{ + "name": "UpdateApmRetentionFilter", + "fully_qualified_name": "DatadogApi.UpdateApmRetentionFilter@0.1.0", + "description": "Update an APM retention filter in your organization.\n\nUse this tool to update a retention filter for APM in your Datadog organization. Default filters cannot be renamed or removed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "retention_filter_id", + "required": true, + "description": "The unique ID of the retention filter to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "filter_id" + }, + { + "name": "filter_query", + "required": true, + "description": "The search query for the retention filter, following the span search syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/)." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter.query" + }, + { + "name": "retention_filter_type", + "required": true, + "description": "Specify the type of retention filter. Valid options are: 'spans-sampling-processor', 'spans-errors-sampling-processor', 'spans-appsec-sampling-processor'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans-sampling-processor", + "spans-errors-sampling-processor", + "spans-appsec-sampling-processor" + ], + "properties": null, + "inner_properties": null, + "description": "The type of retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.filter_type" + }, + { + "name": "retention_filter_name", + "required": true, + "description": "Specify the name of the retention filter to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "span_sample_rate", + "required": true, + "description": "Sample rate to apply to spans going through this retention filter. A value of 1.0 keeps all spans matching the query. Expected to be a number between 0 and 1.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to spans going through this retention filter.\nA value of 1.0 keeps all spans matching the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.rate" + }, + { + "name": "filter_id", + "required": true, + "description": "The unique identifier for the retention filter that you want to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_type", + "required": true, + "description": "Specifies the type of the APM retention filter resource, should be 'apm_retention_filter'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "apm_retention_filter" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_retention_filter", + "required": true, + "description": "Set to true to enable or false to disable the retention filter.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable/Disable the retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + }, + { + "name": "trace_sample_rate", + "required": false, + "description": "Sample rate for traces containing spans that pass through the retention filter. A value of 1.0 keeps all matching traces.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to traces containing spans going through this retention filter.\nA value of 1.0 keeps all traces with spans matching the query." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.trace_rate" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateApmRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/retention-filters/{filter_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "filter_id", + "tool_parameter_name": "retention_filter_id", + "description": "The ID of the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "enable_retention_filter", + "description": "Enable/Disable the retention filter.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable/Disable the retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.filter.query", + "tool_parameter_name": "filter_query", + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/)." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.filter_type", + "tool_parameter_name": "retention_filter_type", + "description": "The type of retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans-sampling-processor", + "spans-errors-sampling-processor", + "spans-appsec-sampling-processor" + ], + "properties": null, + "inner_properties": null, + "description": "The type of retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "spans-sampling-processor", + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "retention_filter_name", + "description": "The name of the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.rate", + "tool_parameter_name": "span_sample_rate", + "description": "Sample rate to apply to spans going through this retention filter.\nA value of 1.0 keeps all spans matching the query.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to spans going through this retention filter.\nA value of 1.0 keeps all spans matching the query." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.trace_rate", + "tool_parameter_name": "trace_sample_rate", + "description": "Sample rate to apply to traces containing spans going through this retention filter.\nA value of 1.0 keeps all traces with spans matching the query.", + "value_schema": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Sample rate to apply to traces containing spans going through this retention filter.\nA value of 1.0 keeps all traces with spans matching the query." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "filter_id", + "description": "The ID of the retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the retention filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "apm_retention_filter" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "apm_retention_filter", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The body of the retention filter to be updated.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The body of the retention filter to be updated.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing the configuration of the retention filter to create/update.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Enable/Disable the retention filter.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"filter\": {\n \"description\": \"The spans filter. Spans matching this filter will be indexed and stored.\",\n \"properties\": {\n \"query\": {\n \"description\": \"The search query - following the [span search syntax](https://docs.datadoghq.com/tracing/trace_explorer/query_syntax/).\",\n \"example\": \"@http.status_code:200 service:my-service\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"filter_type\": {\n \"default\": \"spans-sampling-processor\",\n \"description\": \"The type of retention filter.\",\n \"enum\": [\n \"spans-sampling-processor\",\n \"spans-errors-sampling-processor\",\n \"spans-appsec-sampling-processor\"\n ],\n \"example\": \"spans-sampling-processor\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPANS_SAMPLING_PROCESSOR\",\n \"SPANS_ERRORS_SAMPLING_PROCESSOR\",\n \"SPANS_APPSEC_SAMPLING_PROCESSOR\"\n ]\n },\n \"name\": {\n \"description\": \"The name of the retention filter.\",\n \"example\": \"my retention filter\",\n \"type\": \"string\"\n },\n \"rate\": {\n \"description\": \"Sample rate to apply to spans going through this retention filter.\\nA value of 1.0 keeps all spans matching the query.\",\n \"example\": 1.0,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"trace_rate\": {\n \"description\": \"Sample rate to apply to traces containing spans going through this retention filter.\\nA value of 1.0 keeps all traces with spans matching the query.\",\n \"example\": 1.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"name\",\n \"filter\",\n \"enabled\",\n \"filter_type\",\n \"rate\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the retention filter.\",\n \"example\": \"retention-filter-id\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"apm_retention_filter\",\n \"description\": \"The type of the resource.\",\n \"enum\": [\n \"apm_retention_filter\"\n ],\n \"example\": \"apm_retention_filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"apm_retention_filter\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The updated definition of the retention filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAppVersion.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAppVersion.json new file mode 100644 index 00000000..95f9c289 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAppVersion.json @@ -0,0 +1,771 @@ +{ + "name": "UpdateAppVersion", + "fully_qualified_name": "DatadogApi.UpdateAppVersion@0.1.0", + "description": "Update an app by creating a new version.\n\nUse this tool to update an existing app by creating a new version through Datadog's API. Ensure you have the necessary registered application key or have configured permissions in the UI before making this call.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_id", + "required": true, + "description": "The unique ID of the app to update. Required for creating a new version.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to update." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + }, + { + "name": "app_update_data", + "required": true, + "description": "JSON object containing new app definition, such as name, description, components, or queries. Fields not included remain unchanged.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "components": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the grid component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this grid component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "backgroundColor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The background color of the grid." + }, + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the UI component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this UI component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The child components of the UI component." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "properties": null, + "inner_properties": null, + "description": "The UI component type." + } + }, + "description": "The child components of the grid." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a grid component." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "grid" + ], + "properties": null, + "inner_properties": null, + "description": "The grid component type." + } + }, + "description": "The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new human-readable description for the app." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new name of the app." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field." + }, + "rootInstanceName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new name of the root component of the app. This must be a `grid` component that contains all other components." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed." + } + }, + "inner_properties": null, + "description": "App definition attributes to be updated, such as name, description, and components." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to update. The app ID must match the ID in the URL path." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "appDefinitions" + ], + "properties": null, + "inner_properties": null, + "description": "The app definition type." + } + }, + "inner_properties": null, + "description": "The data object containing the new app definition. Any fields not included in the request remain unchanged." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateApp'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/app-builder/apps/{app_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "application_id", + "description": "The ID of the app to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to update." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "app_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "components": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the grid component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the grid component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this grid component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "backgroundColor": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The background color of the grid." + }, + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "events": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pageChange", + "tableRowClick", + "_tableRowButtonClick", + "change", + "submit", + "click", + "toggleOpen", + "close", + "open", + "executionFinished" + ], + "properties": null, + "inner_properties": null, + "description": "The triggering action for the event." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom", + "setComponentState", + "triggerQuery", + "openModal", + "closeModal", + "openUrl", + "downloadFile", + "setStateVariableValue" + ], + "properties": null, + "inner_properties": null, + "description": "The response to the event." + } + }, + "description": "Events to listen for on the UI component." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the UI component. This property is deprecated; use `name` to identify individual components instead." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for this UI component. This name is also visible in the app editor." + }, + "properties": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "children": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The child components of the UI component." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "table", + "textInput", + "textArea", + "button", + "text", + "select", + "modal", + "schemaForm", + "checkbox", + "tabs", + "vegaChart", + "radioButtons", + "numberInput", + "fileInput", + "jsonInput", + "gridCell", + "dateRangePicker", + "search", + "container", + "calloutValue" + ], + "properties": null, + "inner_properties": null, + "description": "The UI component type." + } + }, + "description": "The child components of the grid." + }, + "isVisible": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean." + } + }, + "inner_properties": null, + "description": "Properties of a grid component." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "grid" + ], + "properties": null, + "inner_properties": null, + "description": "The grid component type." + } + }, + "description": "The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new human-readable description for the app." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new name of the app." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field." + }, + "rootInstanceName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new name of the root component of the app. This must be a `grid` component that contains all other components." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed." + } + }, + "inner_properties": null, + "description": "App definition attributes to be updated, such as name, description, and components." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the app to update. The app ID must match the ID in the URL path." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "appDefinitions" + ], + "properties": null, + "inner_properties": null, + "description": "The app definition type." + } + }, + "inner_properties": null, + "description": "The data object containing the new app definition. Any fields not included in the request remain unchanged." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A request object for updating an existing app.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"components\": [\n {\n \"events\": [],\n \"name\": \"grid0\",\n \"properties\": {\n \"children\": [\n {\n \"events\": [],\n \"name\": \"gridCell0\",\n \"properties\": {\n \"children\": [\n {\n \"events\": [],\n \"name\": \"calloutValue0\",\n \"properties\": {\n \"isDisabled\": false,\n \"isLoading\": false,\n \"isVisible\": true,\n \"label\": \"CPU Usage\",\n \"size\": \"sm\",\n \"style\": \"vivid_yellow\",\n \"unit\": \"kB\",\n \"value\": \"42\"\n },\n \"type\": \"calloutValue\"\n }\n ],\n \"isVisible\": \"true\",\n \"layout\": {\n \"default\": {\n \"height\": 8,\n \"width\": 2,\n \"x\": 0,\n \"y\": 0\n }\n }\n },\n \"type\": \"gridCell\"\n }\n ]\n },\n \"type\": \"grid\"\n }\n ],\n \"description\": \"This is a simple example app\",\n \"name\": \"Example App\",\n \"queries\": [],\n \"rootInstanceName\": \"grid0\"\n },\n \"id\": \"9e20cbaf-68da-45a6-9ccf-54193ac29fa5\",\n \"type\": \"appDefinitions\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The data object containing the new app definition. Any fields not included in the request remain unchanged.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"App definition attributes to be updated, such as name, description, and components.\",\n \"properties\": {\n \"components\": {\n \"description\": \"The new UI components that make up the app. If this field is set, all existing components are replaced with the new components under this field.\",\n \"items\": {\n \"description\": \"A grid component. The grid component is the root canvas for an app and contains all other components.\",\n \"properties\": {\n \"events\": {\n \"description\": \"Events to listen for on the grid component.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An event on a UI component that triggers a response or action in an app.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The triggering action for the event.\",\n \"enum\": [\n \"pageChange\",\n \"tableRowClick\",\n \"_tableRowButtonClick\",\n \"change\",\n \"submit\",\n \"click\",\n \"toggleOpen\",\n \"close\",\n \"open\",\n \"executionFinished\"\n ],\n \"example\": \"click\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAGECHANGE\",\n \"TABLEROWCLICK\",\n \"TABLEROWBUTTONCLICK\",\n \"CHANGE\",\n \"SUBMIT\",\n \"CLICK\",\n \"TOGGLEOPEN\",\n \"CLOSE\",\n \"OPEN\",\n \"EXECUTIONFINISHED\"\n ]\n },\n \"type\": {\n \"description\": \"The response to the event.\",\n \"enum\": [\n \"custom\",\n \"setComponentState\",\n \"triggerQuery\",\n \"openModal\",\n \"closeModal\",\n \"openUrl\",\n \"downloadFile\",\n \"setStateVariableValue\"\n ],\n \"example\": \"triggerQuery\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\",\n \"SETCOMPONENTSTATE\",\n \"TRIGGERQUERY\",\n \"OPENMODAL\",\n \"CLOSEMODAL\",\n \"OPENURL\",\n \"DOWNLOADFILE\",\n \"SETSTATEVARIABLEVALUE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The ID of the grid component. This property is deprecated; use `name` to identify individual components instead.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this grid component. This name is also visible in the app editor.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"Properties of a grid component.\",\n \"properties\": {\n \"backgroundColor\": {\n \"default\": \"default\",\n \"description\": \"The background color of the grid.\",\n \"type\": \"string\"\n },\n \"children\": {\n \"description\": \"The child components of the grid.\",\n \"items\": {\n \"description\": \"[Definition of a UI component in the app](https://docs.datadoghq.com/service_management/app_builder/components/)\",\n \"properties\": {\n \"events\": {\n \"description\": \"Events to listen for on the UI component.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An event on a UI component that triggers a response or action in an app.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The triggering action for the event.\",\n \"enum\": [\n \"pageChange\",\n \"tableRowClick\",\n \"_tableRowButtonClick\",\n \"change\",\n \"submit\",\n \"click\",\n \"toggleOpen\",\n \"close\",\n \"open\",\n \"executionFinished\"\n ],\n \"example\": \"click\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAGECHANGE\",\n \"TABLEROWCLICK\",\n \"TABLEROWBUTTONCLICK\",\n \"CHANGE\",\n \"SUBMIT\",\n \"CLICK\",\n \"TOGGLEOPEN\",\n \"CLOSE\",\n \"OPEN\",\n \"EXECUTIONFINISHED\"\n ]\n },\n \"type\": {\n \"description\": \"The response to the event.\",\n \"enum\": [\n \"custom\",\n \"setComponentState\",\n \"triggerQuery\",\n \"openModal\",\n \"closeModal\",\n \"openUrl\",\n \"downloadFile\",\n \"setStateVariableValue\"\n ],\n \"example\": \"triggerQuery\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\",\n \"SETCOMPONENTSTATE\",\n \"TRIGGERQUERY\",\n \"OPENMODAL\",\n \"CLOSEMODAL\",\n \"OPENURL\",\n \"DOWNLOADFILE\",\n \"SETSTATEVARIABLEVALUE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The ID of the UI component. This property is deprecated; use `name` to identify individual components instead.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this UI component. This name is also visible in the app editor.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"additionalProperties\": {},\n \"description\": \"Properties of a UI component. Different component types can have their own additional unique properties. See the [components documentation](https://docs.datadoghq.com/service_management/app_builder/components/) for more detail on each component type and its properties.\",\n \"properties\": {\n \"children\": {\n \"description\": \"The child components of the UI component.\",\n \"items\": {\n \"$ref\": \"#/components/schemas/Component\",\n \"has_circular_reference\": true\n },\n \"type\": \"array\"\n },\n \"isVisible\": {\n \"description\": \"Whether the UI component is visible. If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The UI component type.\",\n \"enum\": [\n \"table\",\n \"textInput\",\n \"textArea\",\n \"button\",\n \"text\",\n \"select\",\n \"modal\",\n \"schemaForm\",\n \"checkbox\",\n \"tabs\",\n \"vegaChart\",\n \"radioButtons\",\n \"numberInput\",\n \"fileInput\",\n \"jsonInput\",\n \"gridCell\",\n \"dateRangePicker\",\n \"search\",\n \"container\",\n \"calloutValue\"\n ],\n \"example\": \"text\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TABLE\",\n \"TEXTINPUT\",\n \"TEXTAREA\",\n \"BUTTON\",\n \"TEXT\",\n \"SELECT\",\n \"MODAL\",\n \"SCHEMAFORM\",\n \"CHECKBOX\",\n \"TABS\",\n \"VEGACHART\",\n \"RADIOBUTTONS\",\n \"NUMBERINPUT\",\n \"FILEINPUT\",\n \"JSONINPUT\",\n \"GRIDCELL\",\n \"DATERANGEPICKER\",\n \"SEARCH\",\n \"CONTAINER\",\n \"CALLOUTVALUE\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"isVisible\": {\n \"description\": \"Whether the grid component and its children are visible. If a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"default\": true,\n \"type\": \"boolean\"\n }\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"grid\",\n \"description\": \"The grid component type.\",\n \"enum\": [\n \"grid\"\n ],\n \"example\": \"grid\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GRID\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"The new human-readable description for the app.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The new name of the app.\",\n \"type\": \"string\"\n },\n \"queries\": {\n \"description\": \"The new array of queries, such as external actions and state variables, that the app uses. If this field is set, all existing queries are replaced with the new queries under this field.\",\n \"items\": {\n \"description\": \"A data query used by an app. This can take the form of an external action, a data transformation, or a state variable.\",\n \"oneOf\": [\n {\n \"description\": \"An action query. This query type is used to trigger an action, such as sending a HTTP request.\",\n \"properties\": {\n \"events\": {\n \"description\": \"Events to listen for downstream of the action query.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An event on a UI component that triggers a response or action in an app.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The triggering action for the event.\",\n \"enum\": [\n \"pageChange\",\n \"tableRowClick\",\n \"_tableRowButtonClick\",\n \"change\",\n \"submit\",\n \"click\",\n \"toggleOpen\",\n \"close\",\n \"open\",\n \"executionFinished\"\n ],\n \"example\": \"click\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAGECHANGE\",\n \"TABLEROWCLICK\",\n \"TABLEROWBUTTONCLICK\",\n \"CHANGE\",\n \"SUBMIT\",\n \"CLICK\",\n \"TOGGLEOPEN\",\n \"CLOSE\",\n \"OPEN\",\n \"EXECUTIONFINISHED\"\n ]\n },\n \"type\": {\n \"description\": \"The response to the event.\",\n \"enum\": [\n \"custom\",\n \"setComponentState\",\n \"triggerQuery\",\n \"openModal\",\n \"closeModal\",\n \"openUrl\",\n \"downloadFile\",\n \"setStateVariableValue\"\n ],\n \"example\": \"triggerQuery\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\",\n \"SETCOMPONENTSTATE\",\n \"TRIGGERQUERY\",\n \"OPENMODAL\",\n \"CLOSEMODAL\",\n \"OPENURL\",\n \"DOWNLOADFILE\",\n \"SETSTATEVARIABLEVALUE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The ID of the action query.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this action query. This name is also used to access the query's result throughout the app.\",\n \"example\": \"fetchPendingOrders\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"The properties of the action query.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Whether to run this query. If specified, the query will only run if this condition evaluates to `true` in JavaScript and all other conditions are also met.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"debounceInMs\": {\n \"description\": \"The minimum time in milliseconds that must pass before the query can be triggered again. This is useful for preventing accidental double-clicks from triggering the query multiple times.\",\n \"oneOf\": [\n {\n \"example\": 310.5,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a number.\",\n \"example\": \"${1000}\",\n \"type\": \"string\"\n }\n ]\n },\n \"mockedOutputs\": {\n \"description\": \"The mocked outputs of the action query. This is useful for testing the app without actually running the action.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"description\": \"The mocked outputs of the action query.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether to enable the mocked outputs for testing.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"outputs\": {\n \"description\": \"The mocked outputs of the action query, serialized as JSON.\",\n \"example\": \"{\\\"status\\\": \\\"success\\\"}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"enabled\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"onlyTriggerManually\": {\n \"description\": \"Determines when this query is executed. If set to `false`, the query will run when the app loads and whenever any query arguments change. If set to `true`, the query will only run when manually triggered from elsewhere in the app.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"outputs\": {\n \"description\": \"The post-query transformation function, which is a JavaScript function that changes the query's `.outputs` property after the query's execution.\",\n \"example\": \"${((outputs) => {return outputs.body.data})(self.rawOutputs)}\",\n \"type\": \"string\"\n },\n \"pollingIntervalInMs\": {\n \"description\": \"If specified, the app will poll the query at the specified interval in milliseconds. The minimum polling interval is 15 seconds. The query will only poll when the app's browser tab is active.\",\n \"oneOf\": [\n {\n \"example\": 30000.0,\n \"format\": \"double\",\n \"minimum\": 15000.0,\n \"type\": \"number\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a number.\",\n \"example\": \"${15000}\",\n \"type\": \"string\"\n }\n ]\n },\n \"requiresConfirmation\": {\n \"description\": \"Whether to prompt the user to confirm this query before it runs.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"showToastOnError\": {\n \"description\": \"Whether to display a toast to the user when the query returns an error.\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"description\": \"If this is a string, it must be a valid JavaScript expression that evaluates to a boolean.\",\n \"example\": \"${true}\",\n \"type\": \"string\"\n }\n ]\n },\n \"spec\": {\n \"description\": \"The definition of the action query.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"description\": \"The action query spec object.\",\n \"properties\": {\n \"connectionGroup\": {\n \"description\": \"The connection group to use for an action query.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the connection group.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The tags of the connection group.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"connectionId\": {\n \"description\": \"The ID of the custom connection to use for this action query.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"type\": \"string\"\n },\n \"fqn\": {\n \"description\": \"The fully qualified name of the action type.\",\n \"example\": \"com.datadoghq.http.request\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"The inputs to the action query. These are the values that are passed to the action when it is triggered.\",\n \"oneOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"additionalProperties\": {},\n \"description\": \"The inputs to the action query. See the [Actions Catalog](https://docs.datadoghq.com/actions/actions_catalog/) for more detail on each action and its inputs.\",\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"fqn\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"spec\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"action\",\n \"description\": \"The action query type.\",\n \"enum\": [\n \"action\"\n ],\n \"example\": \"action\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ACTION\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"A data transformer, which is custom JavaScript code that executes and transforms data when its inputs change.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the data transformer.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this data transformer. This name is also used to access the transformer's result throughout the app.\",\n \"example\": \"combineTwoOrders\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"The properties of the data transformer.\",\n \"properties\": {\n \"outputs\": {\n \"description\": \"A JavaScript function that returns the transformed data.\",\n \"example\": \"${(() => {return {\\n allItems: [...fetchOrder1.outputs.items, ...fetchOrder2.outputs.items],\\n}})()}\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"dataTransform\",\n \"description\": \"The data transform type.\",\n \"enum\": [\n \"dataTransform\"\n ],\n \"example\": \"dataTransform\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATATRANSFORM\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"A variable, which can be set and read by other components in the app.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The ID of the state variable.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A unique identifier for this state variable. This name is also used to access the variable's value throughout the app.\",\n \"example\": \"ordersToSubmit\",\n \"type\": \"string\"\n },\n \"properties\": {\n \"description\": \"The properties of the state variable.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"The default value of the state variable.\",\n \"example\": \"${['order_3145', 'order_4920']}\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"stateVariable\",\n \"description\": \"The state variable type.\",\n \"enum\": [\n \"stateVariable\"\n ],\n \"example\": \"stateVariable\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STATEVARIABLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"type\",\n \"properties\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"rootInstanceName\": {\n \"description\": \"The new name of the root component of the app. This must be a `grid` component that contains all other components.\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The new list of tags for the app, which can be used to filter apps. If this field is set, any existing tags not included in the request are removed.\",\n \"example\": [\n \"service:webshop-backend\",\n \"team:webshop\"\n ],\n \"items\": {\n \"description\": \"An individual tag for the app.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the app to update. The app ID must match the ID in the URL path.\",\n \"example\": \"65bb1f25-52e1-4510-9f8d-22d1516ed693\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"appDefinitions\",\n \"description\": \"The app definition type.\",\n \"enum\": [\n \"appDefinitions\"\n ],\n \"example\": \"appDefinitions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPDEFINITIONS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateArchiveConfiguration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateArchiveConfiguration.json new file mode 100644 index 00000000..4011f7b7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateArchiveConfiguration.json @@ -0,0 +1,309 @@ +{ + "name": "UpdateArchiveConfiguration", + "fully_qualified_name": "DatadogApi.UpdateArchiveConfiguration@0.1.0", + "description": "Replace an existing archive configuration in Datadog.\n\nUse this tool to update an archive configuration by replacing the current settings with new ones for a specified archive in your Datadog organization.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_identifier", + "required": true, + "description": "The unique identifier for the archive you wish to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "archive_id" + }, + { + "name": "new_archive_configuration", + "required": true, + "description": "New definition of the archive including attributes like destination, tags, name, query, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An archive's destination." + }, + "include_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To store the tags in the archive, set the value \"true\".\nIf it is set to \"false\", the tags will be deleted when the logs are sent to the archive." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive query/filter. Logs matching this query are included in the archive." + }, + "rehydration_max_scan_size_in_gb": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum scan size for rehydration from this archive." + }, + "rehydration_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An array of tags to add to rehydrated logs from an archive." + } + }, + "inner_properties": null, + "description": "The attributes associated with the archive." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be archives." + } + }, + "inner_properties": null, + "description": "The definition of an archive." + } + }, + "inner_properties": null, + "description": "New definition of the archive." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateLogsArchive'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archives/{archive_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "archive_id", + "tool_parameter_name": "archive_identifier", + "description": "The ID of the archive.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the archive." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_archive_configuration", + "description": "New definition of the archive.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An archive's destination." + }, + "include_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "To store the tags in the archive, set the value \"true\".\nIf it is set to \"false\", the tags will be deleted when the logs are sent to the archive." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The archive query/filter. Logs matching this query are included in the archive." + }, + "rehydration_max_scan_size_in_gb": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Maximum scan size for rehydration from this archive." + }, + "rehydration_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An array of tags to add to rehydrated logs from an archive." + } + }, + "inner_properties": null, + "description": "The attributes associated with the archive." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be archives." + } + }, + "inner_properties": null, + "description": "The definition of an archive." + } + }, + "inner_properties": null, + "description": "New definition of the archive." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The logs archive.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of an archive.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes associated with the archive.\",\n \"properties\": {\n \"destination\": {\n \"description\": \"An archive's destination.\",\n \"oneOf\": [\n {\n \"description\": \"The Azure archive destination.\",\n \"properties\": {\n \"container\": {\n \"description\": \"The container where the archive will be stored.\",\n \"example\": \"container-name\",\n \"type\": \"string\"\n },\n \"integration\": {\n \"description\": \"The Azure archive's integration destination.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"A client ID.\",\n \"example\": \"aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa\",\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"A tenant ID.\",\n \"example\": \"aaaaaaaa-1a1a-1a1a-1a1a-aaaaaaaaaaaa\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"tenant_id\",\n \"client_id\"\n ],\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"The archive path.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region where the archive will be stored.\",\n \"type\": \"string\"\n },\n \"storage_account\": {\n \"description\": \"The associated storage account.\",\n \"example\": \"account-name\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"azure\",\n \"description\": \"Type of the Azure archive destination.\",\n \"enum\": [\n \"azure\"\n ],\n \"example\": \"azure\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE\"\n ]\n }\n },\n \"required\": [\n \"storage_account\",\n \"container\",\n \"integration\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The GCS archive destination.\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The bucket where the archive will be stored.\",\n \"example\": \"bucket-name\",\n \"type\": \"string\"\n },\n \"integration\": {\n \"description\": \"The GCS archive's integration destination.\",\n \"properties\": {\n \"client_email\": {\n \"description\": \"A client email.\",\n \"example\": \"youremail@example.com\",\n \"type\": \"string\"\n },\n \"project_id\": {\n \"description\": \"A project ID.\",\n \"example\": \"project-id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"client_email\"\n ],\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"The archive path.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"gcs\",\n \"description\": \"Type of the GCS archive destination.\",\n \"enum\": [\n \"gcs\"\n ],\n \"example\": \"gcs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCS\"\n ]\n }\n },\n \"required\": [\n \"bucket\",\n \"integration\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The S3 archive destination.\",\n \"properties\": {\n \"bucket\": {\n \"description\": \"The bucket where the archive will be stored.\",\n \"example\": \"bucket-name\",\n \"type\": \"string\"\n },\n \"encryption\": {\n \"description\": \"The S3 encryption settings.\",\n \"properties\": {\n \"key\": {\n \"description\": \"An Amazon Resource Name (ARN) used to identify an AWS KMS key.\",\n \"example\": \"arn:aws:kms:us-east-1:012345678901:key/DatadogIntegrationRoleKms\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of S3 encryption for a destination.\",\n \"enum\": [\n \"NO_OVERRIDE\",\n \"SSE_S3\",\n \"SSE_KMS\"\n ],\n \"example\": \"SSE_S3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NO_OVERRIDE\",\n \"SSE_S3\",\n \"SSE_KMS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"integration\": {\n \"description\": \"The S3 Archive's integration destination.\",\n \"properties\": {\n \"account_id\": {\n \"description\": \"The account ID for the integration.\",\n \"example\": \"123456789012\",\n \"type\": \"string\"\n },\n \"role_name\": {\n \"description\": \"The path of the integration.\",\n \"example\": \"role-name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role_name\",\n \"account_id\"\n ],\n \"type\": \"object\"\n },\n \"path\": {\n \"description\": \"The archive path.\",\n \"type\": \"string\"\n },\n \"storage_class\": {\n \"default\": \"STANDARD\",\n \"description\": \"The storage class where the archive will be stored.\",\n \"enum\": [\n \"STANDARD\",\n \"STANDARD_IA\",\n \"ONEZONE_IA\",\n \"INTELLIGENT_TIERING\",\n \"GLACIER_IR\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"STANDARD_IA\",\n \"ONEZONE_IA\",\n \"INTELLIGENT_TIERING\",\n \"GLACIER_IR\"\n ]\n },\n \"type\": {\n \"default\": \"s3\",\n \"description\": \"Type of the S3 archive destination.\",\n \"enum\": [\n \"s3\"\n ],\n \"example\": \"s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"S3\"\n ]\n }\n },\n \"required\": [\n \"bucket\",\n \"integration\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"include_tags\": {\n \"default\": false,\n \"description\": \"To store the tags in the archive, set the value \\\"true\\\".\\nIf it is set to \\\"false\\\", the tags will be deleted when the logs are sent to the archive.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The archive name.\",\n \"example\": \"Nginx Archive\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The archive query/filter. Logs matching this query are included in the archive.\",\n \"example\": \"source:nginx\",\n \"type\": \"string\"\n },\n \"rehydration_max_scan_size_in_gb\": {\n \"description\": \"Maximum scan size for rehydration from this archive.\",\n \"example\": 100,\n \"format\": \"int64\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"rehydration_tags\": {\n \"description\": \"An array of tags to add to rehydrated logs from an archive.\",\n \"example\": [\n \"team:intake\",\n \"team:app\"\n ],\n \"items\": {\n \"description\": \"A given tag in the `:` format.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"query\",\n \"destination\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"archives\",\n \"description\": \"The type of the resource. The value should always be archives.\",\n \"example\": \"archives\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the archive.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsAccountIntegration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsAccountIntegration.json new file mode 100644 index 00000000..f68ea794 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsAccountIntegration.json @@ -0,0 +1,689 @@ +{ + "name": "UpdateAwsAccountIntegration", + "fully_qualified_name": "DatadogApi.UpdateAwsAccountIntegration@0.1.0", + "description": "Update an AWS Account Integration configuration.\n\nUse this tool to update the configuration of an AWS Account Integration by specifying the configuration ID. Ideal for modifying existing AWS integration settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_integration_config_id", + "required": true, + "description": "Unique Datadog ID for the AWS Account Integration Config. Retrieve using the List all AWS integrations endpoint and query by AWS Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "aws_account_config_id" + }, + { + "name": "aws_account_update_request_data", + "required": true, + "description": "JSON payload for updating AWS Account Integration. It includes detailed configurations for attributes such as account_tags, auth_config, logs_config, metrics_config, resources_config, and traces_config.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to apply to all hosts and metrics reporting for this account. Defaults to `[]`." + }, + "auth_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Authentication config." + }, + "aws_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Account ID." + }, + "aws_partition": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws", + "aws-cn", + "aws-us-gov" + ], + "properties": null, + "inner_properties": null, + "description": "AWS partition your AWS account is scoped to. Defaults to `aws`.\nSee [Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) in the AWS documentation for more information." + }, + "aws_regions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Regions to collect data from. Defaults to `include_all`." + }, + "logs_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambda_forwarder": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambdas": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to `[]`." + }, + "log_source_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS log source to which the tag filters defined in `tags` are applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the log source specified by `source`." + } + }, + "description": "List of AWS log source tag filters. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "Log source configuration." + }, + "sources": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of service IDs set to enable automatic log collection. Discover the list of available services with the\n[Get list of AWS log ready services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) endpoint." + } + }, + "inner_properties": null, + "description": "Log Autosubscription configuration for Datadog Forwarder Lambda functions. Automatically set up triggers for existing\nand new logs for some services, ensuring no logs from new resources are missed and saving time spent on manual configuration." + } + }, + "inner_properties": null, + "description": "AWS Logs Collection config." + }, + "metrics_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "automute_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable EC2 automute for AWS metrics. Defaults to `true`." + }, + "collect_cloudwatch_alarms": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable CloudWatch alarms collection. Defaults to `false`." + }, + "collect_custom_metrics": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable custom metrics collection. Defaults to `false`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable AWS metrics collection. Defaults to `true`." + }, + "namespace_filters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Metrics namespace filters. Defaults to `exclude_only`." + }, + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "namespace": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS service for which the tag filters defined in `tags` will be applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the service specified by `namespace`." + } + }, + "description": "AWS Metrics collection tag filters list. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "AWS Metrics Collection config." + }, + "resources_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cloud_security_posture_management_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Defaults to `false`. Requires `extended_collection` to be set to `true`." + }, + "extended_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Defaults to `true`. Required for `cloud_security_posture_management_collection`." + } + }, + "inner_properties": null, + "description": "AWS Resources Collection config." + }, + "traces_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "xray_services": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS X-Ray services to collect traces from. Defaults to `include_only`." + } + }, + "inner_properties": null, + "description": "AWS Traces Collection config." + } + }, + "inner_properties": null, + "description": "The AWS Account Integration Config to be updated." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config.\nTo get the config ID for an account, use the [List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations)\nendpoint and query by AWS Account ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "account" + ], + "properties": null, + "inner_properties": null, + "description": "AWS Account resource type." + } + }, + "inner_properties": null, + "description": "AWS Account Update Request data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateAWSAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/aws/accounts/{aws_account_config_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "aws_account_config_id", + "tool_parameter_name": "aws_account_integration_config_id", + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config. To get the config ID for an account, use the\n[List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations) endpoint and query by AWS Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "aws_account_update_request_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to apply to all hosts and metrics reporting for this account. Defaults to `[]`." + }, + "auth_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Authentication config." + }, + "aws_account_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Account ID." + }, + "aws_partition": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws", + "aws-cn", + "aws-us-gov" + ], + "properties": null, + "inner_properties": null, + "description": "AWS partition your AWS account is scoped to. Defaults to `aws`.\nSee [Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) in the AWS documentation for more information." + }, + "aws_regions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Regions to collect data from. Defaults to `include_all`." + }, + "logs_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambda_forwarder": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "lambdas": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to `[]`." + }, + "log_source_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "source": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS log source to which the tag filters defined in `tags` are applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the log source specified by `source`." + } + }, + "description": "List of AWS log source tag filters. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "Log source configuration." + }, + "sources": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of service IDs set to enable automatic log collection. Discover the list of available services with the\n[Get list of AWS log ready services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) endpoint." + } + }, + "inner_properties": null, + "description": "Log Autosubscription configuration for Datadog Forwarder Lambda functions. Automatically set up triggers for existing\nand new logs for some services, ensuring no logs from new resources are missed and saving time spent on manual configuration." + } + }, + "inner_properties": null, + "description": "AWS Logs Collection config." + }, + "metrics_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "automute_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable EC2 automute for AWS metrics. Defaults to `true`." + }, + "collect_cloudwatch_alarms": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable CloudWatch alarms collection. Defaults to `false`." + }, + "collect_custom_metrics": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable custom metrics collection. Defaults to `false`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable AWS metrics collection. Defaults to `true`." + }, + "namespace_filters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS Metrics namespace filters. Defaults to `exclude_only`." + }, + "tag_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "namespace": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS service for which the tag filters defined in `tags` will be applied." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS resource tags to filter on for the service specified by `namespace`." + } + }, + "description": "AWS Metrics collection tag filters list. Defaults to `[]`." + } + }, + "inner_properties": null, + "description": "AWS Metrics Collection config." + }, + "resources_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cloud_security_posture_management_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Defaults to `false`. Requires `extended_collection` to be set to `true`." + }, + "extended_collection": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Defaults to `true`. Required for `cloud_security_posture_management_collection`." + } + }, + "inner_properties": null, + "description": "AWS Resources Collection config." + }, + "traces_config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "xray_services": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "AWS X-Ray services to collect traces from. Defaults to `include_only`." + } + }, + "inner_properties": null, + "description": "AWS Traces Collection config." + } + }, + "inner_properties": null, + "description": "The AWS Account Integration Config to be updated." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique Datadog ID of the AWS Account Integration Config.\nTo get the config ID for an account, use the [List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations)\nendpoint and query by AWS Account ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "account" + ], + "properties": null, + "inner_properties": null, + "description": "AWS Account resource type." + } + }, + "inner_properties": null, + "description": "AWS Account Update Request data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"AWS Account Update Request body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"AWS Account Update Request data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The AWS Account Integration Config to be updated.\",\n \"properties\": {\n \"account_tags\": {\n \"description\": \"Tags to apply to all hosts and metrics reporting for this account. Defaults to `[]`.\",\n \"items\": {\n \"description\": \"Tag in the form `key:value`.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"auth_config\": {\n \"description\": \"AWS Authentication config.\",\n \"oneOf\": [\n {\n \"description\": \"AWS Authentication config to integrate your account using an access key pair.\",\n \"properties\": {\n \"access_key_id\": {\n \"description\": \"AWS Access Key ID.\",\n \"example\": \"AKIAIOSFODNN7EXAMPLE\",\n \"type\": \"string\"\n },\n \"secret_access_key\": {\n \"description\": \"AWS Secret Access Key.\",\n \"example\": \"wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY\",\n \"minLength\": 1,\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"required\": [\n \"access_key_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"AWS Authentication config to integrate your account using an IAM role.\",\n \"properties\": {\n \"external_id\": {\n \"description\": \"AWS IAM External ID for associated role.\",\n \"type\": \"string\"\n },\n \"role_name\": {\n \"description\": \"AWS IAM Role name.\",\n \"example\": \"DatadogIntegrationRole\",\n \"maxLength\": 576,\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role_name\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"aws_account_id\": {\n \"description\": \"AWS Account ID.\",\n \"example\": \"123456789012\",\n \"type\": \"string\"\n },\n \"aws_partition\": {\n \"description\": \"AWS partition your AWS account is scoped to. Defaults to `aws`.\\nSee [Partitions](https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html) in the AWS documentation for more information.\",\n \"enum\": [\n \"aws\",\n \"aws-cn\",\n \"aws-us-gov\"\n ],\n \"example\": \"aws\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS\",\n \"AWS_CN\",\n \"AWS_US_GOV\"\n ]\n },\n \"aws_regions\": {\n \"description\": \"AWS Regions to collect data from. Defaults to `include_all`.\",\n \"oneOf\": [\n {\n \"description\": \"Include all regions. Defaults to `true`.\",\n \"properties\": {\n \"include_all\": {\n \"description\": \"Include all regions.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"include_all\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Include only these regions.\",\n \"properties\": {\n \"include_only\": {\n \"description\": \"Include only these regions.\",\n \"example\": [\n \"us-east-1\"\n ],\n \"items\": {\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"include_only\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"logs_config\": {\n \"description\": \"AWS Logs Collection config.\",\n \"properties\": {\n \"lambda_forwarder\": {\n \"description\": \"Log Autosubscription configuration for Datadog Forwarder Lambda functions. Automatically set up triggers for existing\\nand new logs for some services, ensuring no logs from new resources are missed and saving time spent on manual configuration.\",\n \"properties\": {\n \"lambdas\": {\n \"description\": \"List of Datadog Lambda Log Forwarder ARNs in your AWS account. Defaults to `[]`.\",\n \"items\": {\n \"example\": \"arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"log_source_config\": {\n \"description\": \"Log source configuration.\",\n \"properties\": {\n \"tag_filters\": {\n \"description\": \"List of AWS log source tag filters. Defaults to `[]`.\",\n \"items\": {\n \"description\": \"AWS log source tag filter list. Defaults to `[]`.\\nArray of log source to AWS resource tag mappings. Each mapping contains a log source and its associated AWS resource tags (in `key:value` format) used to filter logs submitted to Datadog.\\nTag filters are applied for tags on the AWS resource emitting logs; tags associated with the log storage entity (such as a CloudWatch Log Group or S3 Bucket) are not considered.\\nFor more information on resource tag filter syntax, [see AWS resource exclusion](https://docs.datadoghq.com/account_management/billing/aws/#aws-resource-exclusion) in the AWS integration billing page.\",\n \"properties\": {\n \"source\": {\n \"description\": \"The AWS log source to which the tag filters defined in `tags` are applied.\",\n \"example\": \"s3\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The AWS resource tags to filter on for the log source specified by `source`.\",\n \"items\": {\n \"description\": \"Tag in the form `key:value`.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"sources\": {\n \"description\": \"List of service IDs set to enable automatic log collection. Discover the list of available services with the\\n[Get list of AWS log ready services](https://docs.datadoghq.com/api/latest/aws-logs-integration/#get-list-of-aws-log-ready-services) endpoint.\",\n \"items\": {\n \"example\": \"s3\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"metrics_config\": {\n \"description\": \"AWS Metrics Collection config.\",\n \"properties\": {\n \"automute_enabled\": {\n \"description\": \"Enable EC2 automute for AWS metrics. Defaults to `true`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"collect_cloudwatch_alarms\": {\n \"description\": \"Enable CloudWatch alarms collection. Defaults to `false`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"collect_custom_metrics\": {\n \"description\": \"Enable custom metrics collection. Defaults to `false`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"description\": \"Enable AWS metrics collection. Defaults to `true`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"namespace_filters\": {\n \"description\": \"AWS Metrics namespace filters. Defaults to `exclude_only`.\",\n \"oneOf\": [\n {\n \"description\": \"Exclude only these namespaces from metrics collection. Defaults to `[\\\"AWS/SQS\\\", \\\"AWS/ElasticMapReduce\\\", \\\"AWS/Usage\\\"]`.\\n`AWS/SQS`, `AWS/ElasticMapReduce`, and `AWS/Usage` are excluded by default to reduce your AWS CloudWatch costs from `GetMetricData` API calls.\",\n \"properties\": {\n \"exclude_only\": {\n \"description\": \"Exclude only these namespaces from metrics collection. Defaults to `[\\\"AWS/SQS\\\", \\\"AWS/ElasticMapReduce\\\", \\\"AWS/Usage\\\"]`.\\n`AWS/SQS`, `AWS/ElasticMapReduce`, and `AWS/Usage` are excluded by default to reduce your AWS CloudWatch costs from `GetMetricData` API calls.\",\n \"example\": [\n \"AWS/SQS\",\n \"AWS/ElasticMapReduce\",\n \"AWS/Usage\"\n ],\n \"items\": {\n \"example\": \"AWS/SQS\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"exclude_only\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Include only these namespaces.\",\n \"properties\": {\n \"include_only\": {\n \"description\": \"Include only these namespaces.\",\n \"example\": [\n \"AWS/EC2\"\n ],\n \"items\": {\n \"example\": \"AWS/EC2\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"include_only\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"tag_filters\": {\n \"description\": \"AWS Metrics collection tag filters list. Defaults to `[]`.\",\n \"items\": {\n \"description\": \"AWS Metrics Collection tag filters list. Defaults to `[]`.\\nThe array of custom AWS resource tags (in the form `key:value`) defines a filter that Datadog uses when collecting metrics from a specified service.\\nWildcards, such as `?` (match a single character) and `*` (match multiple characters), and exclusion using `!` before the tag are supported.\\nFor EC2, only hosts that match one of the defined tags will be imported into Datadog. The rest will be ignored.\\nFor example, `env:production,instance-type:c?.*,!region:us-east-1`.\",\n \"properties\": {\n \"namespace\": {\n \"description\": \"The AWS service for which the tag filters defined in `tags` will be applied.\",\n \"example\": \"AWS/EC2\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The AWS resource tags to filter on for the service specified by `namespace`.\",\n \"items\": {\n \"description\": \"Tag in the form `key:value`.\",\n \"example\": \"datadog:true\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"resources_config\": {\n \"description\": \"AWS Resources Collection config.\",\n \"properties\": {\n \"cloud_security_posture_management_collection\": {\n \"description\": \"Enable Cloud Security Management to scan AWS resources for vulnerabilities, misconfigurations, identity risks, and compliance violations. Defaults to `false`. Requires `extended_collection` to be set to `true`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"extended_collection\": {\n \"description\": \"Whether Datadog collects additional attributes and configuration information about the resources in your AWS account. Defaults to `true`. Required for `cloud_security_posture_management_collection`.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"traces_config\": {\n \"description\": \"AWS Traces Collection config.\",\n \"properties\": {\n \"xray_services\": {\n \"description\": \"AWS X-Ray services to collect traces from. Defaults to `include_only`.\",\n \"oneOf\": [\n {\n \"description\": \"Include all services.\",\n \"properties\": {\n \"include_all\": {\n \"description\": \"Include all services.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"include_all\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Include only these services. Defaults to `[]`.\",\n \"nullable\": true,\n \"properties\": {\n \"include_only\": {\n \"description\": \"Include only these services.\",\n \"example\": [\n \"AWS/AppSync\"\n ],\n \"items\": {\n \"example\": \"AWS/AppSync\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"include_only\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"aws_account_id\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Unique Datadog ID of the AWS Account Integration Config.\\nTo get the config ID for an account, use the [List all AWS integrations](https://docs.datadoghq.com/api/latest/aws-integration/#list-all-aws-integrations)\\nendpoint and query by AWS Account ID.\",\n \"example\": \"00000000-abcd-0001-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"account\",\n \"description\": \"AWS Account resource type.\",\n \"enum\": [\n \"account\"\n ],\n \"example\": \"account\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ACCOUNT\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsCurConfigStatus.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsCurConfigStatus.json new file mode 100644 index 00000000..6129028a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsCurConfigStatus.json @@ -0,0 +1,295 @@ +{ + "name": "UpdateAwsCurConfigStatus", + "fully_qualified_name": "DatadogApi.UpdateAwsCurConfigStatus@0.1.0", + "description": "Updates status or configuration of an AWS CUR config.\n\nUse this tool to update the active/archived status or account filtering settings of an AWS Cost and Usage Report (CUR) configuration in Datadog for a specified cloud account.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_account_id", + "required": true, + "description": "The ID of the AWS cloud account to configure in Datadog.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + }, + { + "name": "aws_cur_config_request_type", + "required": true, + "description": "Specify the type of AWS CUR config Patch Request, usually 'aws_cur_config_patch_request'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_cur_config_patch_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of AWS CUR config Patch Request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "excluded_aws_account_ids", + "required": false, + "description": "List of AWS account IDs to exclude from the billing dataset when \"include_new_accounts\" is true.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.account_filters.excluded_accounts" + }, + { + "name": "included_aws_accounts", + "required": false, + "description": "List of AWS account IDs to be included in the billing dataset when `include_new_accounts` is `false`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.account_filters.included_accounts" + }, + { + "name": "automatic_inclusion_of_new_accounts", + "required": false, + "description": "Set to true to automatically include new member accounts by default in your billing dataset.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to automatically include new member accounts by default in your billing dataset." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.account_filters.include_new_accounts" + }, + { + "name": "is_cost_management_enabled", + "required": false, + "description": "Indicates whether the Cloud Cost Management account is enabled. Accepts a boolean value.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the Cloud Cost Management account is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.is_enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCostAWSCURConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/aws_cur_config/{cloud_account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "cloud_account_id", + "description": "Cloud Account id.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.account_filters.excluded_accounts", + "tool_parameter_name": "excluded_aws_account_ids", + "description": "The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.account_filters.include_new_accounts", + "tool_parameter_name": "automatic_inclusion_of_new_accounts", + "description": "Whether or not to automatically include new member accounts by default in your billing dataset.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not to automatically include new member accounts by default in your billing dataset." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.account_filters.included_accounts", + "tool_parameter_name": "included_aws_accounts", + "description": "The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.is_enabled", + "tool_parameter_name": "is_cost_management_enabled", + "description": "Whether or not the Cloud Cost Management account is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the Cloud Cost Management account is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "aws_cur_config_request_type", + "description": "Type of AWS CUR config Patch Request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_cur_config_patch_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of AWS CUR config Patch Request." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "aws_cur_config_patch_request", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"AWS CUR config Patch Request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"AWS CUR config Patch data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for AWS CUR config Patch Request.\",\n \"properties\": {\n \"account_filters\": {\n \"description\": \"The account filtering configuration.\",\n \"properties\": {\n \"excluded_accounts\": {\n \"description\": \"The AWS account IDs to be excluded from your billing dataset. This field is used when `include_new_accounts` is `true`.\",\n \"example\": [\n \"123456789123\",\n \"123456789143\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"include_new_accounts\": {\n \"description\": \"Whether or not to automatically include new member accounts by default in your billing dataset.\",\n \"example\": true,\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"included_accounts\": {\n \"description\": \"The AWS account IDs to be included in your billing dataset. This field is used when `include_new_accounts` is `false`.\",\n \"example\": [\n \"123456789123\",\n \"123456789143\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"is_enabled\": {\n \"description\": \"Whether or not the Cloud Cost Management account is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"aws_cur_config_patch_request\",\n \"description\": \"Type of AWS CUR config Patch Request.\",\n \"enum\": [\n \"aws_cur_config_patch_request\"\n ],\n \"example\": \"aws_cur_config_patch_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS_CUR_CONFIG_PATCH_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsScanOptions.json new file mode 100644 index 00000000..9b607a2d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAwsScanOptions.json @@ -0,0 +1,328 @@ +{ + "name": "UpdateAwsScanOptions", + "fully_qualified_name": "DatadogApi.UpdateAwsScanOptions@0.1.0", + "description": "Update Agentless scan options for an AWS account.\n\nThis tool updates the Agentless scan settings for a specified AWS account. It should be called when modifications to scan options are needed for security or compliance purposes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "aws_account_id", + "required": true, + "description": "The ID of the AWS account for which to update scan options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of an AWS account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "account_identifier", + "required": true, + "description": "The ID of the AWS account that needs scan options updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the AWS account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_type", + "required": true, + "description": "Specifies the resource type. Must be set to `aws_scan_options`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `aws_scan_options`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_lambda_scanning", + "required": false, + "description": "Set to true to enable scanning of AWS Lambda functions.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning of Lambda functions is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.lambda" + }, + { + "name": "enable_sensitive_data_scanning", + "required": false, + "description": "Enable scanning for sensitive data in the AWS account. Set to true to enable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for sensitive data is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.sensitive_data" + }, + { + "name": "enable_vulnerability_scanning_for_containers", + "required": false, + "description": "Set to true to enable scanning for container vulnerabilities.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_containers_os" + }, + { + "name": "enable_vulnerability_scanning_in_hosts", + "required": false, + "description": "Enable scanning for vulnerabilities in hosts. Set to true to enable, false to disable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_host_os" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateAwsScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/aws/{account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "aws_account_id", + "description": "The ID of an AWS account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of an AWS account." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.lambda", + "tool_parameter_name": "enable_lambda_scanning", + "description": "Indicates if scanning of Lambda functions is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning of Lambda functions is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.sensitive_data", + "tool_parameter_name": "enable_sensitive_data_scanning", + "description": "Indicates if scanning for sensitive data is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for sensitive data is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_containers_os", + "tool_parameter_name": "enable_vulnerability_scanning_for_containers", + "description": "Indicates if scanning for vulnerabilities in containers is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_host_os", + "tool_parameter_name": "enable_vulnerability_scanning_in_hosts", + "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "account_identifier", + "description": "The ID of the AWS account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the AWS account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource. The value should always be `aws_scan_options`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "aws_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `aws_scan_options`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "aws_scan_options", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the scan options to update.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for the scan options of a single AWS account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for the AWS scan options to update.\",\n \"properties\": {\n \"lambda\": {\n \"description\": \"Indicates if scanning of Lambda functions is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"sensitive_data\": {\n \"description\": \"Indicates if scanning for sensitive data is enabled.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"vuln_containers_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in containers is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"vuln_host_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in hosts is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the AWS account.\",\n \"example\": \"123456789012\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"aws_scan_options\",\n \"description\": \"The type of the resource. The value should always be `aws_scan_options`.\",\n \"enum\": [\n \"aws_scan_options\"\n ],\n \"example\": \"aws_scan_options\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AWS_SCAN_OPTIONS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the scan options.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAzureConfigStatus.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAzureConfigStatus.json new file mode 100644 index 00000000..9df6626c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAzureConfigStatus.json @@ -0,0 +1,196 @@ +{ + "name": "UpdateAzureConfigStatus", + "fully_qualified_name": "DatadogApi.UpdateAzureConfigStatus@0.1.0", + "description": "Update status of Azure config to active or archived.\n\nThis tool updates the status of a specified Azure configuration to either active or archived. It should be called when there is a need to change the operational state of an Azure config.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_account_id", + "required": true, + "description": "The identifier for the Azure Cloud account whose configuration status is being updated.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + }, + { + "name": "azure_config_patch_request_type", + "required": true, + "description": "Specify the type of Azure config Patch Request, typically 'azure_uc_config_patch_request'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_uc_config_patch_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Azure config Patch Request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_cloud_cost_management", + "required": false, + "description": "Set to true to enable the Cloud Cost Management account, false to disable it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the Cloud Cost Management account is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.is_enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCostAzureUCConfigs'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/azure_uc_config/{cloud_account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "cloud_account_id", + "description": "Cloud Account id.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.is_enabled", + "tool_parameter_name": "enable_cloud_cost_management", + "description": "Whether or not the Cloud Cost Management account is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the Cloud Cost Management account is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "azure_config_patch_request_type", + "description": "Type of Azure config Patch Request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_uc_config_patch_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Azure config Patch Request." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "azure_uc_config_patch_request", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Azure config Patch Request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Azure config Patch data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for Azure config Patch Request.\",\n \"properties\": {\n \"is_enabled\": {\n \"description\": \"Whether or not the Cloud Cost Management account is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"is_enabled\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"azure_uc_config_patch_request\",\n \"description\": \"Type of Azure config Patch Request.\",\n \"enum\": [\n \"azure_uc_config_patch_request\"\n ],\n \"example\": \"azure_uc_config_patch_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE_UC_CONFIG_PATCH_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAzureScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAzureScanOptions.json new file mode 100644 index 00000000..42a53e94 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateAzureScanOptions.json @@ -0,0 +1,262 @@ +{ + "name": "UpdateAzureScanOptions", + "fully_qualified_name": "DatadogApi.UpdateAzureScanOptions@0.1.0", + "description": "Update Agentless scan options for an Azure subscription.\n\nUse this tool to update the Agentless scanning preferences for a specified Azure subscription in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "azure_subscription_id", + "required": true, + "description": "The unique identifier for the Azure subscription to update scan options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "subscription_id" + }, + { + "name": "azure_subscription_identifier", + "required": false, + "description": "The Azure subscription ID for which to update scan options.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "azure_scan_options_resource_type", + "required": false, + "description": "Specifies the resource type for Azure scan options, must be 'azure_scan_options'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "Azure scan options resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_container_vulnerability_scanning", + "required": false, + "description": "Enable or disable container vulnerability scanning. Set to true to enable, false to disable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_containers_os" + }, + { + "name": "enable_scanning_for_host_vulnerabilities", + "required": false, + "description": "Enable or disable scanning for vulnerabilities in host operating systems.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_host_os" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateAzureScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/azure/{subscription_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "subscription_id", + "tool_parameter_name": "azure_subscription_id", + "description": "The Azure subscription ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_containers_os", + "tool_parameter_name": "enable_container_vulnerability_scanning", + "description": "Indicates if scanning for vulnerabilities in containers is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_host_os", + "tool_parameter_name": "enable_scanning_for_host_vulnerabilities", + "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "azure_subscription_identifier", + "description": "The Azure subscription ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Azure subscription ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "azure_scan_options_resource_type", + "description": "Azure scan options resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "azure_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "Azure scan options resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "azure_scan_options", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object for updating Azure scan options.\",\n \"example\": {\n \"data\": {\n \"id\": \"12345678-90ab-cdef-1234-567890abcdef\",\n \"type\": \"azure_scan_options\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for updating the scan options of a single Azure subscription.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for updating Azure scan options configuration.\",\n \"properties\": {\n \"vuln_containers_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in containers is enabled.\",\n \"type\": \"boolean\"\n },\n \"vuln_host_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in hosts is enabled.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The Azure subscription ID.\",\n \"example\": \"12345678-90ab-cdef-1234-567890abcdef\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"azure_scan_options\",\n \"description\": \"Azure scan options resource type.\",\n \"enum\": [\n \"azure_scan_options\"\n ],\n \"example\": \"azure_scan_options\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE_SCAN_OPTIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseAttributes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseAttributes.json new file mode 100644 index 00000000..f561c013 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseAttributes.json @@ -0,0 +1,233 @@ +{ + "name": "UpdateCaseAttributes", + "fully_qualified_name": "DatadogApi.UpdateCaseAttributes@0.1.0", + "description": "Update attributes of a specific case.\n\nUse this tool to update the attributes of a specific case in Datadog by providing the case ID and new attribute values.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier or key for the case to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "case_update_payload", + "required": true, + "description": "JSON payload containing the case attributes to update. Include 'attributes' with its properties and type as 'case'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `CaseObjectAttributes` object." + } + }, + "inner_properties": null, + "description": "Case update attributes attributes" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + } + }, + "inner_properties": null, + "description": "Case update attributes" + } + }, + "inner_properties": null, + "description": "Case attributes update payload" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateAttributes'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/attributes", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "case_update_payload", + "description": "Case attributes update payload", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `CaseObjectAttributes` object." + } + }, + "inner_properties": null, + "description": "Case update attributes attributes" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + } + }, + "inner_properties": null, + "description": "Case update attributes" + } + }, + "inner_properties": null, + "description": "Case attributes update payload" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case update attributes request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case update attributes\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case update attributes attributes\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": \"The definition of `CaseObjectAttributes` object.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"attributes\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case attributes update payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseCustomAttribute.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseCustomAttribute.json new file mode 100644 index 00000000..97f66c94 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseCustomAttribute.json @@ -0,0 +1,306 @@ +{ + "name": "UpdateCaseCustomAttribute", + "fully_qualified_name": "DatadogApi.UpdateCaseCustomAttribute@0.1.0", + "description": "Update a custom attribute for a specific case in Datadog.\n\nUse this tool to update the custom attribute of a specific case by providing the case ID and the custom attribute key in Datadog. It should be called when you need to modify the properties of an existing case.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The UUID or key of the case to be updated. This identifies the specific case in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "custom_attribute_key", + "required": true, + "description": "The key for the custom attribute of the case to be updated. Provide the exact key name to ensure accurate updates.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case Custom attribute's key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_attribute_key" + }, + { + "name": "update_case_custom_attribute_payload", + "required": true, + "description": "JSON payload specifying the custom attribute update for a case, including attributes like type, is_multi, and value.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_multi": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, value must be an array" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "URL", + "TEXT", + "NUMBER" + ], + "properties": null, + "inner_properties": null, + "description": "Custom attributes type" + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Union of supported value for a custom attribute" + } + }, + "inner_properties": null, + "description": "Custom attribute values" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + } + }, + "inner_properties": null, + "description": "Case update custom attribute" + } + }, + "inner_properties": null, + "description": "Update case custom attribute payload" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCaseCustomAttribute'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/custom_attributes/{custom_attribute_key}", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "custom_attribute_key", + "tool_parameter_name": "custom_attribute_key", + "description": "Case Custom attribute's key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case Custom attribute's key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_case_custom_attribute_payload", + "description": "Update case custom attribute payload", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "is_multi": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, value must be an array" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "URL", + "TEXT", + "NUMBER" + ], + "properties": null, + "inner_properties": null, + "description": "Custom attributes type" + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Union of supported value for a custom attribute" + } + }, + "inner_properties": null, + "description": "Custom attribute values" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + } + }, + "inner_properties": null, + "description": "Case update custom attribute" + } + }, + "inner_properties": null, + "description": "Update case custom attribute payload" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case update custom attribute request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case update custom attribute\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Custom attribute values\",\n \"properties\": {\n \"is_multi\": {\n \"description\": \"If true, value must be an array\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"type\": {\n \"description\": \"Custom attributes type\",\n \"enum\": [\n \"URL\",\n \"TEXT\",\n \"NUMBER\"\n ],\n \"example\": \"NUMBER\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"URL\",\n \"TEXT\",\n \"NUMBER\"\n ]\n },\n \"value\": {\n \"description\": \"Union of supported value for a custom attribute\",\n \"oneOf\": [\n {\n \"description\": \"Value of TEXT/URL custom attribute\",\n \"type\": \"string\"\n },\n {\n \"description\": \"Value of multi TEXT/URL custom attribute\",\n \"items\": {\n \"description\": \"TEXT/URL Value\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n {\n \"description\": \"Value of NUMBER custom attribute\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n {\n \"description\": \"Values of multi NUMBER custom attribute\",\n \"items\": {\n \"description\": \"NUMBER value\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"type\": \"array\"\n }\n ]\n }\n },\n \"required\": [\n \"type\",\n \"is_multi\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Update case custom attribute payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseDescription.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseDescription.json new file mode 100644 index 00000000..63d45583 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseDescription.json @@ -0,0 +1,196 @@ +{ + "name": "UpdateCaseDescription", + "fully_qualified_name": "DatadogApi.UpdateCaseDescription@0.1.0", + "description": "Update the description of a case in Datadog.\n\nUse this tool to modify the description of a specific case in Datadog by providing the case ID and new description details.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_uuid_or_key", + "required": true, + "description": "The unique identifier (UUID or key) for the specific case you want to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "new_case_description", + "required": true, + "description": "Provide the new description text for the case you wish to update. This replaces the current case description.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case new description" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specify the type of resource for the case. It must be 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCaseDescription'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/description", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_uuid_or_key", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "new_case_description", + "description": "Case new description", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case new description" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case update description request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case update description\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case update description attributes\",\n \"properties\": {\n \"description\": {\n \"description\": \"Case new description\",\n \"example\": \"Seeing some weird memory increase... We shouldn't ignore this\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"description\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case description update payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCasePriority.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCasePriority.json new file mode 100644 index 00000000..0a4c563a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCasePriority.json @@ -0,0 +1,210 @@ +{ + "name": "UpdateCasePriority", + "fully_qualified_name": "DatadogApi.UpdateCasePriority@0.1.0", + "description": "Update the priority of a specific case.\n\nThis tool updates the priority level of a given case in the system. It should be called when a change in priority is required for case management.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier for the case, either UUID or key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "case_priority", + "required": true, + "description": "Specify the priority level of the case. Valid options are: 'NOT_DEFINED', 'P1', 'P2', 'P3', 'P4', 'P5'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "NOT_DEFINED", + "P1", + "P2", + "P3", + "P4", + "P5" + ], + "properties": null, + "inner_properties": null, + "description": "Case priority" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.priority" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specifies the type of resource, should be set to 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdatePriority'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/priority", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.priority", + "tool_parameter_name": "case_priority", + "description": "Case priority", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "NOT_DEFINED", + "P1", + "P2", + "P3", + "P4", + "P5" + ], + "properties": null, + "inner_properties": null, + "description": "Case priority" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "NOT_DEFINED", + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case update priority request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case priority status\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case update priority attributes\",\n \"properties\": {\n \"priority\": {\n \"default\": \"NOT_DEFINED\",\n \"description\": \"Case priority\",\n \"enum\": [\n \"NOT_DEFINED\",\n \"P1\",\n \"P2\",\n \"P3\",\n \"P4\",\n \"P5\"\n ],\n \"example\": \"NOT_DEFINED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOT_DEFINED\",\n \"P1\",\n \"P2\",\n \"P3\",\n \"P4\",\n \"P5\"\n ]\n }\n },\n \"required\": [\n \"priority\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case priority update payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseStatus.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseStatus.json new file mode 100644 index 00000000..a811ce53 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseStatus.json @@ -0,0 +1,204 @@ +{ + "name": "UpdateCaseStatus", + "fully_qualified_name": "DatadogApi.UpdateCaseStatus@0.1.0", + "description": "Update the status of a specific case in Datadog.\n\nUse this tool to change the status of an existing case in Datadog. It should be called when you need to update a case's progress or condition to a new state.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_uuid_or_key", + "required": true, + "description": "The unique identifier or key for the case to update its status in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "case_status", + "required": true, + "description": "Specify the status of the case. Valid values are 'OPEN', 'IN_PROGRESS', 'CLOSED'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPEN", + "IN_PROGRESS", + "CLOSED" + ], + "properties": null, + "inner_properties": null, + "description": "Case status" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.status" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specifies the resource type of the case. Must be 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateStatus'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/status", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_uuid_or_key", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.status", + "tool_parameter_name": "case_status", + "description": "Case status", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPEN", + "IN_PROGRESS", + "CLOSED" + ], + "properties": null, + "inner_properties": null, + "description": "Case status" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case update status request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case update status\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case update status attributes\",\n \"properties\": {\n \"status\": {\n \"description\": \"Case status\",\n \"enum\": [\n \"OPEN\",\n \"IN_PROGRESS\",\n \"CLOSED\"\n ],\n \"example\": \"OPEN\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPEN\",\n \"IN_PROGRESS\",\n \"CLOSED\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case status update payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseTitle.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseTitle.json new file mode 100644 index 00000000..e01968d7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCaseTitle.json @@ -0,0 +1,196 @@ +{ + "name": "UpdateCaseTitle", + "fully_qualified_name": "DatadogApi.UpdateCaseTitle@0.1.0", + "description": "Update the title of a specific case by ID.\n\nUse this tool to change the title of a case in Datadog by providing the specific case ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "case_identifier", + "required": true, + "description": "The unique identifier (UUID or key) of the case whose title you want to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "inferrable": true, + "http_endpoint_parameter_name": "case_id" + }, + { + "name": "new_case_title", + "required": true, + "description": "The new title for the case to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case new title" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.title" + }, + { + "name": "case_resource_type", + "required": true, + "description": "Specify the type of the case resource, which should be 'case'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCaseTitle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cases/{case_id}/title", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "case_id", + "tool_parameter_name": "case_identifier", + "description": "Case's UUID or key", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case's UUID or key" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.title", + "tool_parameter_name": "new_case_title", + "description": "Case new title", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Case new title" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "case_resource_type", + "description": "Case resource type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "case" + ], + "properties": null, + "inner_properties": null, + "description": "Case resource type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "case", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Case update title request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Case update title\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Case update title attributes\",\n \"properties\": {\n \"title\": {\n \"description\": \"Case new title\",\n \"example\": \"Memory leak investigation on API\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"case\",\n \"description\": \"Case resource type\",\n \"enum\": [\n \"case\"\n ],\n \"example\": \"case\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CASE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Case title update payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCloudWorkloadSecurityAgentRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCloudWorkloadSecurityAgentRule.json new file mode 100644 index 00000000..072b533f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCloudWorkloadSecurityAgentRule.json @@ -0,0 +1,721 @@ +{ + "name": "UpdateCloudWorkloadSecurityAgentRule", + "fully_qualified_name": "DatadogApi.UpdateCloudWorkloadSecurityAgentRule@0.1.0", + "description": "Update a specific cloud workload security agent rule.\n\nUse this tool to update a particular security agent rule for cloud workloads. This should only be used for the Government (US1-FED) site and returns the updated agent rule object upon success.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_identifier", + "required": true, + "description": "The unique identifier for the agent rule to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "agent_rule_id" + }, + { + "name": "agent_rule_definition", + "required": true, + "description": "The new definition of the agent rule, including actions, constraints, and metadata.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent" + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule" + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to" + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule" + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to" + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved" + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule" + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Update an existing Cloud Workload Security Agent rule" + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "New definition of the agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCloudWorkloadSecurityAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/cloud_workload_security/agent_rules/{agent_rule_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "agent_rule_id", + "tool_parameter_name": "agent_rule_identifier", + "description": "The ID of the Agent rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "agent_rule_definition", + "description": "New definition of the agent rule", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent" + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule" + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to" + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule" + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to" + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved" + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule" + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Update an existing Cloud Workload Security Agent rule" + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "New definition of the agent rule" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the Agent rule with the attributes to update\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single Agent rule\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Update an existing Cloud Workload Security Agent rule\",\n \"properties\": {\n \"actions\": {\n \"description\": \"The array of actions the rule can perform if triggered\",\n \"items\": {\n \"description\": \"The action the rule can perform if triggered\",\n \"properties\": {\n \"filter\": {\n \"description\": \"SECL expression used to target the container to apply the action on\",\n \"type\": \"string\"\n },\n \"hash\": {\n \"additionalProperties\": {},\n \"description\": \"An empty object indicating the hash action\",\n \"type\": \"object\"\n },\n \"kill\": {\n \"description\": \"Kill system call applied on the container matching the rule\",\n \"properties\": {\n \"signal\": {\n \"description\": \"Supported signals for the kill system call\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"The metadata action applied on the scope matching the rule\",\n \"properties\": {\n \"image_tag\": {\n \"description\": \"The image tag of the metadata action\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The service of the metadata action\",\n \"type\": \"string\"\n },\n \"short_image\": {\n \"description\": \"The short image of the metadata action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"set\": {\n \"description\": \"The set action applied on the scope matching the rule\",\n \"properties\": {\n \"append\": {\n \"description\": \"Whether the value should be appended to the field.\",\n \"type\": \"boolean\"\n },\n \"default_value\": {\n \"description\": \"The default value of the set action\",\n \"type\": \"string\"\n },\n \"expression\": {\n \"description\": \"The expression of the set action.\",\n \"type\": \"string\"\n },\n \"field\": {\n \"description\": \"The field of the set action\",\n \"type\": \"string\"\n },\n \"inherited\": {\n \"description\": \"Whether the value should be inherited.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The name of the set action\",\n \"type\": \"string\"\n },\n \"scope\": {\n \"description\": \"The scope of the set action.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"The size of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"ttl\": {\n \"description\": \"The time to live of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"The value of the set action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"agent_version\": {\n \"description\": \"Constrain the rule to specific versions of the Datadog Agent\",\n \"type\": \"string\"\n },\n \"blocking\": {\n \"description\": \"The blocking policies that the rule belongs to\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"The description of the Agent rule\",\n \"example\": \"My Agent rule\",\n \"type\": \"string\"\n },\n \"disabled\": {\n \"description\": \"The disabled policies that the rule belongs to\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"Whether the Agent rule is enabled\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"expression\": {\n \"description\": \"The SECL expression of the Agent rule\",\n \"example\": \"exec.file.name == \\\"sh\\\"\",\n \"type\": \"string\"\n },\n \"monitoring\": {\n \"description\": \"The monitoring policies that the rule belongs to\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"policy_id\": {\n \"description\": \"The ID of the policy where the Agent rule is saved\",\n \"example\": \"a8c8e364-6556-434d-b798-a4c23de29c0b\",\n \"type\": \"string\"\n },\n \"product_tags\": {\n \"description\": \"The list of product tags associated with the rule\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"silent\": {\n \"description\": \"Whether the rule is silent.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the Agent rule\",\n \"example\": \"3dd-0uc-h1s\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"agent_rule\",\n \"description\": \"The type of the resource, must always be `agent_rule`\",\n \"enum\": [\n \"agent_rule\"\n ],\n \"example\": \"agent_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AGENT_RULE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the agent rule\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCloudflareAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCloudflareAccount.json new file mode 100644 index 00000000..033898dd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCloudflareAccount.json @@ -0,0 +1,328 @@ +{ + "name": "UpdateCloudflareAccount", + "fully_qualified_name": "DatadogApi.UpdateCloudflareAccount@0.1.0", + "description": "Update details of a Cloudflare account.\n\nUse this tool to update the information of an existing Cloudflare account linked with Datadog. It should be called whenever modifications to a Cloudflare account are required.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloudflare_account_id", + "required": true, + "description": "The unique identifier for the Cloudflare account to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "cloudflare_api_key", + "required": false, + "description": "The API key for the Cloudflare account, required for authentication.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Cloudflare account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.api_key" + }, + { + "name": "cloudflare_account_email", + "required": false, + "description": "The email associated with the Cloudflare account. Required if using an API key instead of a token.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.email" + }, + { + "name": "cloudflare_account_name", + "required": false, + "description": "The name of the Cloudflare account to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Cloudflare account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "allowed_resource_types_for_metrics", + "required": false, + "description": "An array of resource types ('web', 'dns', 'lb', 'worker') to allow for metrics collection.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.resources" + }, + { + "name": "zone_allowlist", + "required": false, + "description": "A list of zone identifiers to restrict which metrics can be pulled for Cloudflare.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of zones to restrict pulling metrics for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.zones" + }, + { + "name": "json_api_type", + "required": false, + "description": "The JSON:API type for this API. Always use `cloudflare-accounts`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloudflare-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `cloudflare-accounts`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCloudflareAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/cloudflare/accounts/{account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "cloudflare_account_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.api_key", + "tool_parameter_name": "cloudflare_api_key", + "description": "The API key of the Cloudflare account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Cloudflare account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.email", + "tool_parameter_name": "cloudflare_account_email", + "description": "The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "cloudflare_account_name", + "description": "The name of the Cloudflare account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Cloudflare account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.resources", + "tool_parameter_name": "allowed_resource_types_for_metrics", + "description": "An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.zones", + "tool_parameter_name": "zone_allowlist", + "description": "An allowlist of zones to restrict pulling metrics for.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An allowlist of zones to restrict pulling metrics for." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "json_api_type", + "description": "The JSON:API type for this API. Should always be `cloudflare-accounts`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloudflare-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `cloudflare-accounts`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "cloudflare-accounts", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema when updating a Cloudflare account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for updating a Cloudflare account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for updating a Cloudflare account.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key of the Cloudflare account.\",\n \"example\": \"a94a8fe5ccb19ba61c4c0873d391e987982fbbd3\",\n \"type\": \"string\"\n },\n \"email\": {\n \"description\": \"The email associated with the Cloudflare account. If an API key is provided (and not a token), this field is also required.\",\n \"example\": \"test-email@example.com\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the Cloudflare account.\",\n \"type\": \"string\"\n },\n \"resources\": {\n \"description\": \"An allowlist of resources to restrict pulling metrics for including `'web', 'dns', 'lb' (load balancer), 'worker'`.\",\n \"example\": [\n \"web\",\n \"dns\",\n \"lb\",\n \"worker\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"zones\": {\n \"description\": \"An allowlist of zones to restrict pulling metrics for.\",\n \"example\": [\n \"zone_id_1\",\n \"zone_id_2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"api_key\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"cloudflare-accounts\",\n \"description\": \"The JSON:API type for this API. Should always be `cloudflare-accounts`.\",\n \"enum\": [\n \"cloudflare-accounts\"\n ],\n \"example\": \"cloudflare-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDFLARE_ACCOUNTS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateConfluentAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateConfluentAccount.json new file mode 100644 index 00000000..3e0f82ad --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateConfluentAccount.json @@ -0,0 +1,262 @@ +{ + "name": "UpdateConfluentAccount", + "fully_qualified_name": "DatadogApi.UpdateConfluentAccount@0.1.0", + "description": "Updates the Confluent account details.\n\nUse this tool to update the details of a Confluent account by providing the account ID. It ensures the account information is current and accurately reflects any required changes.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "The unique ID of the Confluent account to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "confluent_api_key", + "required": true, + "description": "Provide the API key associated with your Confluent account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key associated with your Confluent account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.api_key" + }, + { + "name": "confluent_api_secret", + "required": true, + "description": "The API secret for the Confluent account. Required to authenticate and update the account details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API secret associated with your Confluent account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.api_secret" + }, + { + "name": "api_type", + "required": true, + "description": "Set this to `confluent-cloud-accounts` to specify the JSON:API type for the update request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `confluent-cloud-accounts`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "tags_list", + "required": false, + "description": "A list of tag strings for the account. Use single keys or key-value pairs separated by a colon.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateConfluentAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.api_key", + "tool_parameter_name": "confluent_api_key", + "description": "The API key associated with your Confluent account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key associated with your Confluent account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.api_secret", + "tool_parameter_name": "confluent_api_secret", + "description": "The API secret associated with your Confluent account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API secret associated with your Confluent account." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "tags_list", + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "api_type", + "description": "The JSON:API type for this API. Should always be `confluent-cloud-accounts`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `confluent-cloud-accounts`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "confluent-cloud-accounts", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The JSON:API request for updating a Confluent account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for updating a Confluent account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for updating a Confluent account.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key associated with your Confluent account.\",\n \"example\": \"TESTAPIKEY123\",\n \"type\": \"string\"\n },\n \"api_secret\": {\n \"description\": \"The API secret associated with your Confluent account.\",\n \"example\": \"test-api-secret-123\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"api_key\",\n \"api_secret\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"confluent-cloud-accounts\",\n \"description\": \"The JSON:API type for this API. Should always be `confluent-cloud-accounts`.\",\n \"enum\": [\n \"confluent-cloud-accounts\"\n ],\n \"example\": \"confluent-cloud-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFLUENT_CLOUD_ACCOUNTS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Confluent payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateConfluentResource.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateConfluentResource.json new file mode 100644 index 00000000..40b14855 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateConfluentResource.json @@ -0,0 +1,328 @@ +{ + "name": "UpdateConfluentResource", + "fully_qualified_name": "DatadogApi.UpdateConfluentResource@0.1.0", + "description": "Update a Confluent resource linked to a specified account.\n\nUse this tool to update a Confluent resource associated with a given account by specifying the resource and account IDs.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "confluent_account_id", + "required": true, + "description": "The ID of the Confluent account associated with the resource to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "resource_id", + "required": true, + "description": "The ID of the Confluent account resource to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account Resource ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "resource_id" + }, + { + "name": "resource_type", + "required": true, + "description": "Specifies the resource type of the Confluent resource. Valid values are 'kafka', 'connector', 'ksql', or 'schema_registry'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.resource_type" + }, + { + "name": "confluent_resource_id", + "required": true, + "description": "The unique identifier for the Confluent resource to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID associated with a Confluent resource." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_data_type", + "required": true, + "description": "The JSON:API type for this request. Must be 'confluent-cloud-resources'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-resources" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "tags_list", + "required": false, + "description": "A list of tags for the resource. Each tag can be a single key or a key-value pair separated by a colon.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + }, + { + "name": "enable_custom_metrics", + "required": false, + "description": "Set to true to enable the `custom.consumer_lag_offset` metric which includes extra metric tags.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enable_custom_metrics" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateConfluentResource'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/confluent-cloud/accounts/{account_id}/resources/{resource_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "confluent_account_id", + "description": "Confluent Account ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resource_id", + "tool_parameter_name": "resource_id", + "description": "Confluent Account Resource ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Confluent Account Resource ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enable_custom_metrics", + "tool_parameter_name": "enable_custom_metrics", + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": false, + "documentation_urls": [] + }, + { + "name": "data.attributes.resource_type", + "tool_parameter_name": "resource_type", + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "tags_list", + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "confluent_resource_id", + "description": "The ID associated with a Confluent resource.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID associated with a Confluent resource." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_data_type", + "description": "The JSON:API type for this request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "confluent-cloud-resources" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this request." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "confluent-cloud-resources", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The JSON:API request for updating a Confluent resource.\",\n \"properties\": {\n \"data\": {\n \"description\": \"JSON:API request for updating a Confluent resource.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for updating a Confluent resource.\",\n \"properties\": {\n \"enable_custom_metrics\": {\n \"default\": false,\n \"description\": \"Enable the `custom.consumer_lag_offset` metric, which contains extra metric tags.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"resource_type\": {\n \"description\": \"The resource type of the Resource. Can be `kafka`, `connector`, `ksql`, or `schema_registry`.\",\n \"example\": \"kafka\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"A list of strings representing tags. Can be a single key, or key-value pairs separated by a colon.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"resource_type\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID associated with a Confluent resource.\",\n \"example\": \"resource-id-123\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"confluent-cloud-resources\",\n \"description\": \"The JSON:API type for this request.\",\n \"enum\": [\n \"confluent-cloud-resources\"\n ],\n \"example\": \"confluent-cloud-resources\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CONFLUENT_CLOUD_RESOURCES\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Confluent payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCustomAllocationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCustomAllocationRule.json new file mode 100644 index 00000000..aed64e53 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCustomAllocationRule.json @@ -0,0 +1,839 @@ +{ + "name": "UpdateCustomAllocationRule", + "fully_qualified_name": "DatadogApi.UpdateCustomAllocationRule@0.1.0", + "description": "Update custom allocation rules with new filters and strategies.\n\nThis tool updates an existing custom allocation rule in Datadog by modifying filters and allocation strategies. It supports various allocation strategies like PROPORTIONAL, EVEN, TIMESERIES, PERCENT, and USAGE_METRIC. Users should specify strategy methods and filter conditions to redefine the allocation. Appropriate strategy fields and filter operators must be used according to the needs.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_allocation_rule_id", + "required": true, + "description": "The unique identifier for the custom allocation rule to update.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the custom allocation rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "allocation_rule_request_body", + "required": true, + "description": "JSON payload containing filters, strategy, and attributes for updating the custom allocation rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "costs_to_allocate": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `attributes` `costs_to_allocate`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "order_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `order_id`." + }, + "provider": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `provider`." + }, + "rejected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rejected`." + }, + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rule_name`." + }, + "strategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "allocated_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "allocated_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + } + }, + "description": "The `items` `allocated_tags`." + }, + "percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `percentage`. The numeric value format should be a 32bit float value." + } + }, + "description": "The `strategy` `allocated_by`." + }, + "allocated_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `allocated_by_filters`." + }, + "allocated_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `allocated_by_tag_keys`." + }, + "based_on_costs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `based_on_costs`." + }, + "based_on_timeseries": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `based_on_timeseries`." + }, + "evaluate_grouped_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `evaluate_grouped_by_filters`." + }, + "evaluate_grouped_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `evaluate_grouped_by_tag_keys`." + }, + "granularity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `granularity`." + }, + "method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `method`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributesStrategy` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `type`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ArbitraryCostUpsertRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "upsert_arbitrary_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Upsert arbitrary rule resource type." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCustomAllocationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/arbitrary_rule/{rule_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "custom_allocation_rule_id", + "description": "The unique identifier of the custom allocation rule", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the custom allocation rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "allocation_rule_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "costs_to_allocate": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `attributes` `costs_to_allocate`." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "order_id": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `order_id`." + }, + "provider": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `provider`." + }, + "rejected": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rejected`." + }, + "rule_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `rule_name`." + }, + "strategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "allocated_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "allocated_tags": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + } + }, + "description": "The `items` `allocated_tags`." + }, + "percentage": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `percentage`. The numeric value format should be a 32bit float value." + } + }, + "description": "The `strategy` `allocated_by`." + }, + "allocated_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `allocated_by_filters`." + }, + "allocated_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `allocated_by_tag_keys`." + }, + "based_on_costs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `based_on_costs`." + }, + "based_on_timeseries": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `based_on_timeseries`." + }, + "evaluate_grouped_by_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `condition`." + }, + "tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `tag`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `value`." + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `values`." + } + }, + "description": "The `strategy` `evaluate_grouped_by_filters`." + }, + "evaluate_grouped_by_tag_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `evaluate_grouped_by_tag_keys`." + }, + "granularity": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `granularity`." + }, + "method": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `strategy` `method`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributesStrategy` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `type`." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ArbitraryCostUpsertRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "upsert_arbitrary_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Upsert arbitrary rule resource type." + } + }, + "inner_properties": null, + "description": "The definition of `ArbitraryCostUpsertRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequest` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"costs_to_allocate\": [\n {\n \"condition\": \"is\",\n \"tag\": \"account_id\",\n \"value\": \"123456789\",\n \"values\": null\n },\n {\n \"condition\": \"in\",\n \"tag\": \"environment\",\n \"value\": \"\",\n \"values\": [\n \"production\",\n \"staging\"\n ]\n }\n ],\n \"enabled\": true,\n \"order_id\": 1,\n \"provider\": [\n \"aws\",\n \"gcp\"\n ],\n \"rule_name\": \"example-arbitrary-cost-rule\",\n \"strategy\": {\n \"allocated_by_tag_keys\": [\n \"team\",\n \"environment\"\n ],\n \"based_on_costs\": [\n {\n \"condition\": \"is\",\n \"tag\": \"service\",\n \"value\": \"web-api\",\n \"values\": null\n },\n {\n \"condition\": \"not in\",\n \"tag\": \"team\",\n \"value\": \"\",\n \"values\": [\n \"legacy\",\n \"deprecated\"\n ]\n }\n ],\n \"granularity\": \"daily\",\n \"method\": \"proportional\"\n },\n \"type\": \"shared\"\n },\n \"type\": \"upsert_arbitrary_rule\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributes` object.\",\n \"properties\": {\n \"costs_to_allocate\": {\n \"description\": \"The `attributes` `costs_to_allocate`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesCostsToAllocateItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"The `attributes` `enabled`.\",\n \"type\": \"boolean\"\n },\n \"order_id\": {\n \"description\": \"The `attributes` `order_id`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"provider\": {\n \"description\": \"The `attributes` `provider`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rejected\": {\n \"description\": \"The `attributes` `rejected`.\",\n \"type\": \"boolean\"\n },\n \"rule_name\": {\n \"description\": \"The `attributes` `rule_name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategy` object.\",\n \"properties\": {\n \"allocated_by\": {\n \"description\": \"The `strategy` `allocated_by`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItems` object.\",\n \"properties\": {\n \"allocated_tags\": {\n \"description\": \"The `items` `allocated_tags`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByItemsAllocatedTagsItems` object.\",\n \"properties\": {\n \"key\": {\n \"description\": \"The `items` `key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"percentage\": {\n \"description\": \"The `items` `percentage`. The numeric value format should be a 32bit float value.\",\n \"example\": 0.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"allocated_tags\",\n \"percentage\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"allocated_by_filters\": {\n \"description\": \"The `strategy` `allocated_by_filters`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyAllocatedByFiltersItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"allocated_by_tag_keys\": {\n \"description\": \"The `strategy` `allocated_by_tag_keys`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"based_on_costs\": {\n \"description\": \"The `strategy` `based_on_costs`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyBasedOnCostsItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"based_on_timeseries\": {\n \"additionalProperties\": {},\n \"description\": \"The `strategy` `based_on_timeseries`.\",\n \"type\": \"object\"\n },\n \"evaluate_grouped_by_filters\": {\n \"description\": \"The `strategy` `evaluate_grouped_by_filters`.\",\n \"items\": {\n \"description\": \"The definition of `ArbitraryCostUpsertRequestDataAttributesStrategyEvaluateGroupedByFiltersItems` object.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"The `items` `condition`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tag\": {\n \"description\": \"The `items` `tag`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `items` `value`.\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The `items` `values`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"condition\",\n \"tag\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"evaluate_grouped_by_tag_keys\": {\n \"description\": \"The `strategy` `evaluate_grouped_by_tag_keys`.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"granularity\": {\n \"description\": \"The `strategy` `granularity`.\",\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"The `strategy` `method`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The `attributes` `type`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"costs_to_allocate\",\n \"provider\",\n \"rule_name\",\n \"strategy\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `ArbitraryCostUpsertRequestData` `id`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"upsert_arbitrary_rule\",\n \"description\": \"Upsert arbitrary rule resource type.\",\n \"enum\": [\n \"upsert_arbitrary_rule\"\n ],\n \"example\": \"upsert_arbitrary_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"UPSERT_ARBITRARY_RULE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCustomFramework.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCustomFramework.json new file mode 100644 index 00000000..8116d0ee --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateCustomFramework.json @@ -0,0 +1,414 @@ +{ + "name": "UpdateCustomFramework", + "fully_qualified_name": "DatadogApi.UpdateCustomFramework@0.1.0", + "description": "Update an existing custom security management framework.\n\nUse this tool to make changes to an existing custom framework within Datadog's cloud security management. Invoke this when you need to update framework details identified by a specific handle and version.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "framework_handle", + "required": true, + "description": "The unique identifier for the framework to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework handle" + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle" + }, + { + "name": "framework_version", + "required": true, + "description": "Specifies the version of the framework to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework version" + }, + "inferrable": true, + "http_endpoint_parameter_name": "version" + }, + { + "name": "framework_data", + "required": true, + "description": "JSON object containing attributes and type of the custom framework. Must include `description`, `handle`, `icon_url`, `name`, `requirements`, and `version`. The `type` must be `custom_framework`.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Framework Description" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Handle" + }, + "icon_url": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Icon URL" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Name" + }, + "requirements": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "controls": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Control Name." + }, + "rules_id": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule IDs." + } + }, + "description": "Requirement Controls." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Requirement Name." + } + }, + "description": "Framework Requirements" + }, + "version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Version" + } + }, + "inner_properties": null, + "description": "Framework Data Attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_framework" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value must be `custom_framework`." + } + }, + "inner_properties": null, + "description": "Contains type and attributes for custom frameworks." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCustomFramework'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cloud_security_management/custom_frameworks/{handle}/{version}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "handle", + "tool_parameter_name": "framework_handle", + "description": "The framework handle", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework handle" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "version", + "tool_parameter_name": "framework_version", + "description": "The framework version", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The framework version" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "framework_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Framework Description" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Handle" + }, + "icon_url": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Icon URL" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Name" + }, + "requirements": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "controls": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Control Name." + }, + "rules_id": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rule IDs." + } + }, + "description": "Requirement Controls." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Requirement Name." + } + }, + "description": "Framework Requirements" + }, + "version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Framework Version" + } + }, + "inner_properties": null, + "description": "Framework Data Attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_framework" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value must be `custom_framework`." + } + }, + "inner_properties": null, + "description": "Contains type and attributes for custom frameworks." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object to update a custom framework.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Contains type and attributes for custom frameworks.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Framework Data Attributes.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Framework Description\",\n \"type\": \"string\"\n },\n \"handle\": {\n \"description\": \"Framework Handle\",\n \"example\": \"sec2\",\n \"type\": \"string\"\n },\n \"icon_url\": {\n \"description\": \"Framework Icon URL\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Framework Name\",\n \"example\": \"security-framework\",\n \"type\": \"string\"\n },\n \"requirements\": {\n \"description\": \"Framework Requirements\",\n \"items\": {\n \"description\": \"Framework Requirement.\",\n \"properties\": {\n \"controls\": {\n \"description\": \"Requirement Controls.\",\n \"items\": {\n \"description\": \"Framework Control.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Control Name.\",\n \"example\": \"A1.2\",\n \"type\": \"string\"\n },\n \"rules_id\": {\n \"description\": \"Rule IDs.\",\n \"example\": [\n \"[\\\"def-000-abc\\\"]\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"rules_id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Requirement Name.\",\n \"example\": \"criteria\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"controls\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"version\": {\n \"description\": \"Framework Version\",\n \"example\": \"2\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"handle\",\n \"version\",\n \"name\",\n \"requirements\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"custom_framework\",\n \"description\": \"The type of the resource. The value must be `custom_framework`.\",\n \"enum\": [\n \"custom_framework\"\n ],\n \"example\": \"custom_framework\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_FRAMEWORK\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDashboardListItems.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDashboardListItems.json new file mode 100644 index 00000000..6e53805d --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDashboardListItems.json @@ -0,0 +1,223 @@ +{ + "name": "UpdateDashboardListItems", + "fully_qualified_name": "DatadogApi.UpdateDashboardListItems@0.1.0", + "description": "Update dashboards in an existing dashboard list.\n\nUse this tool to update the dashboards contained in a specific dashboard list within Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "dashboard_list_identifier", + "required": true, + "description": "ID of the dashboard list to update with new items.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to update items from." + }, + "inferrable": true, + "http_endpoint_parameter_name": "dashboard_list_id" + }, + { + "name": "new_dashboards", + "required": true, + "description": "JSON object containing a list of dashboards with their IDs and types to update the dashboard list. Each dashboard should have an 'id' and a 'type' field.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "dashboards": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the dashboard." + } + }, + "description": "List of dashboards to update the dashboard list to." + } + }, + "inner_properties": null, + "description": "New dashboards of the dashboard list." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateDashboardListItems'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/dashboard/lists/manual/{dashboard_list_id}/dashboards", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "dashboard_list_id", + "tool_parameter_name": "dashboard_list_identifier", + "description": "ID of the dashboard list to update items from.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard list to update items from." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_dashboards", + "description": "New dashboards of the dashboard list.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "dashboards": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the dashboard." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_timeboard", + "custom_screenboard", + "integration_screenboard", + "integration_timeboard", + "host_timeboard" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the dashboard." + } + }, + "description": "List of dashboards to update the dashboard list to." + } + }, + "inner_properties": null, + "description": "New dashboards of the dashboard list." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request containing the list of dashboards to update to.\",\n \"properties\": {\n \"dashboards\": {\n \"description\": \"List of dashboards to update the dashboard list to.\",\n \"items\": {\n \"description\": \"A dashboard within a list.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the dashboard.\",\n \"example\": \"q5j-nti-fv6\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the dashboard.\",\n \"enum\": [\n \"custom_timeboard\",\n \"custom_screenboard\",\n \"integration_screenboard\",\n \"integration_timeboard\",\n \"host_timeboard\"\n ],\n \"example\": \"host_timeboard\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_TIMEBOARD\",\n \"CUSTOM_SCREENBOARD\",\n \"INTEGRATION_SCREENBOARD\",\n \"INTEGRATION_TIMEBOARD\",\n \"HOST_TIMEBOARD\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New dashboards of the dashboard list.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogApiKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogApiKey.json new file mode 100644 index 00000000..a50f1d18 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogApiKey.json @@ -0,0 +1,295 @@ +{ + "name": "UpdateDatadogApiKey", + "fully_qualified_name": "DatadogApi.UpdateDatadogApiKey@0.1.0", + "description": "Update an API key in Datadog.\n\nThis tool updates an existing API key in Datadog. It should be called when you need to modify the details of an API key for access permissions or other configurations within the Datadog platform.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "api_key_id", + "required": true, + "description": "The unique identifier for the API key to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the API key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "api_key_id" + }, + { + "name": "api_key_name", + "required": true, + "description": "The new name for the API key to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the API key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "key_id", + "required": true, + "description": "ID of the API key to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the API key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "api_keys_resource_type", + "required": true, + "description": "Specifies the resource type for API keys. Must be 'api_keys'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "api_keys" + ], + "properties": null, + "inner_properties": null, + "description": "API Keys resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "api_key_category", + "required": false, + "description": "The category of the API key for the update operation.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyUpdateAttributes category." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.category" + }, + { + "name": "enable_remote_config_read", + "required": false, + "description": "Enable remote config read for the API key. Use true to enable, false to disable.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyUpdateAttributes remote_config_read_enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.remote_config_read_enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateAPIKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/api_keys/{api_key_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "api_key_id", + "tool_parameter_name": "api_key_id", + "description": "The ID of the API key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the API key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.category", + "tool_parameter_name": "api_key_category", + "description": "The APIKeyUpdateAttributes category.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyUpdateAttributes category." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "api_key_name", + "description": "Name of the API key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the API key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.remote_config_read_enabled", + "tool_parameter_name": "enable_remote_config_read", + "description": "The APIKeyUpdateAttributes remote_config_read_enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The APIKeyUpdateAttributes remote_config_read_enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "key_id", + "description": "ID of the API key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the API key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "api_keys_resource_type", + "description": "API Keys resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "api_keys" + ], + "properties": null, + "inner_properties": null, + "description": "API Keys resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "api_keys", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to update an API key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object used to update an API key.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes used to update an API Key.\",\n \"properties\": {\n \"category\": {\n \"description\": \"The APIKeyUpdateAttributes category.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the API key.\",\n \"example\": \"API Key for submitting metrics\",\n \"type\": \"string\"\n },\n \"remote_config_read_enabled\": {\n \"description\": \"The APIKeyUpdateAttributes remote_config_read_enabled.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the API key.\",\n \"example\": \"00112233-4455-6677-8899-aabbccddeeff\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"api_keys\",\n \"description\": \"API Keys resource type.\",\n \"enum\": [\n \"api_keys\"\n ],\n \"example\": \"api_keys\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"API_KEYS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogAppKey.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogAppKey.json new file mode 100644 index 00000000..d5e69bdb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogAppKey.json @@ -0,0 +1,262 @@ +{ + "name": "UpdateDatadogAppKey", + "fully_qualified_name": "DatadogApi.UpdateDatadogAppKey@0.1.0", + "description": "Edit a Datadog application key by ID.\n\nUse this tool to update details of a specific Datadog application key by providing its ID. Useful for modifying configurations or permissions of the application key.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "application_key_id", + "required": true, + "description": "The unique identifier for the Datadog application key that needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_key_id" + }, + { + "name": "app_key_id", + "required": true, + "description": "The unique ID of the Datadog application key to be edited.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "application_keys_resource_type", + "required": true, + "description": "Fixed value for the resource type, which should always be 'application_keys'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "application_key_name", + "required": false, + "description": "Name of the application key to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "application_key_scopes", + "required": false, + "description": "Array of scopes to grant the application key. Each scope is a string specifying a permission level.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.scopes" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateApplicationKey'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/application_keys/{app_key_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "app_key_id", + "tool_parameter_name": "application_key_id", + "description": "The ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the application key." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "application_key_name", + "description": "Name of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.scopes", + "tool_parameter_name": "application_key_scopes", + "description": "Array of scopes to grant the application key.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Array of scopes to grant the application key." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "app_key_id", + "description": "ID of the application key.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the application key." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "application_keys_resource_type", + "description": "Application Keys resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "application_keys" + ], + "properties": null, + "inner_properties": null, + "description": "Application Keys resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "application_keys", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request used to update an application key.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object used to update an application key.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes used to update an application Key.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the application key.\",\n \"example\": \"Application Key for managing dashboards\",\n \"type\": \"string\"\n },\n \"scopes\": {\n \"description\": \"Array of scopes to grant the application key.\",\n \"example\": [\n \"dashboards_read\",\n \"dashboards_write\",\n \"dashboards_public_share\"\n ],\n \"items\": {\n \"description\": \"Name of scope.\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the application key.\",\n \"example\": \"00112233-4455-6677-8899-aabbccddeeff\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"application_keys\",\n \"description\": \"Application Keys resource type.\",\n \"enum\": [\n \"application_keys\"\n ],\n \"example\": \"application_keys\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"APPLICATION_KEYS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogUser.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogUser.json new file mode 100644 index 00000000..beed185e --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatadogUser.json @@ -0,0 +1,295 @@ +{ + "name": "UpdateDatadogUser", + "fully_qualified_name": "DatadogApi.UpdateDatadogUser@0.1.0", + "description": "Update a user's information in Datadog.\n\nUse this tool to edit the details of a user in Datadog. It requires an admin user's application key. Ideal for managing user access or updating user profiles as needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "user_id", + "required": true, + "description": "The unique identifier for the user to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "The unique ID of the user to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "user_resource_type", + "required": true, + "description": "Specifies the resource type for the user. Must be set to 'users'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "user_email", + "required": false, + "description": "The email address of the user to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.email" + }, + { + "name": "user_name", + "required": false, + "description": "The name of the user to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the user." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "disable_user", + "required": false, + "description": "Boolean value to set if the user is disabled (true) or enabled (false).", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the user is enabled or disabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.disabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateUser'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/users/{user_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "user_id", + "tool_parameter_name": "user_id", + "description": "The ID of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the user." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.disabled", + "tool_parameter_name": "disable_user", + "description": "If the user is enabled or disabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the user is enabled or disabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.email", + "tool_parameter_name": "user_email", + "description": "The email of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The email of the user." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "user_name", + "description": "The name of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the user." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "user_identifier", + "description": "ID of the user.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the user." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "user_resource_type", + "description": "Users resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "users", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update a user.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object to update a user.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the edited user.\",\n \"properties\": {\n \"disabled\": {\n \"description\": \"If the user is enabled or disabled.\",\n \"type\": \"boolean\"\n },\n \"email\": {\n \"description\": \"The email of the user.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the user.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the user.\",\n \"example\": \"00000000-0000-feed-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatastoreAttributes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatastoreAttributes.json new file mode 100644 index 00000000..fb1bdfdc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatastoreAttributes.json @@ -0,0 +1,262 @@ +{ + "name": "UpdateDatastoreAttributes", + "fully_qualified_name": "DatadogApi.UpdateDatastoreAttributes@0.1.0", + "description": "Update attributes of an existing datastore in Datadog.\n\nUse this tool to update details of an existing datastore in Datadog by specifying its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_unique_identifier", + "required": true, + "description": "The unique identifier of the datastore to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + }, + { + "name": "datastore_description", + "required": false, + "description": "A human-readable description for the datastore. Use this to provide additional information or context about the datastore.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description about the datastore." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "datastore_display_name", + "required": false, + "description": "The display name of the datastore to be updated. Provide a concise, human-readable name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The display name of the datastore." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "datastore_update_id", + "required": false, + "description": "The unique identifier for the datastore that needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to update." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_type_for_datastores", + "required": false, + "description": "Specifies the resource type for datastores. Must be 'datastores'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "datastores" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastores." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateDatastore'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "datastore_id", + "tool_parameter_name": "datastore_unique_identifier", + "description": "The unique identifier of the datastore to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "datastore_description", + "description": "A human-readable description about the datastore.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A human-readable description about the datastore." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "datastore_display_name", + "description": "The display name of the datastore.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The display name of the datastore." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "datastore_update_id", + "description": "The unique identifier of the datastore to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to update." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type_for_datastores", + "description": "The resource type for datastores.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "datastores" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastores." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "datastores", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to update a datastore's configuration such as its name or description.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data wrapper containing the datastore identifier and the attributes to update.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes that can be updated on a datastore.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A human-readable description about the datastore.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The display name of the datastore.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the datastore to update.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"datastores\",\n \"description\": \"The resource type for datastores.\",\n \"enum\": [\n \"datastores\"\n ],\n \"example\": \"datastores\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATASTORES\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatastoreItem.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatastoreItem.json new file mode 100644 index 00000000..08e3fc22 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDatastoreItem.json @@ -0,0 +1,299 @@ +{ + "name": "UpdateDatastoreItem", + "fully_qualified_name": "DatadogApi.UpdateDatastoreItem@0.1.0", + "description": "Partially update an item in a datastore by its key.\n\nUse this tool to modify an existing item in a datastore by specifying its key. It's ideal for making incremental changes without altering the entire record, leveraging Datadog's API.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "datastore_identifier", + "required": true, + "description": "The unique identifier for the datastore that contains the item to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "inferrable": true, + "http_endpoint_parameter_name": "datastore_id" + }, + { + "name": "update_details", + "required": true, + "description": "JSON object containing the item key, item identifier, and the changes to apply. Include key-value pairs to update.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the item being updated." + }, + "item_changes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ops_set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set operation that contains key-value pairs to set on the datastore item." + } + }, + "inner_properties": null, + "description": "Changes to apply to a datastore item using set operations." + }, + "item_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The primary key that identifies the item to update. Cannot exceed 256 characters." + } + }, + "inner_properties": null, + "description": "Attributes for updating a datastore item, including the item key and changes to apply." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore item." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastore items." + } + }, + "inner_properties": null, + "description": "Data wrapper containing the item identifier and the changes to apply during the update operation." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateDatastoreItem'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/actions-datastores/{datastore_id}/items", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "datastore_id", + "tool_parameter_name": "datastore_identifier", + "description": "The unique identifier of the datastore to retrieve.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore to retrieve." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the item being updated." + }, + "item_changes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "ops_set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set operation that contains key-value pairs to set on the datastore item." + } + }, + "inner_properties": null, + "description": "Changes to apply to a datastore item using set operations." + }, + "item_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The primary key that identifies the item to update. Cannot exceed 256 characters." + } + }, + "inner_properties": null, + "description": "Attributes for updating a datastore item, including the item key and changes to apply." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the datastore item." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "items" + ], + "properties": null, + "inner_properties": null, + "description": "The resource type for datastore items." + } + }, + "inner_properties": null, + "description": "Data wrapper containing the item identifier and the changes to apply during the update operation." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to update specific fields on an existing datastore item.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data wrapper containing the item identifier and the changes to apply during the update operation.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for updating a datastore item, including the item key and changes to apply.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the item being updated.\",\n \"type\": \"string\"\n },\n \"item_changes\": {\n \"description\": \"Changes to apply to a datastore item using set operations.\",\n \"properties\": {\n \"ops_set\": {\n \"additionalProperties\": {},\n \"description\": \"Set operation that contains key-value pairs to set on the datastore item.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"item_key\": {\n \"description\": \"The primary key that identifies the item to update. Cannot exceed 256 characters.\",\n \"example\": \"\",\n \"maxLength\": 256,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"item_changes\",\n \"item_key\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the datastore item.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"items\",\n \"description\": \"The resource type for datastore items.\",\n \"enum\": [\n \"items\"\n ],\n \"example\": \"items\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ITEMS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDeviceTags.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDeviceTags.json new file mode 100644 index 00000000..0ff0da9c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDeviceTags.json @@ -0,0 +1,225 @@ +{ + "name": "UpdateDeviceTags", + "fully_qualified_name": "DatadogApi.UpdateDeviceTags@0.1.0", + "description": "Update the tags for a specified device.\n\nUse this tool to modify the tags associated with a device in Datadog. It's called when there's a need to update or change the tags for device management. The tool confirms the modifications made to the device tags.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "device_identifier", + "required": true, + "description": "The ID of the device for which tags are being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the device to update tags for." + }, + "inferrable": true, + "http_endpoint_parameter_name": "device_id" + }, + { + "name": "device_tags", + "required": false, + "description": "A list of tags to update for the device. Each tag should be a string.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of tags" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + }, + { + "name": "device_id_for_tags", + "required": false, + "description": "The ID of the device for which the tags will be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The device ID" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_type", + "required": false, + "description": "The type of resource, always set to 'tags'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be tags." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateDeviceUserTags'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ndm/tags/devices/{device_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "device_id", + "tool_parameter_name": "device_identifier", + "description": "The id of the device to update tags for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the device to update tags for." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "device_tags", + "description": "The list of tags", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of tags" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "device_id_for_tags", + "description": "The device ID", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The device ID" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource. The value should always be tags.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be tags." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"List tags response.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The list tags response data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of ListTagsResponseDataAttributes object.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"The list of tags\",\n \"example\": [\n \"tag:test\",\n \"tag:testbis\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The device ID\",\n \"example\": \"example:1.2.3.4\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the resource. The value should always be tags.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDomainAllowlist.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDomainAllowlist.json new file mode 100644 index 00000000..096e7b08 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDomainAllowlist.json @@ -0,0 +1,229 @@ +{ + "name": "UpdateDomainAllowlist", + "fully_qualified_name": "DatadogApi.UpdateDomainAllowlist@0.1.0", + "description": "Update the organization's domain allowlist to control domain access.\n\n", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "email_domain_allowlist_type", + "required": true, + "description": "Type of email domain allowlist. Valid value: 'domain_allowlist'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "domain_allowlist" + ], + "properties": null, + "inner_properties": null, + "description": "Email domain allowlist allowlist type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "allowed_domains_list", + "required": false, + "description": "A list of domains to include in the organization's email domain allowlist.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of domains in the email domain allowlist." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.domains" + }, + { + "name": "organization_identifier", + "required": false, + "description": "The unique identifier for the organization to update the domain allowlist.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "enable_email_domain_allowlist", + "required": false, + "description": "Set to true to enable the email domain allowlist for the organization.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the email domain allowlist is enabled for the org." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'PatchDomainAllowlist'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/domain_allowlist", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.domains", + "tool_parameter_name": "allowed_domains_list", + "description": "The list of domains in the email domain allowlist.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of domains in the email domain allowlist." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "enable_email_domain_allowlist", + "description": "Whether the email domain allowlist is enabled for the org.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the email domain allowlist is enabled for the org." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "organization_identifier", + "description": "The unique identifier of the org.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "email_domain_allowlist_type", + "description": "Email domain allowlist allowlist type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "domain_allowlist" + ], + "properties": null, + "inner_properties": null, + "description": "Email domain allowlist allowlist type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "domain_allowlist", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request containing the desired email domain allowlist configuration.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The email domain allowlist for an org.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The details of the email domain allowlist.\",\n \"properties\": {\n \"domains\": {\n \"description\": \"The list of domains in the email domain allowlist.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"Whether the email domain allowlist is enabled for the org.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the org.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"domain_allowlist\",\n \"description\": \"Email domain allowlist allowlist type.\",\n \"enum\": [\n \"domain_allowlist\"\n ],\n \"example\": \"domain_allowlist\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DOMAIN_ALLOWLIST\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDowntime.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDowntime.json new file mode 100644 index 00000000..a8bb6720 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateDowntime.json @@ -0,0 +1,361 @@ +{ + "name": "UpdateDowntime", + "fully_qualified_name": "DatadogApi.UpdateDowntime@0.1.0", + "description": "Update downtime by its ID in Datadog.\n\nUse this tool to modify an existing downtime configuration in Datadog by providing the downtime ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "downtime_id", + "required": true, + "description": "The unique identifier of the downtime to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the downtime to update." + }, + "inferrable": true, + "http_endpoint_parameter_name": "downtime_id" + }, + { + "name": "update_downtime_request_body", + "required": true, + "description": "JSON object including details like attributes, ID, and type for updating a downtime in Datadog. Ensure to follow the expected format specified in the API.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "display_timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone in which to display the downtime's start and end times in Datadog applications. This is not used\nas an offset for scheduling." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A message to include with notifications for this downtime. Email notifications can be sent to specific users\nby using the same `@username` notation as events." + }, + "monitor_identifier": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Monitor identifier for the downtime." + }, + "mute_first_recovery_notification": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the first recovery notification during a downtime should be muted." + }, + "notify_end_states": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "States that will trigger a monitor notification when the `notify_end_types` action occurs." + }, + "notify_end_types": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state." + }, + "schedule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Schedule for the downtime." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/)." + } + }, + "inner_properties": null, + "description": "Attributes of the downtime to update." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of this downtime." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "downtime" + ], + "properties": null, + "inner_properties": null, + "description": "Downtime resource type." + } + }, + "inner_properties": null, + "description": "Object to update a downtime." + } + }, + "inner_properties": null, + "description": "Update a downtime request body." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateDowntime'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/downtime/{downtime_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "downtime_id", + "tool_parameter_name": "downtime_id", + "description": "ID of the downtime to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the downtime to update." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_downtime_request_body", + "description": "Update a downtime request body.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "display_timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The timezone in which to display the downtime's start and end times in Datadog applications. This is not used\nas an offset for scheduling." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A message to include with notifications for this downtime. Email notifications can be sent to specific users\nby using the same `@username` notation as events." + }, + "monitor_identifier": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Monitor identifier for the downtime." + }, + "mute_first_recovery_notification": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If the first recovery notification during a downtime should be muted." + }, + "notify_end_states": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "States that will trigger a monitor notification when the `notify_end_types` action occurs." + }, + "notify_end_types": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state." + }, + "schedule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Schedule for the downtime." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/)." + } + }, + "inner_properties": null, + "description": "Attributes of the downtime to update." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of this downtime." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "downtime" + ], + "properties": null, + "inner_properties": null, + "description": "Downtime resource type." + } + }, + "inner_properties": null, + "description": "Object to update a downtime." + } + }, + "inner_properties": null, + "description": "Update a downtime request body." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for editing a downtime.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object to update a downtime.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the downtime to update.\",\n \"properties\": {\n \"display_timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone in which to display the downtime's start and end times in Datadog applications. This is not used\\nas an offset for scheduling.\",\n \"example\": \"America/New_York\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"A message to include with notifications for this downtime. Email notifications can be sent to specific users\\nby using the same `@username` notation as events.\",\n \"example\": \"Message about the downtime\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"monitor_identifier\": {\n \"description\": \"Monitor identifier for the downtime.\",\n \"oneOf\": [\n {\n \"additionalProperties\": {},\n \"description\": \"Object of the monitor identifier.\",\n \"properties\": {\n \"monitor_id\": {\n \"description\": \"ID of the monitor to prevent notifications.\",\n \"example\": 123,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"monitor_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": {},\n \"description\": \"Object of the monitor tags.\",\n \"properties\": {\n \"monitor_tags\": {\n \"description\": \"A list of monitor tags. For example, tags that are applied directly to monitors,\\nnot tags that are used in monitor queries (which are filtered by the scope parameter), to which the downtime applies.\\nThe resulting downtime applies to monitors that match **all** provided monitor tags. Setting `monitor_tags`\\nto `[*]` configures the downtime to mute all monitors for the given scope.\",\n \"example\": [\n \"service:postgres\",\n \"team:frontend\"\n ],\n \"items\": {\n \"description\": \"A list of monitor tags.\",\n \"example\": \"service:postgres\",\n \"type\": \"string\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"monitor_tags\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"mute_first_recovery_notification\": {\n \"description\": \"If the first recovery notification during a downtime should be muted.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"notify_end_states\": {\n \"description\": \"States that will trigger a monitor notification when the `notify_end_types` action occurs.\",\n \"example\": [\n \"alert\",\n \"warn\"\n ],\n \"items\": {\n \"description\": \"State that will trigger a monitor notification when the `notify_end_types` action occurs.\",\n \"enum\": [\n \"alert\",\n \"no data\",\n \"warn\"\n ],\n \"example\": \"alert\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALERT\",\n \"NO_DATA\",\n \"WARN\"\n ]\n },\n \"type\": \"array\"\n },\n \"notify_end_types\": {\n \"description\": \"Actions that will trigger a monitor notification if the downtime is in the `notify_end_types` state.\",\n \"example\": [\n \"canceled\",\n \"expired\"\n ],\n \"items\": {\n \"description\": \"Action that will trigger a monitor notification if the downtime is in the `notify_end_types` state.\",\n \"enum\": [\n \"canceled\",\n \"expired\"\n ],\n \"example\": \"canceled\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CANCELED\",\n \"EXPIRED\"\n ]\n },\n \"type\": \"array\"\n },\n \"schedule\": {\n \"description\": \"Schedule for the downtime.\",\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"A recurring downtime schedule definition.\",\n \"properties\": {\n \"recurrences\": {\n \"description\": \"A list of downtime recurrences.\",\n \"items\": {\n \"additionalProperties\": {},\n \"description\": \"An object defining the recurrence of the downtime.\",\n \"properties\": {\n \"duration\": {\n \"description\": \"The length of the downtime. Must begin with an integer and end with one of 'm', 'h', d', or 'w'.\",\n \"example\": \"123d\",\n \"type\": \"string\"\n },\n \"rrule\": {\n \"description\": \"The `RRULE` standard for defining recurring events.\\nFor example, to have a recurring event on the first day of each month, set the type to `rrule` and set the `FREQ` to `MONTHLY` and `BYMONTHDAY` to `1`.\\nMost common `rrule` options from the [iCalendar Spec](https://tools.ietf.org/html/rfc5545) are supported.\\n\\n**Note**: Attributes specifying the duration in `RRULE` are not supported (for example, `DTSTART`, `DTEND`, `DURATION`).\\nMore examples available in this [downtime guide](https://docs.datadoghq.com/monitors/guide/suppress-alert-with-downtimes/?tab=api).\",\n \"example\": \"FREQ=MONTHLY;BYSETPOS=3;BYDAY=WE;INTERVAL=1\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"ISO-8601 Datetime to start the downtime. Must not include a UTC offset. If not provided, the\\ndowntime starts the moment it is created.\",\n \"example\": \"2020-01-02T03:04\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"duration\",\n \"rrule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"timezone\": {\n \"default\": \"UTC\",\n \"description\": \"The timezone in which to schedule the downtime.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"A one-time downtime definition.\",\n \"properties\": {\n \"end\": {\n \"description\": \"ISO-8601 Datetime to end the downtime. Must include a UTC offset of zero. If not provided, the\\ndowntime continues forever.\",\n \"example\": \"2020-01-02T03:04:00+00:00\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"ISO-8601 Datetime to start the downtime. Must include a UTC offset of zero. If not provided, the\\ndowntime starts the moment it is created.\",\n \"example\": \"2020-01-02T03:04:00+00:00\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n ]\n },\n \"scope\": {\n \"description\": \"The scope to which the downtime applies. Must follow the [common search syntax](https://docs.datadoghq.com/logs/explorer/search_syntax/).\",\n \"example\": \"env:(staging OR prod) AND datacenter:us-east-1\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of this downtime.\",\n \"example\": \"00000000-0000-1234-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"downtime\",\n \"description\": \"Downtime resource type.\",\n \"enum\": [\n \"downtime\"\n ],\n \"example\": \"downtime\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DOWNTIME\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Update a downtime request body.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateFastlyAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateFastlyAccount.json new file mode 100644 index 00000000..88b76fa4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateFastlyAccount.json @@ -0,0 +1,229 @@ +{ + "name": "UpdateFastlyAccount", + "fully_qualified_name": "DatadogApi.UpdateFastlyAccount@0.1.0", + "description": "Updates a Fastly account via Datadog integration.\n\nCall this tool to update details of a Fastly account through the Datadog API. Useful for managing Fastly integration settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "The unique identifier for the Fastly account to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "fastly_api_key", + "required": false, + "description": "The API key for the Fastly account to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Fastly account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.api_key" + }, + { + "name": "fastly_account_name", + "required": false, + "description": "The name of the Fastly account to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Fastly account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "json_api_type", + "required": false, + "description": "Specifies the type for the Fastly account API. Must be 'fastly-accounts'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-accounts`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateFastlyAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.api_key", + "tool_parameter_name": "fastly_api_key", + "description": "The API key of the Fastly account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Fastly account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "fastly_account_name", + "description": "The name of the Fastly account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the Fastly account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "json_api_type", + "description": "The JSON:API type for this API. Should always be `fastly-accounts`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-accounts`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "fastly-accounts", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema when updating a Fastly account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for updating a Fastly account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for updating a Fastly account.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key of the Fastly account.\",\n \"example\": \"ABCDEFG123\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the Fastly account.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fastly-accounts\",\n \"description\": \"The JSON:API type for this API. Should always be `fastly-accounts`.\",\n \"enum\": [\n \"fastly-accounts\"\n ],\n \"example\": \"fastly-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLY_ACCOUNTS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateFastlyService.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateFastlyService.json new file mode 100644 index 00000000..41447421 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateFastlyService.json @@ -0,0 +1,262 @@ +{ + "name": "UpdateFastlyService", + "fully_qualified_name": "DatadogApi.UpdateFastlyService@0.1.0", + "description": "Update a Fastly service for an account in Datadog.\n\nUse this tool to update specific details of a Fastly service associated with an account in Datadog. Useful for modifying service configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "fastly_account_id", + "required": true, + "description": "The unique ID of the Fastly account to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "fastly_service_id", + "required": true, + "description": "Provide the Fastly Service ID to specify which service to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Service ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "service_id" + }, + { + "name": "fastly_service_identifier", + "required": true, + "description": "The ID of the Fastly service to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Fastly service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "fastly_service_json_api_type", + "required": true, + "description": "The JSON:API type for this API, which should always be `fastly-services`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-services" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-services`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "fastly_service_tags", + "required": false, + "description": "A list of tags to update the Fastly service with. Each tag should be a string.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the Fastly service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tags" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateFastlyService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/fastly/accounts/{account_id}/services/{service_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "fastly_account_id", + "description": "Fastly Account id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "service_id", + "tool_parameter_name": "fastly_service_id", + "description": "Fastly Service ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fastly Service ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tags", + "tool_parameter_name": "fastly_service_tags", + "description": "A list of tags for the Fastly service.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tags for the Fastly service." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "fastly_service_identifier", + "description": "The ID of the Fastly service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Fastly service." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "fastly_service_json_api_type", + "description": "The JSON:API type for this API. Should always be `fastly-services`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "fastly-services" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for this API. Should always be `fastly-services`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "fastly-services", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema for Fastly service requests.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for Fastly service requests.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for Fastly service requests.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of tags for the Fastly service.\",\n \"example\": [\n \"myTag\",\n \"myTag2:myValue\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the Fastly service.\",\n \"example\": \"abc123\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"fastly-services\",\n \"description\": \"The JSON:API type for this API. Should always be `fastly-services`.\",\n \"enum\": [\n \"fastly-services\"\n ],\n \"example\": \"fastly-services\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FASTLY_SERVICES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpScanOptions.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpScanOptions.json new file mode 100644 index 00000000..5140a1b1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpScanOptions.json @@ -0,0 +1,262 @@ +{ + "name": "UpdateGcpScanOptions", + "fully_qualified_name": "DatadogApi.UpdateGcpScanOptions@0.1.0", + "description": "Update scan options for a GCP project in Datadog.\n\nUse this tool to update the agentless scanning options for an activated Google Cloud Platform project in Datadog. It should be called when changes to the existing scan configuration are needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "gcp_project_id", + "required": true, + "description": "The Google Cloud Platform project ID to update scan options for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "project_id" + }, + { + "name": "google_cloud_project_id", + "required": false, + "description": "The ID of the GCP project to update scan options for, used as an identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "gcp_scan_options_resource_type", + "required": false, + "description": "Specifies the GCP scan options resource type, typically set to 'gcp_scan_options'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "GCP scan options resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "enable_container_vulnerability_scanning", + "required": false, + "description": "Enable (True) or disable (False) scanning for vulnerabilities in containers.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_containers_os" + }, + { + "name": "enable_host_vulnerability_scanning", + "required": false, + "description": "Indicate if scanning for vulnerabilities in host operating systems is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.vuln_host_os" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateGcpScanOptions'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/agentless_scanning/accounts/gcp/{project_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "project_id", + "tool_parameter_name": "gcp_project_id", + "description": "The GCP project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_containers_os", + "tool_parameter_name": "enable_container_vulnerability_scanning", + "description": "Indicates if scanning for vulnerabilities in containers is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in containers is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.vuln_host_os", + "tool_parameter_name": "enable_host_vulnerability_scanning", + "description": "Indicates if scanning for vulnerabilities in hosts is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates if scanning for vulnerabilities in hosts is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "google_cloud_project_id", + "description": "The GCP project ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The GCP project ID." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "gcp_scan_options_resource_type", + "description": "GCP scan options resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_scan_options" + ], + "properties": null, + "inner_properties": null, + "description": "GCP scan options resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "gcp_scan_options", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object for updating GCP scan options.\",\n \"example\": {\n \"data\": {\n \"id\": \"company-project-id\",\n \"type\": \"gcp_scan_options\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for updating the scan options of a single GCP project.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for updating GCP scan options configuration.\",\n \"properties\": {\n \"vuln_containers_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in containers is enabled.\",\n \"type\": \"boolean\"\n },\n \"vuln_host_os\": {\n \"description\": \"Indicates if scanning for vulnerabilities in hosts is enabled.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The GCP project ID.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"gcp_scan_options\",\n \"description\": \"GCP scan options resource type.\",\n \"enum\": [\n \"gcp_scan_options\"\n ],\n \"example\": \"gcp_scan_options\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP_SCAN_OPTIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the scan options.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpStsAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpStsAccount.json new file mode 100644 index 00000000..475a0fb1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpStsAccount.json @@ -0,0 +1,501 @@ +{ + "name": "UpdateGcpStsAccount", + "fully_qualified_name": "DatadogApi.UpdateGcpStsAccount@0.1.0", + "description": "Update an STS-enabled GCP service account configuration.\n\nCall this tool to modify the configuration of an existing STS-enabled Google Cloud Platform service account in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_account_id", + "required": true, + "description": "Unique ID of your GCP STS-enabled service account to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your GCP STS enabled service account's unique ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "service_account_details", + "required": true, + "description": "JSON object containing details and configurations for the GCP STS-enabled service account.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to be associated with GCP metrics and service checks from your account." + }, + "automute": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Silence monitors for expected GCE instance shutdowns." + }, + "client_email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your service account email address." + }, + "cloud_run_revision_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags.\nOnly Cloud Run revision resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=cloud_run_revision`" + }, + "host_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the VM instances that are pulled into Datadog by using tags.\nOnly VM instance resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=gce_instance`" + }, + "is_cspm_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true." + }, + "is_per_project_quota_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog applies the `X-Goog-User-Project` header, attributing Google Cloud billing and quota usage to the project being monitored rather than the default service account project." + }, + "is_resource_change_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resource change data in your Google Cloud environment." + }, + "is_security_command_center_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account." + }, + "metric_namespace_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "disabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When disabled, Datadog does not collect metrics that are related to this GCP metric namespace." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the GCP metric namespace." + } + }, + "description": "Configurations for GCP metric namespaces." + }, + "monitored_resource_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the monitored resources that are pulled into Datadog by using tags.\nOnly monitored resources that apply to specified filters are imported into Datadog." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloud_function", + "cloud_run_revision", + "gce_instance" + ], + "properties": null, + "inner_properties": null, + "description": "The GCP monitored resource type. Only a subset of resource types are supported." + } + }, + "description": "Configurations for GCP monitored resources." + }, + "resource_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resources in your GCP environment." + } + }, + "inner_properties": null, + "description": "Attributes associated with your service account." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your service account's unique ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_service_account" + ], + "properties": null, + "inner_properties": null, + "description": "The type of account." + } + }, + "inner_properties": null, + "description": "Data on your service account." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateGCPSTSAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/gcp/accounts/{account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "service_account_id", + "description": "Your GCP STS enabled service account's unique ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your GCP STS enabled service account's unique ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "service_account_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "account_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags to be associated with GCP metrics and service checks from your account." + }, + "automute": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Silence monitors for expected GCE instance shutdowns." + }, + "client_email": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your service account email address." + }, + "cloud_run_revision_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags.\nOnly Cloud Run revision resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=cloud_run_revision`" + }, + "host_filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the VM instances that are pulled into Datadog by using tags.\nOnly VM instance resources that apply to specified filters are imported into Datadog.\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=gce_instance`" + }, + "is_cspm_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true." + }, + "is_per_project_quota_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog applies the `X-Goog-User-Project` header, attributing Google Cloud billing and quota usage to the project being monitored rather than the default service account project." + }, + "is_resource_change_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resource change data in your Google Cloud environment." + }, + "is_security_command_center_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account." + }, + "metric_namespace_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "disabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When disabled, Datadog does not collect metrics that are related to this GCP metric namespace." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The id of the GCP metric namespace." + } + }, + "description": "Configurations for GCP metric namespaces." + }, + "monitored_resource_configs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of filters to limit the monitored resources that are pulled into Datadog by using tags.\nOnly monitored resources that apply to specified filters are imported into Datadog." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "cloud_function", + "cloud_run_revision", + "gce_instance" + ], + "properties": null, + "inner_properties": null, + "description": "The GCP monitored resource type. Only a subset of resource types are supported." + } + }, + "description": "Configurations for GCP monitored resources." + }, + "resource_collection_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When enabled, Datadog scans for all resources in your GCP environment." + } + }, + "inner_properties": null, + "description": "Attributes associated with your service account." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your service account's unique ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_service_account" + ], + "properties": null, + "inner_properties": null, + "description": "The type of account." + } + }, + "inner_properties": null, + "description": "Data on your service account." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Service account info.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data on your service account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes associated with your service account.\",\n \"properties\": {\n \"account_tags\": {\n \"description\": \"Tags to be associated with GCP metrics and service checks from your account.\",\n \"items\": {\n \"description\": \"Account Level Tag\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"automute\": {\n \"description\": \"Silence monitors for expected GCE instance shutdowns.\",\n \"type\": \"boolean\"\n },\n \"client_email\": {\n \"description\": \"Your service account email address.\",\n \"example\": \"datadog-service-account@test-project.iam.gserviceaccount.com\",\n \"type\": \"string\"\n },\n \"cloud_run_revision_filters\": {\n \"deprecated\": true,\n \"description\": \"List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags.\\nOnly Cloud Run revision resources that apply to specified filters are imported into Datadog.\\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=cloud_run_revision`\",\n \"example\": [\n \"$KEY:$VALUE\"\n ],\n \"items\": {\n \"description\": \"Cloud Run revision filters\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"host_filters\": {\n \"deprecated\": true,\n \"description\": \"List of filters to limit the VM instances that are pulled into Datadog by using tags.\\nOnly VM instance resources that apply to specified filters are imported into Datadog.\\n**Note:** This field is deprecated. Instead, use `monitored_resource_configs` with `type=gce_instance`\",\n \"example\": [\n \"$KEY:$VALUE\"\n ],\n \"items\": {\n \"description\": \"VM instance filters\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"is_cspm_enabled\": {\n \"description\": \"When enabled, Datadog will activate the Cloud Security Monitoring product for this service account. Note: This requires resource_collection_enabled to be set to true.\",\n \"type\": \"boolean\"\n },\n \"is_per_project_quota_enabled\": {\n \"default\": false,\n \"description\": \"When enabled, Datadog applies the `X-Goog-User-Project` header, attributing Google Cloud billing and quota usage to the project being monitored rather than the default service account project.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"is_resource_change_collection_enabled\": {\n \"default\": false,\n \"description\": \"When enabled, Datadog scans for all resource change data in your Google Cloud environment.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"is_security_command_center_enabled\": {\n \"default\": false,\n \"description\": \"When enabled, Datadog will attempt to collect Security Command Center Findings. Note: This requires additional permissions on the service account.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"metric_namespace_configs\": {\n \"description\": \"Configurations for GCP metric namespaces.\",\n \"example\": [\n {\n \"disabled\": true,\n \"id\": \"aiplatform\"\n }\n ],\n \"items\": {\n \"description\": \"Configuration for a GCP metric namespace.\",\n \"properties\": {\n \"disabled\": {\n \"default\": false,\n \"description\": \"When disabled, Datadog does not collect metrics that are related to this GCP metric namespace.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"The id of the GCP metric namespace.\",\n \"example\": \"aiplatform\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"monitored_resource_configs\": {\n \"description\": \"Configurations for GCP monitored resources.\",\n \"example\": [\n {\n \"filters\": [\n \"$KEY:$VALUE\"\n ],\n \"type\": \"gce_instance\"\n }\n ],\n \"items\": {\n \"description\": \"Configuration for a GCP monitored resource.\",\n \"properties\": {\n \"filters\": {\n \"description\": \"List of filters to limit the monitored resources that are pulled into Datadog by using tags.\\nOnly monitored resources that apply to specified filters are imported into Datadog.\",\n \"example\": [\n \"$KEY:$VALUE\"\n ],\n \"items\": {\n \"description\": \"A monitored resource filter\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The GCP monitored resource type. Only a subset of resource types are supported.\",\n \"enum\": [\n \"cloud_function\",\n \"cloud_run_revision\",\n \"gce_instance\"\n ],\n \"example\": \"gce_instance\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUD_FUNCTION\",\n \"CLOUD_RUN_REVISION\",\n \"GCE_INSTANCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"resource_collection_enabled\": {\n \"description\": \"When enabled, Datadog scans for all resources in your GCP environment.\",\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Your service account's unique ID.\",\n \"example\": \"d291291f-12c2-22g4-j290-123456678897\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"gcp_service_account\",\n \"description\": \"The type of account.\",\n \"enum\": [\n \"gcp_service_account\"\n ],\n \"example\": \"gcp_service_account\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP_SERVICE_ACCOUNT\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpUsageCostStatus.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpUsageCostStatus.json new file mode 100644 index 00000000..838a9186 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateGcpUsageCostStatus.json @@ -0,0 +1,196 @@ +{ + "name": "UpdateGcpUsageCostStatus", + "fully_qualified_name": "DatadogApi.UpdateGcpUsageCostStatus@0.1.0", + "description": "Update the status of a GCP Usage Cost config.\n\nThis tool updates the status of a Google Cloud Platform Usage Cost configuration in Datadog, setting it as active or archived. It should be called when you need to change the operational status of a specific GCP cost configuration based on the cloud account ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "cloud_account_id", + "required": true, + "description": "The ID of the Google Cloud account for which the cost configuration status needs to be updated.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "cloud_account_id" + }, + { + "name": "gcp_usage_cost_config_request_type", + "required": true, + "description": "Type of Google Cloud Usage Cost configuration patch request. Use 'gcp_uc_config_patch_request'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_uc_config_patch_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Google Cloud Usage Cost config patch request." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "cloud_cost_management_enabled", + "required": true, + "description": "Set to 'true' to enable the Cloud Cost Management account or 'false' to disable it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the Cloud Cost Management account is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.is_enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCostGCPUsageCostConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/gcp_uc_config/{cloud_account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "cloud_account_id", + "tool_parameter_name": "cloud_account_id", + "description": "Cloud Account id.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Cloud Account id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.is_enabled", + "tool_parameter_name": "cloud_cost_management_enabled", + "description": "Whether or not the Cloud Cost Management account is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the Cloud Cost Management account is enabled." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "gcp_usage_cost_config_request_type", + "description": "Type of Google Cloud Usage Cost config patch request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "gcp_uc_config_patch_request" + ], + "properties": null, + "inner_properties": null, + "description": "Type of Google Cloud Usage Cost config patch request." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "gcp_uc_config_patch_request", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Google Cloud Usage Cost config patch request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Google Cloud Usage Cost config patch data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for Google Cloud Usage Cost config patch request.\",\n \"properties\": {\n \"is_enabled\": {\n \"description\": \"Whether or not the Cloud Cost Management account is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"is_enabled\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"gcp_uc_config_patch_request\",\n \"description\": \"Type of Google Cloud Usage Cost config patch request.\",\n \"enum\": [\n \"gcp_uc_config_patch_request\"\n ],\n \"example\": \"gcp_uc_config_patch_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GCP_USAGE_COST_CONFIG_PATCH_REQUEST\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncident.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncident.json new file mode 100644 index 00000000..cf2146d4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncident.json @@ -0,0 +1,662 @@ +{ + "name": "UpdateIncident", + "fully_qualified_name": "DatadogApi.UpdateIncident@0.1.0", + "description": "Partially update an incident's details.\n\nUse this tool to update specific attributes of an existing incident in Datadog. Only the provided attributes will be modified.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) for the incident to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_payload", + "required": true, + "description": "JSON object containing the attributes and relationships to update an incident in Datadog, such as timestamps, impact details, and user relationships.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_impact_end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when customers were no longer impacted by the incident." + }, + "customer_impact_scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A summary of the impact customers experienced during the incident." + }, + "customer_impact_start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when customers began being impacted by the incident." + }, + "customer_impacted": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A flag indicating whether the incident caused customer impact." + }, + "detected": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident was detected." + }, + "fields": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A condensed view of the user-defined fields for which to update selections." + }, + "notification_handles": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notified handle." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The handle used for the notification. This includes an email address, Slack channel, or workflow." + } + }, + "description": "Notification handles that will be notified of the incident during update." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the incident, which summarizes what happened." + } + }, + "inner_properties": null, + "description": "The incident's attributes for an update request." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident's ID." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "commander_user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + }, + "integrations": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the integration metadata." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_integrations" + ], + "properties": null, + "inner_properties": null, + "description": "Integration metadata resource type." + } + }, + "description": "Integration metadata relationship array" + } + }, + "inner_properties": null, + "description": "A relationship reference for multiple integration metadata objects." + }, + "postmortem": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the postmortem." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_postmortems" + ], + "properties": null, + "inner_properties": null, + "description": "Incident postmortem resource type." + } + }, + "inner_properties": null, + "description": "The postmortem relationship data." + } + }, + "inner_properties": null, + "description": "A relationship reference for postmortems." + } + }, + "inner_properties": null, + "description": "The incident's relationships for an update request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incidents" + ], + "properties": null, + "inner_properties": null, + "description": "Incident resource type." + } + }, + "inner_properties": null, + "description": "Incident data for an update request." + } + }, + "inner_properties": null, + "description": "Incident Payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_related_objects", + "required": false, + "description": "List of related object types to include in the response, such as 'users', 'comments', etc.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIncident'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_related_objects", + "description": "Specifies which types of related objects should be included in the response.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies which types of related objects should be included in the response." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_payload", + "description": "Incident Payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "customer_impact_end": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when customers were no longer impacted by the incident." + }, + "customer_impact_scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A summary of the impact customers experienced during the incident." + }, + "customer_impact_start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when customers began being impacted by the incident." + }, + "customer_impacted": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A flag indicating whether the incident caused customer impact." + }, + "detected": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident was detected." + }, + "fields": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A condensed view of the user-defined fields for which to update selections." + }, + "notification_handles": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notified handle." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The handle used for the notification. This includes an email address, Slack channel, or workflow." + } + }, + "description": "Notification handles that will be notified of the incident during update." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the incident, which summarizes what happened." + } + }, + "inner_properties": null, + "description": "The incident's attributes for an update request." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident's ID." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "commander_user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + }, + "integrations": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the integration metadata." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_integrations" + ], + "properties": null, + "inner_properties": null, + "description": "Integration metadata resource type." + } + }, + "description": "Integration metadata relationship array" + } + }, + "inner_properties": null, + "description": "A relationship reference for multiple integration metadata objects." + }, + "postmortem": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the postmortem." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_postmortems" + ], + "properties": null, + "inner_properties": null, + "description": "Incident postmortem resource type." + } + }, + "inner_properties": null, + "description": "The postmortem relationship data." + } + }, + "inner_properties": null, + "description": "A relationship reference for postmortems." + } + }, + "inner_properties": null, + "description": "The incident's relationships for an update request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incidents" + ], + "properties": null, + "inner_properties": null, + "description": "Incident resource type." + } + }, + "inner_properties": null, + "description": "Incident data for an update request." + } + }, + "inner_properties": null, + "description": "Incident Payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update request for an incident.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident data for an update request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The incident's attributes for an update request.\",\n \"properties\": {\n \"customer_impact_end\": {\n \"description\": \"Timestamp when customers were no longer impacted by the incident.\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"customer_impact_scope\": {\n \"description\": \"A summary of the impact customers experienced during the incident.\",\n \"example\": \"Example customer impact scope\",\n \"type\": \"string\"\n },\n \"customer_impact_start\": {\n \"description\": \"Timestamp when customers began being impacted by the incident.\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"customer_impacted\": {\n \"description\": \"A flag indicating whether the incident caused customer impact.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detected\": {\n \"description\": \"Timestamp when the incident was detected.\",\n \"format\": \"date-time\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fields\": {\n \"additionalProperties\": {\n \"description\": \"Dynamic fields for which selections can be made, with field names as keys.\",\n \"oneOf\": [\n {\n \"description\": \"A field with a single value selected.\",\n \"properties\": {\n \"type\": {\n \"default\": \"dropdown\",\n \"description\": \"Type of the single value field definitions.\",\n \"enum\": [\n \"dropdown\",\n \"textbox\"\n ],\n \"example\": \"dropdown\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DROPDOWN\",\n \"TEXTBOX\"\n ]\n },\n \"value\": {\n \"description\": \"The single value selected for this field.\",\n \"example\": \"SEV-1\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n {\n \"description\": \"A field with potentially multiple values selected.\",\n \"properties\": {\n \"type\": {\n \"default\": \"multiselect\",\n \"description\": \"Type of the multiple value field definitions.\",\n \"enum\": [\n \"multiselect\",\n \"textarray\",\n \"metrictag\",\n \"autocomplete\"\n ],\n \"example\": \"multiselect\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MULTISELECT\",\n \"TEXTARRAY\",\n \"METRICTAG\",\n \"AUTOCOMPLETE\"\n ]\n },\n \"value\": {\n \"description\": \"The multiple values selected for this field.\",\n \"example\": [\n \"1.0\",\n \"1.1\"\n ],\n \"items\": {\n \"description\": \"A value which has been selected for the parent field.\",\n \"example\": \"1.1\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n ]\n },\n \"description\": \"A condensed view of the user-defined fields for which to update selections.\",\n \"example\": {\n \"severity\": {\n \"type\": \"dropdown\",\n \"value\": \"SEV-5\"\n }\n },\n \"type\": \"object\"\n },\n \"notification_handles\": {\n \"description\": \"Notification handles that will be notified of the incident during update.\",\n \"example\": [\n {\n \"display_name\": \"Jane Doe\",\n \"handle\": \"@user@email.com\"\n },\n {\n \"display_name\": \"Slack Channel\",\n \"handle\": \"@slack-channel\"\n },\n {\n \"display_name\": \"Incident Workflow\",\n \"handle\": \"@workflow-from-incident\"\n }\n ],\n \"items\": {\n \"description\": \"A notification handle that will be notified at incident creation.\",\n \"properties\": {\n \"display_name\": {\n \"description\": \"The name of the notified handle.\",\n \"example\": \"Jane Doe\",\n \"type\": \"string\"\n },\n \"handle\": {\n \"description\": \"The handle used for the notification. This includes an email address, Slack channel, or workflow.\",\n \"example\": \"@test.user@test.com\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"title\": {\n \"description\": \"The title of the incident, which summarizes what happened.\",\n \"example\": \"A test incident title\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The incident's ID.\",\n \"example\": \"00000000-0000-0000-4567-000000000000\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"The incident's relationships for an update request.\",\n \"properties\": {\n \"commander_user\": {\n \"description\": \"Relationship to user.\",\n \"nullable\": true,\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"nullable\": true,\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n },\n \"integrations\": {\n \"description\": \"A relationship reference for multiple integration metadata objects.\",\n \"example\": {\n \"data\": [\n {\n \"id\": \"00000000-abcd-0005-0000-000000000000\",\n \"type\": \"incident_integrations\"\n },\n {\n \"id\": \"00000000-abcd-0006-0000-000000000000\",\n \"type\": \"incident_integrations\"\n }\n ]\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Integration metadata relationship array\",\n \"example\": [\n {\n \"id\": \"00000000-abcd-0003-0000-000000000000\",\n \"type\": \"incident_integrations\"\n },\n {\n \"id\": \"00000000-abcd-0004-0000-000000000000\",\n \"type\": \"incident_integrations\"\n }\n ],\n \"items\": {\n \"description\": \"A relationship reference for an integration metadata object.\",\n \"example\": {\n \"id\": \"00000000-abcd-0002-0000-000000000000\",\n \"type\": \"incident_integrations\"\n },\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the integration metadata.\",\n \"example\": \"00000000-abcd-0001-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"incident_integrations\",\n \"description\": \"Integration metadata resource type.\",\n \"enum\": [\n \"incident_integrations\"\n ],\n \"example\": \"incident_integrations\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_INTEGRATIONS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n },\n \"postmortem\": {\n \"description\": \"A relationship reference for postmortems.\",\n \"example\": {\n \"data\": {\n \"id\": \"00000000-0000-abcd-3000-000000000000\",\n \"type\": \"incident_postmortems\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The postmortem relationship data.\",\n \"example\": {\n \"id\": \"00000000-0000-abcd-2000-000000000000\",\n \"type\": \"incident_postmortems\"\n },\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the postmortem.\",\n \"example\": \"00000000-0000-abcd-1000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"incident_postmortems\",\n \"description\": \"Incident postmortem resource type.\",\n \"enum\": [\n \"incident_postmortems\"\n ],\n \"example\": \"incident_postmortems\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_POSTMORTEMS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incidents\",\n \"description\": \"Incident resource type.\",\n \"enum\": [\n \"incidents\"\n ],\n \"example\": \"incidents\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENTS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident Payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentIntegration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentIntegration.json new file mode 100644 index 00000000..da4b5895 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentIntegration.json @@ -0,0 +1,346 @@ +{ + "name": "UpdateIncidentIntegration", + "fully_qualified_name": "DatadogApi.UpdateIncidentIntegration@0.1.0", + "description": "Update incident integration metadata in Datadog.\n\nCall this tool to update the metadata of an existing incident integration in Datadog. Useful for modifying integration details after an incident is created.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The UUID of the incident. This is a unique identifier used to specify which incident to update the integration metadata for.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "integration_metadata_uuid", + "required": true, + "description": "The UUID of the incident integration metadata to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident integration metadata." + }, + "inferrable": true, + "http_endpoint_parameter_name": "integration_metadata_id" + }, + { + "name": "incident_integration_metadata_payload", + "required": true, + "description": "Incident integration metadata payload, including attributes like created, modified timestamps, incident ID, integration type, metadata, status, and type as 'incident_integrations'.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this integration metadata is connected to." + }, + "integration_type": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the type of integration this metadata is for. 1 indicates Slack;\n8 indicates Jira." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Incident integration metadata's metadata attribute." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + }, + "status": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the status of this integration metadata. 0 indicates unknown;\n1 indicates pending; 2 indicates complete; 3 indicates manually created;\n4 indicates manually updated; 5 indicates failed." + } + }, + "inner_properties": null, + "description": "Incident integration metadata's attributes for a create request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_integrations" + ], + "properties": null, + "inner_properties": null, + "description": "Integration metadata resource type." + } + }, + "inner_properties": null, + "description": "Incident integration metadata data for a patch request." + } + }, + "inner_properties": null, + "description": "Incident integration metadata payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIncidentIntegration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/integrations/{integration_metadata_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "integration_metadata_id", + "tool_parameter_name": "integration_metadata_uuid", + "description": "The UUID of the incident integration metadata.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident integration metadata." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_integration_metadata_payload", + "description": "Incident integration metadata payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this integration metadata is connected to." + }, + "integration_type": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the type of integration this metadata is for. 1 indicates Slack;\n8 indicates Jira." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Incident integration metadata's metadata attribute." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + }, + "status": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A number indicating the status of this integration metadata. 0 indicates unknown;\n1 indicates pending; 2 indicates complete; 3 indicates manually created;\n4 indicates manually updated; 5 indicates failed." + } + }, + "inner_properties": null, + "description": "Incident integration metadata's attributes for a create request." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_integrations" + ], + "properties": null, + "inner_properties": null, + "description": "Integration metadata resource type." + } + }, + "inner_properties": null, + "description": "Incident integration metadata data for a patch request." + } + }, + "inner_properties": null, + "description": "Incident integration metadata payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Patch request for an incident integration metadata.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident integration metadata data for a patch request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Incident integration metadata's attributes for a create request.\",\n \"properties\": {\n \"created\": {\n \"description\": \"Timestamp when the incident todo was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"incident_id\": {\n \"description\": \"UUID of the incident this integration metadata is connected to.\",\n \"example\": \"00000000-aaaa-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"integration_type\": {\n \"description\": \"A number indicating the type of integration this metadata is for. 1 indicates Slack;\\n8 indicates Jira.\",\n \"example\": 1,\n \"format\": \"int32\",\n \"maximum\": 9,\n \"type\": \"integer\"\n },\n \"metadata\": {\n \"description\": \"Incident integration metadata's metadata attribute.\",\n \"oneOf\": [\n {\n \"description\": \"Incident integration metadata for the Slack integration.\",\n \"properties\": {\n \"channels\": {\n \"description\": \"Array of Slack channels in this integration metadata.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Item in the Slack integration metadata channel array.\",\n \"properties\": {\n \"channel_id\": {\n \"description\": \"Slack channel ID.\",\n \"example\": \"C0123456789\",\n \"type\": \"string\"\n },\n \"channel_name\": {\n \"description\": \"Name of the Slack channel.\",\n \"example\": \"#example-channel-name\",\n \"type\": \"string\"\n },\n \"redirect_url\": {\n \"description\": \"URL redirecting to the Slack channel.\",\n \"example\": \"https://slack.com/app_redirect?channel=C0123456789&team=T01234567\",\n \"type\": \"string\"\n },\n \"team_id\": {\n \"description\": \"Slack team ID.\",\n \"example\": \"T01234567\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"channel_id\",\n \"channel_name\",\n \"redirect_url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"channels\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Incident integration metadata for the Jira integration.\",\n \"properties\": {\n \"issues\": {\n \"description\": \"Array of Jira issues in this integration metadata.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Item in the Jira integration metadata issue array.\",\n \"properties\": {\n \"account\": {\n \"description\": \"URL of issue's Jira account.\",\n \"example\": \"https://example.atlassian.net\",\n \"type\": \"string\"\n },\n \"issue_key\": {\n \"description\": \"Jira issue's issue key.\",\n \"example\": \"PROJ-123\",\n \"type\": \"string\"\n },\n \"issuetype_id\": {\n \"description\": \"Jira issue's issue type.\",\n \"example\": \"1000\",\n \"type\": \"string\"\n },\n \"project_key\": {\n \"description\": \"Jira issue's project keys.\",\n \"example\": \"PROJ\",\n \"type\": \"string\"\n },\n \"redirect_url\": {\n \"description\": \"URL redirecting to the Jira issue.\",\n \"example\": \"https://example.atlassian.net/browse/PROJ-123\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"project_key\",\n \"account\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"issues\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Incident integration metadata for the Microsoft Teams integration.\",\n \"properties\": {\n \"teams\": {\n \"description\": \"Array of Microsoft Teams in this integration metadata.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Item in the Microsoft Teams integration metadata teams array.\",\n \"properties\": {\n \"ms_channel_id\": {\n \"description\": \"Microsoft Teams channel ID.\",\n \"example\": \"19:abc00abcdef00a0abcdef0abcdef0a@thread.tacv2\",\n \"type\": \"string\"\n },\n \"ms_channel_name\": {\n \"description\": \"Microsoft Teams channel name.\",\n \"example\": \"incident-0001-example\",\n \"type\": \"string\"\n },\n \"ms_tenant_id\": {\n \"description\": \"Microsoft Teams tenant ID.\",\n \"example\": \"00000000-abcd-0005-0000-000000000000\",\n \"type\": \"string\"\n },\n \"redirect_url\": {\n \"description\": \"URL redirecting to the Microsoft Teams channel.\",\n \"example\": \"https://teams.microsoft.com/l/channel/19%3Aabc00abcdef00a0abcdef0abcdef0a%40thread.tacv2/conversations?groupId=12345678-abcd-dcba-abcd-1234567890ab&tenantId=00000000-abcd-0005-0000-000000000000\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ms_tenant_id\",\n \"ms_channel_id\",\n \"ms_channel_name\",\n \"redirect_url\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"teams\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"modified\": {\n \"description\": \"Timestamp when the incident todo was last modified.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"A number indicating the status of this integration metadata. 0 indicates unknown;\\n1 indicates pending; 2 indicates complete; 3 indicates manually created;\\n4 indicates manually updated; 5 indicates failed.\",\n \"format\": \"int32\",\n \"maximum\": 5,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"integration_type\",\n \"metadata\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incident_integrations\",\n \"description\": \"Integration metadata resource type.\",\n \"enum\": [\n \"incident_integrations\"\n ],\n \"example\": \"incident_integrations\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_INTEGRATIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident integration metadata payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentNotificationRule.json new file mode 100644 index 00000000..29dd21ab --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentNotificationRule.json @@ -0,0 +1,566 @@ +{ + "name": "UpdateIncidentNotificationRule", + "fully_qualified_name": "DatadogApi.UpdateIncidentNotificationRule@0.1.0", + "description": "Update an incident notification rule in Datadog.\n\nThis tool updates an existing incident notification rule in Datadog with a complete replacement. Use it when you need to modify the settings or parameters of an incident alert rule.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "notification_rule_id", + "required": true, + "description": "The unique identifier for the notification rule to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "notification_rule_data", + "required": true, + "description": "JSON object containing the complete notification rule data to update. It includes attributes, relationships, and the type for the notification rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "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": "The incident field to evaluate" + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value(s) to compare against. Multiple values are `ORed` together." + } + }, + "description": "The conditions that trigger this notification rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the notification rule is enabled." + }, + "handles": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notification handles (targets) for this rule." + }, + "renotify_on": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of incident fields that trigger re-notification when changed." + }, + "trigger": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The trigger event for this notification rule." + }, + "visibility": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "organization", + "private" + ], + "properties": null, + "inner_properties": null, + "description": "The visibility of the notification rule." + } + }, + "inner_properties": null, + "description": "The attributes for creating a notification rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "incident_type": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + } + }, + "inner_properties": null, + "description": "Relationship to incident type object." + } + }, + "inner_properties": null, + "description": "Relationship to an incident type." + }, + "notification_template": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + } + }, + "inner_properties": null, + "description": "The notification template relationship data." + } + }, + "inner_properties": null, + "description": "A relationship reference to a notification template." + } + }, + "inner_properties": null, + "description": "The definition of `NotificationRuleCreateDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_notification_rules" + ], + "properties": null, + "inner_properties": null, + "description": "Notification rules resource type." + } + }, + "inner_properties": null, + "description": "Notification rule data for an update request." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_resources", + "required": false, + "description": "Comma-separated list of resources to include: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIncidentNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-rules/{id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_resources", + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of resources to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`, `notification_template`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "notification_rule_id", + "description": "The ID of the notification rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "notification_rule_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "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": "The incident field to evaluate" + }, + "values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value(s) to compare against. Multiple values are `ORed` together." + } + }, + "description": "The conditions that trigger this notification rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the notification rule is enabled." + }, + "handles": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The notification handles (targets) for this rule." + }, + "renotify_on": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of incident fields that trigger re-notification when changed." + }, + "trigger": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The trigger event for this notification rule." + }, + "visibility": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "all", + "organization", + "private" + ], + "properties": null, + "inner_properties": null, + "description": "The visibility of the notification rule." + } + }, + "inner_properties": null, + "description": "The attributes for creating a notification rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "incident_type": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + } + }, + "inner_properties": null, + "description": "Relationship to incident type object." + } + }, + "inner_properties": null, + "description": "Relationship to an incident type." + }, + "notification_template": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + } + }, + "inner_properties": null, + "description": "The notification template relationship data." + } + }, + "inner_properties": null, + "description": "A relationship reference to a notification template." + } + }, + "inner_properties": null, + "description": "The definition of `NotificationRuleCreateDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_notification_rules" + ], + "properties": null, + "inner_properties": null, + "description": "Notification rules resource type." + } + }, + "inner_properties": null, + "description": "Notification rule data for an update request." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Put request for a notification rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Notification rule data for an update request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes for creating a notification rule.\",\n \"properties\": {\n \"conditions\": {\n \"description\": \"The conditions that trigger this notification rule.\",\n \"example\": [\n {\n \"field\": \"severity\",\n \"values\": [\n \"SEV-1\",\n \"SEV-2\"\n ]\n }\n ],\n \"items\": {\n \"description\": \"A condition that must be met to trigger the notification rule.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The incident field to evaluate\",\n \"example\": \"severity\",\n \"type\": \"string\"\n },\n \"values\": {\n \"description\": \"The value(s) to compare against. Multiple values are `ORed` together.\",\n \"example\": [\n \"SEV-1\",\n \"SEV-2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"field\",\n \"values\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"default\": false,\n \"description\": \"Whether the notification rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"handles\": {\n \"description\": \"The notification handles (targets) for this rule.\",\n \"example\": [\n \"@team-email@company.com\",\n \"@slack-channel\"\n ],\n \"items\": {\n \"description\": \"A notification handle (email, Slack channel, etc.).\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"renotify_on\": {\n \"description\": \"List of incident fields that trigger re-notification when changed.\",\n \"example\": [\n \"status\",\n \"severity\"\n ],\n \"items\": {\n \"description\": \"An incident field name.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"trigger\": {\n \"description\": \"The trigger event for this notification rule.\",\n \"example\": \"incident_created_trigger\",\n \"type\": \"string\"\n },\n \"visibility\": {\n \"description\": \"The visibility of the notification rule.\",\n \"enum\": [\n \"all\",\n \"organization\",\n \"private\"\n ],\n \"example\": \"organization\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALL\",\n \"ORGANIZATION\",\n \"PRIVATE\"\n ]\n }\n },\n \"required\": [\n \"conditions\",\n \"handles\",\n \"trigger\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the notification rule.\",\n \"example\": \"00000000-0000-0000-0000-000000000001\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"The definition of `NotificationRuleCreateDataRelationships` object.\",\n \"properties\": {\n \"incident_type\": {\n \"description\": \"Relationship to an incident type.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to incident type object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The incident type's ID.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"incident_types\",\n \"description\": \"Incident type resource type.\",\n \"enum\": [\n \"incident_types\"\n ],\n \"example\": \"incident_types\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_TYPES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n },\n \"notification_template\": {\n \"description\": \"A relationship reference to a notification template.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The notification template relationship data.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the notification template.\",\n \"example\": \"00000000-0000-0000-0000-000000000001\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Notification templates resource type.\",\n \"enum\": [\n \"notification_templates\"\n ],\n \"example\": \"notification_templates\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTIFICATION_TEMPLATES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Notification rules resource type.\",\n \"enum\": [\n \"incident_notification_rules\"\n ],\n \"example\": \"incident_notification_rules\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_NOTIFICATION_RULES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentTodo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentTodo.json new file mode 100644 index 00000000..57f52b32 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentTodo.json @@ -0,0 +1,362 @@ +{ + "name": "UpdateIncidentTodo", + "fully_qualified_name": "DatadogApi.UpdateIncidentTodo@0.1.0", + "description": "Update a specific incident todo in Datadog.\n\nUse this tool to update details of a specific todo associated with an incident in Datadog. This is useful when you need to modify tasks related to incident management.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_id" + }, + { + "name": "incident_todo_uuid", + "required": true, + "description": "The unique identifier (UUID) of the incident todo to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident todo." + }, + "inferrable": true, + "http_endpoint_parameter_name": "todo_id" + }, + { + "name": "incident_todo_payload", + "required": true, + "description": "JSON object containing the incident todo data, including attributes like content, assignees, timestamps, and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "assignees": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Array of todo assignees." + }, + "completed": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo was completed." + }, + "content": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The follow-up task's content." + }, + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo should be completed by." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this todo is connected to." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + } + }, + "inner_properties": null, + "description": "Incident todo's attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_todos" + ], + "properties": null, + "inner_properties": null, + "description": "Todo resource type." + } + }, + "inner_properties": null, + "description": "Incident todo data for a patch request." + } + }, + "inner_properties": null, + "description": "Incident todo payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIncidentTodo'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/{incident_id}/relationships/todos/{todo_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "incident_id", + "tool_parameter_name": "incident_uuid", + "description": "The UUID of the incident.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "todo_id", + "tool_parameter_name": "incident_todo_uuid", + "description": "The UUID of the incident todo.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident todo." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_todo_payload", + "description": "Incident todo payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "assignees": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Array of todo assignees." + }, + "completed": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo was completed." + }, + "content": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The follow-up task's content." + }, + "created": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was created." + }, + "due_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the todo should be completed by." + }, + "incident_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the incident this todo is connected to." + }, + "modified": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident todo was last modified." + } + }, + "inner_properties": null, + "description": "Incident todo's attributes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_todos" + ], + "properties": null, + "inner_properties": null, + "description": "Todo resource type." + } + }, + "inner_properties": null, + "description": "Incident todo data for a patch request." + } + }, + "inner_properties": null, + "description": "Incident todo payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Patch request for an incident todo.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident todo data for a patch request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Incident todo's attributes.\",\n \"properties\": {\n \"assignees\": {\n \"description\": \"Array of todo assignees.\",\n \"example\": [\n \"@test.user@test.com\"\n ],\n \"items\": {\n \"description\": \"A todo assignee.\",\n \"example\": \"@test.user@test.com\",\n \"oneOf\": [\n {\n \"description\": \"Assignee's @-handle.\",\n \"example\": \"@test.user@test.com\",\n \"type\": \"string\"\n },\n {\n \"description\": \"Anonymous assignee entity.\",\n \"properties\": {\n \"icon\": {\n \"description\": \"URL for assignee's icon.\",\n \"example\": \"https://a.slack-edge.com/80588/img/slackbot_48.png\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Anonymous assignee's ID.\",\n \"example\": \"USLACKBOT\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Assignee's name.\",\n \"example\": \"Slackbot\",\n \"type\": \"string\"\n },\n \"source\": {\n \"default\": \"slack\",\n \"description\": \"The source of the anonymous assignee.\",\n \"enum\": [\n \"slack\",\n \"microsoft_teams\"\n ],\n \"example\": \"slack\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SLACK\",\n \"MICROSOFT_TEAMS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"icon\",\n \"name\",\n \"source\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"completed\": {\n \"description\": \"Timestamp when the todo was completed.\",\n \"example\": \"2023-03-06T22:00:00.000000+00:00\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"content\": {\n \"description\": \"The follow-up task's content.\",\n \"example\": \"Restore lost data.\",\n \"type\": \"string\"\n },\n \"created\": {\n \"description\": \"Timestamp when the incident todo was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"due_date\": {\n \"description\": \"Timestamp when the todo should be completed by.\",\n \"example\": \"2023-07-10T05:00:00.000000+00:00\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"incident_id\": {\n \"description\": \"UUID of the incident this todo is connected to.\",\n \"example\": \"00000000-aaaa-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"modified\": {\n \"description\": \"Timestamp when the incident todo was last modified.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"content\",\n \"assignees\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"incident_todos\",\n \"description\": \"Todo resource type.\",\n \"enum\": [\n \"incident_todos\"\n ],\n \"example\": \"incident_todos\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_TODOS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident todo payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentType.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentType.json new file mode 100644 index 00000000..96ab679a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIncidentType.json @@ -0,0 +1,361 @@ +{ + "name": "UpdateIncidentType", + "fully_qualified_name": "DatadogApi.UpdateIncidentType@0.1.0", + "description": "Update the type of a specific incident in Datadog.\n\nUse this tool to modify an existing incident type in Datadog by specifying the incident type ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "incident_type_uuid", + "required": true, + "description": "The UUID representing the incident type to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "incident_type_id" + }, + { + "name": "incident_type_payload", + "required": true, + "description": "JSON payload containing the incident type data, including attributes like name, description, and timestamps for updates.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "createdAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was created." + }, + "createdBy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that created the incident type." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text that describes the incident type." + }, + "is_default": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When true, this incident type will be used as the default type when an incident type is not specified." + }, + "lastModifiedBy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that last modified the incident type." + }, + "modifiedAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was last modified." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the incident type." + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The string that will be prepended to the incident title across the Datadog app." + } + }, + "inner_properties": null, + "description": "Incident type's attributes for updates." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + } + }, + "inner_properties": null, + "description": "Incident type data for a patch request." + } + }, + "inner_properties": null, + "description": "Incident type payload." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIncidentType'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/types/{incident_type_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "incident_type_id", + "tool_parameter_name": "incident_type_uuid", + "description": "The UUID of the incident type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the incident type." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "incident_type_payload", + "description": "Incident type payload.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "createdAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was created." + }, + "createdBy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that created the incident type." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Text that describes the incident type." + }, + "is_default": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When true, this incident type will be used as the default type when an incident type is not specified." + }, + "lastModifiedBy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user that last modified the incident type." + }, + "modifiedAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Timestamp when the incident type was last modified." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the incident type." + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The string that will be prepended to the incident title across the Datadog app." + } + }, + "inner_properties": null, + "description": "Incident type's attributes for updates." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The incident type's ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "incident_types" + ], + "properties": null, + "inner_properties": null, + "description": "Incident type resource type." + } + }, + "inner_properties": null, + "description": "Incident type data for a patch request." + } + }, + "inner_properties": null, + "description": "Incident type payload." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Patch request for an incident type.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Incident type data for a patch request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Incident type's attributes for updates.\",\n \"properties\": {\n \"createdAt\": {\n \"description\": \"Timestamp when the incident type was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"createdBy\": {\n \"description\": \"A unique identifier that represents the user that created the incident type.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Text that describes the incident type.\",\n \"example\": \"Any incidents that harm (or have the potential to) the confidentiality, integrity, or availability of our data. Note: This will notify the security team.\",\n \"type\": \"string\"\n },\n \"is_default\": {\n \"description\": \"When true, this incident type will be used as the default type when an incident type is not specified.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"lastModifiedBy\": {\n \"description\": \"A unique identifier that represents the user that last modified the incident type.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"modifiedAt\": {\n \"description\": \"Timestamp when the incident type was last modified.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the incident type.\",\n \"example\": \"Security Incident\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"description\": \"The string that will be prepended to the incident title across the Datadog app.\",\n \"example\": \"IR\",\n \"readOnly\": true,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The incident type's ID.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"incident_types\",\n \"description\": \"Incident type resource type.\",\n \"enum\": [\n \"incident_types\"\n ],\n \"example\": \"incident_types\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCIDENT_TYPES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Incident type payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIpAllowlist.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIpAllowlist.json new file mode 100644 index 00000000..022a2468 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIpAllowlist.json @@ -0,0 +1,370 @@ +{ + "name": "UpdateIpAllowlist", + "fully_qualified_name": "DatadogApi.UpdateIpAllowlist@0.1.0", + "description": "Edit and toggle the IP allowlist settings in Datadog.\n\nThis tool updates the entries in the Datadog IP allowlist, enabling or disabling it as needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "ip_allowlist_data", + "required": true, + "description": "JSON object with allowlist details: attributes (enabled, entries) and metadata (id, type).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the IP allowlist logic is enabled or not." + }, + "entries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cidr_block": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The CIDR block describing the IP range of the entry." + }, + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the entry." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of last entry modification." + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A note describing the IP allowlist entry." + } + }, + "inner_properties": null, + "description": "Attributes of the IP allowlist entry." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the IP allowlist entry." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ip_allowlist_entry" + ], + "properties": null, + "inner_properties": null, + "description": "IP allowlist Entry type." + } + }, + "inner_properties": null, + "description": "Data of the IP allowlist entry object." + } + }, + "description": "Array of entries in the IP allowlist." + } + }, + "inner_properties": null, + "description": "Attributes of the IP allowlist." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ip_allowlist" + ], + "properties": null, + "inner_properties": null, + "description": "IP allowlist type." + } + }, + "inner_properties": null, + "description": "IP allowlist data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIPAllowlist'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/ip_allowlist", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "ip_allowlist_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the IP allowlist logic is enabled or not." + }, + "entries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cidr_block": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The CIDR block describing the IP range of the entry." + }, + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the entry." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of last entry modification." + }, + "note": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A note describing the IP allowlist entry." + } + }, + "inner_properties": null, + "description": "Attributes of the IP allowlist entry." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the IP allowlist entry." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ip_allowlist_entry" + ], + "properties": null, + "inner_properties": null, + "description": "IP allowlist Entry type." + } + }, + "inner_properties": null, + "description": "Data of the IP allowlist entry object." + } + }, + "description": "Array of entries in the IP allowlist." + } + }, + "inner_properties": null, + "description": "Attributes of the IP allowlist." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ip_allowlist" + ], + "properties": null, + "inner_properties": null, + "description": "IP allowlist type." + } + }, + "inner_properties": null, + "description": "IP allowlist data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update the IP allowlist.\",\n \"properties\": {\n \"data\": {\n \"description\": \"IP allowlist data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the IP allowlist.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether the IP allowlist logic is enabled or not.\",\n \"type\": \"boolean\"\n },\n \"entries\": {\n \"description\": \"Array of entries in the IP allowlist.\",\n \"items\": {\n \"description\": \"IP allowlist entry object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data of the IP allowlist entry object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the IP allowlist entry.\",\n \"properties\": {\n \"cidr_block\": {\n \"description\": \"The CIDR block describing the IP range of the entry.\",\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Creation time of the entry.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"modified_at\": {\n \"description\": \"Time of last entry modification.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"note\": {\n \"description\": \"A note describing the IP allowlist entry.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the IP allowlist entry.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"ip_allowlist_entry\",\n \"description\": \"IP allowlist Entry type.\",\n \"enum\": [\n \"ip_allowlist_entry\"\n ],\n \"example\": \"ip_allowlist_entry\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"IP_ALLOWLIST_ENTRY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the org.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"ip_allowlist\",\n \"description\": \"IP allowlist type.\",\n \"enum\": [\n \"ip_allowlist\"\n ],\n \"example\": \"ip_allowlist\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"IP_ALLOWLIST\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIssueAssignee.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIssueAssignee.json new file mode 100644 index 00000000..671b9ac0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIssueAssignee.json @@ -0,0 +1,196 @@ +{ + "name": "UpdateIssueAssignee", + "fully_qualified_name": "DatadogApi.UpdateIssueAssignee@0.1.0", + "description": "Update the assignee of an issue in Datadog.\n\nUse this tool to change the assignee of a specific issue in Datadog by providing the issue ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "issue_identifier", + "required": true, + "description": "The unique identifier for the issue to update the assignee.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the issue." + }, + "inferrable": true, + "http_endpoint_parameter_name": "issue_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "The identifier of the user to assign the issue to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "User identifier." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "object_type", + "required": true, + "description": "Specifies the type of object being updated. For issue assignee, use 'assignee'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "assignee" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the object." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIssueAssignee'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/error-tracking/issues/{issue_id}/assignee", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "issue_id", + "tool_parameter_name": "issue_identifier", + "description": "The identifier of the issue.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the issue." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "user_identifier", + "description": "User identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "User identifier." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "object_type", + "description": "Type of the object.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "assignee" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the object." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update issue assignee request payload.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Update issue assignee request.\",\n \"properties\": {\n \"id\": {\n \"description\": \"User identifier.\",\n \"example\": \"87cb11a0-278c-440a-99fe-701223c80296\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of the object.\",\n \"enum\": [\n \"assignee\"\n ],\n \"example\": \"assignee\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ASSIGNEE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Update issue assignee request payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIssueState.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIssueState.json new file mode 100644 index 00000000..50098adf --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateIssueState.json @@ -0,0 +1,241 @@ +{ + "name": "UpdateIssueState", + "fully_qualified_name": "DatadogApi.UpdateIssueState@0.1.0", + "description": "Update the state of an issue in Datadog.\n\nThis tool updates the state of an issue identified by `issue_id` in Datadog, allowing transitions between states such as `OPEN`, `RESOLVED`, or `IGNORED`. It should be called when you need to change an issue's status.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "issue_identifier", + "required": true, + "description": "The unique identifier for the issue to update its state in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the issue." + }, + "inferrable": true, + "http_endpoint_parameter_name": "issue_id" + }, + { + "name": "issue_state", + "required": true, + "description": "State of the issue, valid values are 'OPEN', 'ACKNOWLEDGED', 'RESOLVED', 'IGNORED', 'EXCLUDED'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPEN", + "ACKNOWLEDGED", + "RESOLVED", + "IGNORED", + "EXCLUDED" + ], + "properties": null, + "inner_properties": null, + "description": "State of the issue" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.state" + }, + { + "name": "issue_id_value", + "required": true, + "description": "The identifier for the issue to update the state of in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Issue identifier." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "issue_object_type", + "required": true, + "description": "Specifies the type of the object. Accepted value is 'error_tracking_issue'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "error_tracking_issue" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the object." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIssueState'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/error-tracking/issues/{issue_id}/state", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "issue_id", + "tool_parameter_name": "issue_identifier", + "description": "The identifier of the issue.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the issue." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.state", + "tool_parameter_name": "issue_state", + "description": "State of the issue", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPEN", + "ACKNOWLEDGED", + "RESOLVED", + "IGNORED", + "EXCLUDED" + ], + "properties": null, + "inner_properties": null, + "description": "State of the issue" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "issue_id_value", + "description": "Issue identifier.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Issue identifier." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "issue_object_type", + "description": "Type of the object.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "error_tracking_issue" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the object." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update issue state request payload.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Update issue state request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Object describing an issue state update request.\",\n \"properties\": {\n \"state\": {\n \"description\": \"State of the issue\",\n \"enum\": [\n \"OPEN\",\n \"ACKNOWLEDGED\",\n \"RESOLVED\",\n \"IGNORED\",\n \"EXCLUDED\"\n ],\n \"example\": \"RESOLVED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPEN\",\n \"ACKNOWLEDGED\",\n \"RESOLVED\",\n \"IGNORED\",\n \"EXCLUDED\"\n ]\n }\n },\n \"required\": [\n \"state\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Issue identifier.\",\n \"example\": \"c1726a66-1f64-11ee-b338-da7ad0900002\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of the object.\",\n \"enum\": [\n \"error_tracking_issue\"\n ],\n \"example\": \"error_tracking_issue\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ERROR_TRACKING_ISSUE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Update issue state request payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogBasedMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogBasedMetric.json new file mode 100644 index 00000000..3a2c27cf --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogBasedMetric.json @@ -0,0 +1,335 @@ +{ + "name": "UpdateLogBasedMetric", + "fully_qualified_name": "DatadogApi.UpdateLogBasedMetric@0.1.0", + "description": "Update a specific log-based metric in your organization.\n\nCall this tool to update a particular log-based metric within your organization using Datadog's API. Ideal for modifying metrics configurations to refine log analysis and monitoring.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "log_metric_name", + "required": true, + "description": "The name of the log-based metric to be updated. It specifies which metric to modify in your organization.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + }, + { + "name": "new_log_metric_definition", + "required": true, + "description": "JSON object detailing the updated properties of the log-based metric. It includes attributes for computation rules, filters, and group-by settings.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the log-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + } + }, + "inner_properties": null, + "description": "The log-based metric filter. Logs matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the log-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The log-based metric properties that will be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be logs_metrics." + } + }, + "inner_properties": null, + "description": "The new log-based metric properties." + } + }, + "inner_properties": null, + "description": "New definition of the log-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateLogsMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/metrics/{metric_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "log_metric_name", + "description": "The name of the log-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the log-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_log_metric_definition", + "description": "New definition of the log-based metric.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the log-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the log search syntax." + } + }, + "inner_properties": null, + "description": "The log-based metric filter. Logs matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the log-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The log-based metric properties that will be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be logs_metrics." + } + }, + "inner_properties": null, + "description": "The new log-based metric properties." + } + }, + "inner_properties": null, + "description": "New definition of the log-based metric." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The new log-based metric body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new log-based metric properties.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The log-based metric properties that will be updated.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The compute rule to compute the log-based metric.\",\n \"properties\": {\n \"include_percentiles\": {\n \"description\": \"Toggle to include or exclude percentile aggregations for distribution metrics.\\nOnly present when the `aggregation_type` is `distribution`.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"description\": \"The log-based metric filter. Logs matching this filter will be aggregated in this metric.\",\n \"properties\": {\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the log search syntax.\",\n \"example\": \"service:web* AND @http.status_code:[200 TO 299]\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group by rule.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The path to the value the log-based metric will be aggregated over.\",\n \"example\": \"@http.status_code\",\n \"type\": \"string\"\n },\n \"tag_name\": {\n \"description\": \"Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.\",\n \"example\": \"status_code\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"logs_metrics\",\n \"description\": \"The type of the resource. The value should always be logs_metrics.\",\n \"enum\": [\n \"logs_metrics\"\n ],\n \"example\": \"logs_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS_METRICS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the log-based metric.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogsArchiveOrder.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogsArchiveOrder.json new file mode 100644 index 00000000..b12df1ea --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogsArchiveOrder.json @@ -0,0 +1,163 @@ +{ + "name": "UpdateLogsArchiveOrder", + "fully_qualified_name": "DatadogApi.UpdateLogsArchiveOrder@0.1.0", + "description": "Updates the order of log archives in Datadog.\n\nThis tool updates the sequence in which log archives are processed within Datadog. Reordering them may impact the structure and content of logs processed by other archives. Use this when you need to change how logs are archived.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "archive_ids_order", + "required": false, + "description": "An ordered list of `` strings to define the new archives order in Datadog.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An ordered array of `` strings, the order of archive IDs in the array\ndefine the overall archives order for Datadog." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.archive_ids" + }, + { + "name": "archive_order_type", + "required": false, + "description": "Specifies the type for the archive order definition. Must be 'archive_order'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "archive_order" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the archive order definition." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateLogsArchiveOrder'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/archive-order", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.archive_ids", + "tool_parameter_name": "archive_ids_order", + "description": "An ordered array of `` strings, the order of archive IDs in the array\ndefine the overall archives order for Datadog.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An ordered array of `` strings, the order of archive IDs in the array\ndefine the overall archives order for Datadog." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "archive_order_type", + "description": "Type of the archive order definition.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "archive_order" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the archive order definition." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "archive_order", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A ordered list of archive IDs.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of an archive order.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes associated with the archive order.\",\n \"properties\": {\n \"archive_ids\": {\n \"description\": \"An ordered array of `` strings, the order of archive IDs in the array\\ndefine the overall archives order for Datadog.\",\n \"example\": [\n \"a2zcMylnM4OCHpYusxIi1g\",\n \"a2zcMylnM4OCHpYusxIi2g\",\n \"a2zcMylnM4OCHpYusxIi3g\"\n ],\n \"items\": {\n \"description\": \"A given archive ID.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"archive_ids\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"archive_order\",\n \"description\": \"Type of the archive order definition.\",\n \"enum\": [\n \"archive_order\"\n ],\n \"example\": \"archive_order\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ARCHIVE_ORDER\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"An object containing the new ordered list of archive IDs.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogsCustomDestination.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogsCustomDestination.json new file mode 100644 index 00000000..fb848fc4 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateLogsCustomDestination.json @@ -0,0 +1,351 @@ +{ + "name": "UpdateLogsCustomDestination", + "fully_qualified_name": "DatadogApi.UpdateLogsCustomDestination@0.1.0", + "description": "Update specific fields of a custom logs destination.\n\nUse this tool to update the selected fields of a specific custom logs destination within your organization. This is useful for modifying destination configurations in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_destination_id", + "required": true, + "description": "The unique identifier for the custom logs destination to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom destination." + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_destination_id" + }, + { + "name": "new_custom_destination_definition", + "required": true, + "description": "New definition of the custom destination's fields. Include attributes such as name, query, and forwarding details.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether logs matching this custom destination should be forwarded or not." + }, + "forward_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether tags from the forwarded logs should be forwarded or not." + }, + "forward_tags_restriction_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of [keys of tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) to be restricted from being forwarded.\nAn empty list represents no restriction is in place and either all or no tags will be forwarded depending on `forward_tags_restriction_list_type` parameter." + }, + "forward_tags_restriction_list_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALLOW_LIST", + "BLOCK_LIST" + ], + "properties": null, + "inner_properties": null, + "description": "How `forward_tags_restriction_list` parameter should be interpreted.\nIf `ALLOW_LIST`, then only tags whose keys on the forwarded logs match the ones on the restriction list\nare forwarded.\n\n`BLOCK_LIST` works the opposite way. It does not forward the tags matching the ones on the list." + }, + "forwarder_destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A custom destination's location to forward logs." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination query and filter. Logs matching this query are forwarded to the destination." + } + }, + "inner_properties": null, + "description": "The attributes associated with the custom destination." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_destination" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_destination`." + } + }, + "inner_properties": null, + "description": "The definition of a custom destination." + } + }, + "inner_properties": null, + "description": "New definition of the custom destination's fields." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateLogsCustomDestination'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/logs/config/custom-destinations/{custom_destination_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "custom_destination_id", + "tool_parameter_name": "custom_destination_id", + "description": "The ID of the custom destination.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom destination." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_custom_destination_definition", + "description": "New definition of the custom destination's fields.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether logs matching this custom destination should be forwarded or not." + }, + "forward_tags": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether tags from the forwarded logs should be forwarded or not." + }, + "forward_tags_restriction_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of [keys of tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) to be restricted from being forwarded.\nAn empty list represents no restriction is in place and either all or no tags will be forwarded depending on `forward_tags_restriction_list_type` parameter." + }, + "forward_tags_restriction_list_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALLOW_LIST", + "BLOCK_LIST" + ], + "properties": null, + "inner_properties": null, + "description": "How `forward_tags_restriction_list` parameter should be interpreted.\nIf `ALLOW_LIST`, then only tags whose keys on the forwarded logs match the ones on the restriction list\nare forwarded.\n\n`BLOCK_LIST` works the opposite way. It does not forward the tags matching the ones on the list." + }, + "forwarder_destination": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A custom destination's location to forward logs." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination query and filter. Logs matching this query are forwarded to the destination." + } + }, + "inner_properties": null, + "description": "The attributes associated with the custom destination." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom destination ID." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_destination" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_destination`." + } + }, + "inner_properties": null, + "description": "The definition of a custom destination." + } + }, + "inner_properties": null, + "description": "New definition of the custom destination's fields." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The custom destination.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of a custom destination.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes associated with the custom destination.\",\n \"properties\": {\n \"enabled\": {\n \"default\": true,\n \"description\": \"Whether logs matching this custom destination should be forwarded or not.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"forward_tags\": {\n \"default\": true,\n \"description\": \"Whether tags from the forwarded logs should be forwarded or not.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"forward_tags_restriction_list\": {\n \"default\": [],\n \"description\": \"List of [keys of tags](https://docs.datadoghq.com/getting_started/tagging/#define-tags) to be restricted from being forwarded.\\nAn empty list represents no restriction is in place and either all or no tags will be forwarded depending on `forward_tags_restriction_list_type` parameter.\",\n \"example\": [\n \"datacenter\",\n \"host\"\n ],\n \"items\": {\n \"description\": \"The [key part of a tag](https://docs.datadoghq.com/getting_started/tagging/#define-tags).\",\n \"type\": \"string\"\n },\n \"maxItems\": 10,\n \"minItems\": 0,\n \"type\": \"array\"\n },\n \"forward_tags_restriction_list_type\": {\n \"default\": \"ALLOW_LIST\",\n \"description\": \"How `forward_tags_restriction_list` parameter should be interpreted.\\nIf `ALLOW_LIST`, then only tags whose keys on the forwarded logs match the ones on the restriction list\\nare forwarded.\\n\\n`BLOCK_LIST` works the opposite way. It does not forward the tags matching the ones on the list.\",\n \"enum\": [\n \"ALLOW_LIST\",\n \"BLOCK_LIST\"\n ],\n \"example\": \"ALLOW_LIST\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALLOW_LIST\",\n \"BLOCK_LIST\"\n ]\n },\n \"forwarder_destination\": {\n \"description\": \"A custom destination's location to forward logs.\",\n \"oneOf\": [\n {\n \"description\": \"The HTTP destination.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Authentication method of the HTTP requests.\",\n \"oneOf\": [\n {\n \"description\": \"Basic access authentication.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The password of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-password\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"type\": {\n \"default\": \"basic\",\n \"description\": \"Type of the basic access authentication.\",\n \"enum\": [\n \"basic\"\n ],\n \"example\": \"basic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\"\n ]\n },\n \"username\": {\n \"description\": \"The username of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-username\",\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"required\": [\n \"type\",\n \"username\",\n \"password\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Custom header access authentication.\",\n \"properties\": {\n \"header_name\": {\n \"description\": \"The header name of the authentication.\",\n \"example\": \"CUSTOM-HEADER-NAME\",\n \"type\": \"string\"\n },\n \"header_value\": {\n \"description\": \"The header value of the authentication. This field is not returned by the API.\",\n \"example\": \"CUSTOM-HEADER-AUTHENTICATION-VALUE\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"type\": {\n \"default\": \"custom_header\",\n \"description\": \"Type of the custom header access authentication.\",\n \"enum\": [\n \"custom_header\"\n ],\n \"example\": \"custom_header\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_HEADER\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"header_name\",\n \"header_value\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"endpoint\": {\n \"description\": \"The destination for which logs will be forwarded to.\\nMust have HTTPS scheme and forwarding back to Datadog is not allowed.\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"http\",\n \"description\": \"Type of the HTTP destination.\",\n \"enum\": [\n \"http\"\n ],\n \"example\": \"http\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"endpoint\",\n \"auth\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Splunk HTTP Event Collector (HEC) destination.\",\n \"properties\": {\n \"access_token\": {\n \"description\": \"Access token of the Splunk HTTP Event Collector. This field is not returned by the API.\",\n \"example\": \"splunk_access_token\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"endpoint\": {\n \"description\": \"The destination for which logs will be forwarded to.\\nMust have HTTPS scheme and forwarding back to Datadog is not allowed.\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"Type of the Splunk HTTP Event Collector (HEC) destination.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"endpoint\",\n \"access_token\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Elasticsearch destination.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Basic access authentication.\",\n \"properties\": {\n \"password\": {\n \"description\": \"The password of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-password\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"username\": {\n \"description\": \"The username of the authentication. This field is not returned by the API.\",\n \"example\": \"datadog-custom-destination-username\",\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"required\": [\n \"username\",\n \"password\"\n ],\n \"type\": \"object\"\n },\n \"endpoint\": {\n \"description\": \"The destination for which logs will be forwarded to.\\nMust have HTTPS scheme and forwarding back to Datadog is not allowed.\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n },\n \"index_name\": {\n \"description\": \"Name of the Elasticsearch index (must follow [Elasticsearch's criteria](https://www.elastic.co/guide/en/elasticsearch/reference/8.11/indices-create-index.html#indices-create-api-path-params)).\",\n \"example\": \"nginx-logs\",\n \"type\": \"string\"\n },\n \"index_rotation\": {\n \"description\": \"Date pattern with US locale and UTC timezone to be appended to the index name after adding `-`\\n(that is, `${index_name}-${indexPattern}`).\\nYou can customize the index rotation naming pattern by choosing one of these options:\\n- Hourly: `yyyy-MM-dd-HH` (as an example, it would render: `2022-10-19-09`)\\n- Daily: `yyyy-MM-dd` (as an example, it would render: `2022-10-19`)\\n- Weekly: `yyyy-'W'ww` (as an example, it would render: `2022-W42`)\\n- Monthly: `yyyy-MM` (as an example, it would render: `2022-10`)\\n\\nIf this field is missing or is blank, it means that the index name will always be the same\\n(that is, no rotation).\",\n \"example\": \"yyyy-MM-dd\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"elasticsearch\",\n \"description\": \"Type of the Elasticsearch destination.\",\n \"enum\": [\n \"elasticsearch\"\n ],\n \"example\": \"elasticsearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ELASTICSEARCH\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"endpoint\",\n \"auth\",\n \"index_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Microsoft Sentinel destination.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"Client ID from the Datadog Azure integration.\",\n \"example\": \"9a2f4d83-2b5e-429e-a35a-2b3c4182db71\",\n \"type\": \"string\"\n },\n \"data_collection_endpoint\": {\n \"description\": \"Azure data collection endpoint.\",\n \"example\": \"https://my-dce-5kyl.eastus-1.ingest.monitor.azure.com\",\n \"type\": \"string\"\n },\n \"data_collection_rule_id\": {\n \"description\": \"Azure data collection rule ID.\",\n \"example\": \"dcr-000a00a000a00000a000000aa000a0aa\",\n \"type\": \"string\"\n },\n \"stream_name\": {\n \"description\": \"Azure stream name.\",\n \"example\": \"Custom-MyTable\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"tenant_id\": {\n \"description\": \"Tenant ID from the Datadog Azure integration.\",\n \"example\": \"f3c9a8a1-4c2e-4d2e-b911-9f3c28c3c8b2\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"microsoft_sentinel\",\n \"description\": \"Type of the Microsoft Sentinel destination.\",\n \"enum\": [\n \"microsoft_sentinel\"\n ],\n \"example\": \"microsoft_sentinel\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MICROSOFT_SENTINEL\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"tenant_id\",\n \"client_id\",\n \"data_collection_endpoint\",\n \"data_collection_rule_id\",\n \"stream_name\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"The custom destination name.\",\n \"example\": \"Nginx logs\",\n \"type\": \"string\"\n },\n \"query\": {\n \"default\": \"\",\n \"description\": \"The custom destination query and filter. Logs matching this query are forwarded to the destination.\",\n \"example\": \"source:nginx\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The custom destination ID.\",\n \"example\": \"be5d7a69-d0c8-4d4d-8ee8-bba292d98139\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"custom_destination\",\n \"description\": \"The type of the resource. The value should always be `custom_destination`.\",\n \"enum\": [\n \"custom_destination\"\n ],\n \"example\": \"custom_destination\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_DESTINATION\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the custom destination's fields.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMetricTagConfiguration.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMetricTagConfiguration.json new file mode 100644 index 00000000..55c88ed1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMetricTagConfiguration.json @@ -0,0 +1,353 @@ +{ + "name": "UpdateMetricTagConfiguration", + "fully_qualified_name": "DatadogApi.UpdateMetricTagConfiguration@0.1.0", + "description": "Update the tag configuration of a metric in Datadog.\n\nThis tool updates the tag configuration for a specific metric in Datadog. It supports updating percentile or custom aggregations, and changing tag exclusion modes. Use it when you need to manage or modify metric tags, especially to switch from an allow-list to a deny-list. Requires specific permissions and an existing configuration.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "Specify the name of the metric whose tag configuration you wish to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_name" + }, + { + "name": "metric_tag_configuration", + "required": true, + "description": "JSON object defining the metric tag configuration to update. Includes attributes like `aggregations`, `exclude_tags_mode`, `include_percentiles`, `tags`, `id` (the metric name), and `type` (`manage_tags`).", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "space": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A space aggregation for use in query." + }, + "time": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "count", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A time aggregation for use in query." + } + }, + "description": "Deprecated. You no longer need to configure specific time and space aggregations for Metrics Without Limits." + }, + "exclude_tags_mode": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration will exclude the configured tags and include any other submitted tags.\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\nDefaults to false. Requires `tags` property." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include/exclude percentiles for a distribution metric.\nDefaults to false. Can only be applied to metrics that have a `metric_type` of `distribution`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tag keys that will be queryable for your metric." + } + }, + "inner_properties": null, + "description": "Object containing the definition of a metric tag configuration to be updated." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric name for this resource." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "manage_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric tag configuration resource type." + } + }, + "inner_properties": null, + "description": "Object for a single tag configuration to be edited." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateTagConfiguration'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/metrics/{metric_name}/tags", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "metric_name", + "tool_parameter_name": "metric_name", + "description": "The name of the metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "metric_tag_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "aggregations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "space": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A space aggregation for use in query." + }, + "time": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "avg", + "count", + "max", + "min", + "sum" + ], + "properties": null, + "inner_properties": null, + "description": "A time aggregation for use in query." + } + }, + "description": "Deprecated. You no longer need to configure specific time and space aggregations for Metrics Without Limits." + }, + "exclude_tags_mode": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When set to true, the configuration will exclude the configured tags and include any other submitted tags.\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\nDefaults to false. Requires `tags` property." + }, + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include/exclude percentiles for a distribution metric.\nDefaults to false. Can only be applied to metrics that have a `metric_type` of `distribution`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of tag keys that will be queryable for your metric." + } + }, + "inner_properties": null, + "description": "Object containing the definition of a metric tag configuration to be updated." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The metric name for this resource." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "manage_tags" + ], + "properties": null, + "inner_properties": null, + "description": "The metric tag configuration resource type." + } + }, + "inner_properties": null, + "description": "Object for a single tag configuration to be edited." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the metric that you would like to edit the tag configuration on.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single tag configuration to be edited.\",\n \"example\": {\n \"attributes\": {\n \"group_by\": [\n \"app\",\n \"datacenter\"\n ],\n \"include_percentiles\": false\n },\n \"id\": \"http.endpoint.request\",\n \"type\": \"manage_tags\"\n },\n \"properties\": {\n \"attributes\": {\n \"description\": \"Object containing the definition of a metric tag configuration to be updated.\",\n \"properties\": {\n \"aggregations\": {\n \"description\": \"Deprecated. You no longer need to configure specific time and space aggregations for Metrics Without Limits.\",\n \"example\": [\n {\n \"space\": \"sum\",\n \"time\": \"sum\"\n },\n {\n \"space\": \"sum\",\n \"time\": \"count\"\n }\n ],\n \"items\": {\n \"description\": \"A time and space aggregation combination for use in query.\",\n \"example\": {\n \"space\": \"sum\",\n \"time\": \"sum\"\n },\n \"properties\": {\n \"space\": {\n \"description\": \"A space aggregation for use in query.\",\n \"enum\": [\n \"avg\",\n \"max\",\n \"min\",\n \"sum\"\n ],\n \"example\": \"sum\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AVG\",\n \"MAX\",\n \"MIN\",\n \"SUM\"\n ]\n },\n \"time\": {\n \"description\": \"A time aggregation for use in query.\",\n \"enum\": [\n \"avg\",\n \"count\",\n \"max\",\n \"min\",\n \"sum\"\n ],\n \"example\": \"sum\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AVG\",\n \"COUNT\",\n \"MAX\",\n \"MIN\",\n \"SUM\"\n ]\n }\n },\n \"required\": [\n \"time\",\n \"space\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"exclude_tags_mode\": {\n \"description\": \"When set to true, the configuration will exclude the configured tags and include any other submitted tags.\\nWhen set to false, the configuration will include the configured tags and exclude any other submitted tags.\\nDefaults to false. Requires `tags` property.\",\n \"type\": \"boolean\"\n },\n \"include_percentiles\": {\n \"description\": \"Toggle to include/exclude percentiles for a distribution metric.\\nDefaults to false. Can only be applied to metrics that have a `metric_type` of `distribution`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"tags\": {\n \"default\": [],\n \"description\": \"A list of tag keys that will be queryable for your metric.\",\n \"example\": [\n \"app\",\n \"datacenter\"\n ],\n \"items\": {\n \"description\": \"Tag keys to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The metric name for this resource.\",\n \"example\": \"test.metric.latency\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"manage_tags\",\n \"description\": \"The metric tag configuration resource type.\",\n \"enum\": [\n \"manage_tags\"\n ],\n \"example\": \"manage_tags\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MANAGE_TAGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMonitorNotificationRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMonitorNotificationRule.json new file mode 100644 index 00000000..6f45fb92 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMonitorNotificationRule.json @@ -0,0 +1,365 @@ +{ + "name": "UpdateMonitorNotificationRule", + "fully_qualified_name": "DatadogApi.UpdateMonitorNotificationRule@0.1.0", + "description": "Updates a Datadog monitor notification rule.\n\nUse this tool to update a notification rule for a monitor in Datadog by specifying the `rule_id`. It should be called when you need to change the settings or behavior of an existing monitor notification rule.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_notification_rule_id", + "required": true, + "description": "ID of the monitor notification rule to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor notification rule to update." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "update_rule_request_body", + "required": true, + "description": "JSON object specifying attributes, id, type, recipients, and conditions to update the notification rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditional_recipients": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the monitor applied." + } + }, + "description": "Conditions of the notification rule." + }, + "fallback_recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Use conditional recipients to define different recipients for different situations." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter used to associate the notification rule with monitors." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the monitor notification rule." + }, + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Attributes of the monitor notification rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the monitor notification rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-notification-rule" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor notification rule resource type." + } + }, + "inner_properties": null, + "description": "Object to update a monitor notification rule." + } + }, + "inner_properties": null, + "description": "Request body to update the monitor notification rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateMonitorNotificationRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/notification_rule/{rule_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "monitor_notification_rule_id", + "description": "ID of the monitor notification rule to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor notification rule to update." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_rule_request_body", + "description": "Request body to update the monitor notification rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditional_recipients": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope to which the monitor applied." + } + }, + "description": "Conditions of the notification rule." + }, + "fallback_recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Use conditional recipients to define different recipients for different situations." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Filter used to associate the notification rule with monitors." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the monitor notification rule." + }, + "recipients": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'." + } + }, + "inner_properties": null, + "description": "Attributes of the monitor notification rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the monitor notification rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-notification-rule" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor notification rule resource type." + } + }, + "inner_properties": null, + "description": "Object to update a monitor notification rule." + } + }, + "inner_properties": null, + "description": "Request body to update the monitor notification rule." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for updating a monitor notification rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object to update a monitor notification rule.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": false,\n \"description\": \"Attributes of the monitor notification rule.\",\n \"properties\": {\n \"conditional_recipients\": {\n \"description\": \"Use conditional recipients to define different recipients for different situations.\",\n \"properties\": {\n \"conditions\": {\n \"description\": \"Conditions of the notification rule.\",\n \"items\": {\n \"description\": \"Conditions for `conditional_recipients`.\",\n \"properties\": {\n \"recipients\": {\n \"description\": \"A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'.\",\n \"example\": [\n \"slack-test-channel\",\n \"jira-test\"\n ],\n \"items\": {\n \"description\": \"individual recipient.\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n },\n \"scope\": {\n \"description\": \"The scope to which the monitor applied.\",\n \"example\": \"transition_type:alert\",\n \"maxLength\": 3000,\n \"minLength\": 1,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"scope\",\n \"recipients\"\n ],\n \"type\": \"object\"\n },\n \"maxItems\": 10,\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"fallback_recipients\": {\n \"description\": \"A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'.\",\n \"example\": [\n \"slack-test-channel\",\n \"jira-test\"\n ],\n \"items\": {\n \"description\": \"individual recipient.\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n }\n },\n \"required\": [\n \"conditions\"\n ],\n \"type\": \"object\"\n },\n \"filter\": {\n \"description\": \"Filter used to associate the notification rule with monitors.\",\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"Filter monitors by tags. Monitors must match all tags.\",\n \"properties\": {\n \"tags\": {\n \"description\": \"A list of monitor tags.\",\n \"example\": [\n \"team:product\",\n \"host:abc\"\n ],\n \"items\": {\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n }\n },\n \"required\": [\n \"tags\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"The name of the monitor notification rule.\",\n \"example\": \"A notification rule name\",\n \"maxLength\": 1000,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"recipients\": {\n \"description\": \"A list of recipients to notify. Uses the same format as the monitor `message` field. Must not start with an '@'.\",\n \"example\": [\n \"slack-test-channel\",\n \"jira-test\"\n ],\n \"items\": {\n \"description\": \"individual recipient.\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"maxItems\": 20,\n \"minItems\": 1,\n \"type\": \"array\",\n \"uniqueItems\": true\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the monitor notification rule.\",\n \"example\": \"00000000-0000-1234-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"monitor-notification-rule\",\n \"description\": \"Monitor notification rule resource type.\",\n \"enum\": [\n \"monitor-notification-rule\"\n ],\n \"example\": \"monitor-notification-rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_NOTIFICATION_RULE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Request body to update the monitor notification rule.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMonitorUserTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMonitorUserTemplate.json new file mode 100644 index 00000000..2dfc1fb7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMonitorUserTemplate.json @@ -0,0 +1,379 @@ +{ + "name": "UpdateMonitorUserTemplate", + "fully_qualified_name": "DatadogApi.UpdateMonitorUserTemplate@0.1.0", + "description": "Creates a new version of a monitor user template in Datadog.\n\nUse this tool to create a new version of an existing monitor user template in Datadog when updates or changes are needed to a monitor's settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_user_template_id", + "required": true, + "description": "ID of the monitor user template to update with a new version.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + }, + { + "name": "monitor_user_template_data", + "required": true, + "description": "A JSON object containing all necessary information for the monitor user template, including its attributes, id, and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateMonitorUserTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/template/{template_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "template_id", + "tool_parameter_name": "monitor_user_template_id", + "description": "ID of the monitor user template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "monitor_user_template_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating a new monitor user template version.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Monitor user template data.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": false,\n \"description\": \"Attributes for a monitor user template.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A brief description of the monitor user template.\",\n \"example\": \"This is a template for monitoring user activity.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"monitor_definition\": {\n \"additionalProperties\": {},\n \"description\": \"A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).\",\n \"example\": {\n \"message\": \"You may need to add web hosts if this is consistently high.\",\n \"name\": \"Bytes received on host0\",\n \"query\": \"avg(last_5m):sum:system.net.bytes_rcvd{host:host0} > 100\",\n \"type\": \"query alert\"\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"The definition of `MonitorUserTemplateTags` object.\",\n \"example\": [\n \"product:Our Custom App\",\n \"integration:Azure\"\n ],\n \"items\": {\n \"description\": \"Tags associated with the monitor user template. Must be key value. Only 'product' and 'integration' keys are\\nallowed. The value is the name of the category to display the template under. Integrations can be filtered out in the UI.\\n(Review note: This modeling of 'categories' is subject to change.)\",\n \"example\": \"us-east1\",\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"template_variables\": {\n \"description\": \"The definition of `MonitorUserTemplateTemplateVariables` object.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"List of objects representing template variables on the monitor which can have selectable values.\",\n \"properties\": {\n \"available_values\": {\n \"description\": \"Available values for the variable.\",\n \"example\": [\n \"value1\",\n \"value2\"\n ],\n \"items\": {\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"defaults\": {\n \"description\": \"Default values of the template variable.\",\n \"example\": [\n \"defaultValue\"\n ],\n \"items\": {\n \"minLength\": 0,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the template variable.\",\n \"example\": \"regionName\",\n \"type\": \"string\"\n },\n \"tag_key\": {\n \"description\": \"The tag key associated with the variable. This works the same as dashboard template variables.\",\n \"example\": \"datacenter\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"title\": {\n \"description\": \"The title of the monitor user template.\",\n \"example\": \"Postgres CPU Monitor\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"monitor_definition\",\n \"tags\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier.\",\n \"example\": \"00000000-0000-1234-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"monitor-user-template\",\n \"description\": \"Monitor user template resource type.\",\n \"enum\": [\n \"monitor-user-template\"\n ],\n \"example\": \"monitor-user-template\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_USER_TEMPLATE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMsTeamsTenantHandle.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMsTeamsTenantHandle.json new file mode 100644 index 00000000..f3fa7872 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateMsTeamsTenantHandle.json @@ -0,0 +1,295 @@ +{ + "name": "UpdateMsTeamsTenantHandle", + "fully_qualified_name": "DatadogApi.UpdateMsTeamsTenantHandle@0.1.0", + "description": "Update a Microsoft Teams tenant-based handle in Datadog.\n\nUse this tool to update a tenant-based handle for the Datadog Microsoft Teams integration. This is useful when you need to modify existing handle configurations for tenant-based integrations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "tenant_handle_id", + "required": true, + "description": "The unique ID of the tenant-based handle to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle_id" + }, + { + "name": "tenant_handle_resource_type", + "required": true, + "description": "Specifies the resource type for the tenant-based handle, usually 'tenant-based-handle'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tenant-based-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the tenant-based handle resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "channel_id", + "required": false, + "description": "The ID of the Microsoft Teams channel to update for the tenant-based handle.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Channel id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.channel_id" + }, + { + "name": "tenant_handle_name", + "required": false, + "description": "Tenant-based handle name for the Microsoft Teams integration in Datadog. This specifies the handle's identifier within the configuration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant-based handle name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "team_id", + "required": false, + "description": "The Microsoft Teams Team ID for the tenant-based handle. Required for updating handle configurations.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Team id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.team_id" + }, + { + "name": "tenant_id", + "required": false, + "description": "The unique identifier for the tenant. Used to specify which tenant's handle is being updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.tenant_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateTenantBasedHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/tenant-based-handles/{handle_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "handle_id", + "tool_parameter_name": "tenant_handle_id", + "description": "Your tenant-based handle id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your tenant-based handle id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.channel_id", + "tool_parameter_name": "channel_id", + "description": "Channel id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Channel id." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "tenant_handle_name", + "description": "Tenant-based handle name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant-based handle name." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.team_id", + "tool_parameter_name": "team_id", + "description": "Team id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Team id." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.tenant_id", + "tool_parameter_name": "tenant_id", + "description": "Tenant id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tenant id." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "tenant_handle_resource_type", + "description": "Specifies the tenant-based handle resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "tenant-based-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the tenant-based handle resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "tenant-based-handle", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update tenant-based handle request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Tenant-based handle data from a response.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Tenant-based handle attributes.\",\n \"properties\": {\n \"channel_id\": {\n \"description\": \"Channel id.\",\n \"example\": \"fake-channel-id\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Tenant-based handle name.\",\n \"example\": \"fake-handle-name\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"team_id\": {\n \"description\": \"Team id.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"Tenant id.\",\n \"example\": \"00000000-0000-0000-0000-000000000001\",\n \"maxLength\": 255,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"tenant-based-handle\",\n \"description\": \"Specifies the tenant-based handle resource type.\",\n \"enum\": [\n \"tenant-based-handle\"\n ],\n \"example\": \"tenant-based-handle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TENANT_BASED_HANDLE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Tenant-based handle payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateNotificationTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateNotificationTemplate.json new file mode 100644 index 00000000..4e36c55b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateNotificationTemplate.json @@ -0,0 +1,361 @@ +{ + "name": "UpdateNotificationTemplate", + "fully_qualified_name": "DatadogApi.UpdateNotificationTemplate@0.1.0", + "description": "Update attributes of a notification template.\n\nUse this tool to update an existing notification template's attributes in Datadog's incident management system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "notification_template_id", + "required": true, + "description": "The unique identifier of the notification template to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "template_id", + "required": true, + "description": "The unique identifier of the notification template to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "notification_template_resource_type", + "required": true, + "description": "Specifies the type of the notification template resource. Must be 'notification_templates'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "relationships_to_include", + "required": false, + "description": "Comma-separated list of relationships to include. Valid values: `created_by_user`, `last_modified_by_user`, `incident_type`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + }, + { + "name": "notification_template_category", + "required": false, + "description": "The category of the notification template to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.category" + }, + { + "name": "notification_template_content", + "required": false, + "description": "The content body of the notification template to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The content body of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.content" + }, + { + "name": "notification_template_name", + "required": false, + "description": "The name of the notification template to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "notification_template_subject", + "required": false, + "description": "The subject line of the notification template to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject line of the notification template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.subject" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateIncidentNotificationTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/incidents/config/notification-templates/{id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "relationships_to_include", + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of relationships to include. Supported values: `created_by_user`, `last_modified_by_user`, `incident_type`" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "id", + "tool_parameter_name": "notification_template_id", + "description": "The ID of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the notification template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.category", + "tool_parameter_name": "notification_template_category", + "description": "The category of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the notification template." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.content", + "tool_parameter_name": "notification_template_content", + "description": "The content body of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The content body of the notification template." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "notification_template_name", + "description": "The name of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the notification template." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.subject", + "tool_parameter_name": "notification_template_subject", + "description": "The subject line of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The subject line of the notification template." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "template_id", + "description": "The unique identifier of the notification template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the notification template." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "notification_template_resource_type", + "description": "Notification templates resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "notification_templates" + ], + "properties": null, + "inner_properties": null, + "description": "Notification templates resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update request for a notification template.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Notification template data for an update request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The attributes to update on a notification template.\",\n \"properties\": {\n \"category\": {\n \"description\": \"The category of the notification template.\",\n \"example\": \"update\",\n \"type\": \"string\"\n },\n \"content\": {\n \"description\": \"The content body of the notification template.\",\n \"example\": \"Incident Status Update:\\n\\nTitle: {{incident.title}}\\nNew Status: {{incident.state}}\\nSeverity: {{incident.severity}}\\nServices: {{incident.services}}\\nCommander: {{incident.commander}}\\n\\nFor more details, visit the incident page.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the notification template.\",\n \"example\": \"Incident Status Update Template\",\n \"type\": \"string\"\n },\n \"subject\": {\n \"description\": \"The subject line of the notification template.\",\n \"example\": \"Incident Update: {{incident.title}} - {{incident.state}}\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the notification template.\",\n \"example\": \"00000000-0000-0000-0000-000000000001\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Notification templates resource type.\",\n \"enum\": [\n \"notification_templates\"\n ],\n \"example\": \"notification_templates\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NOTIFICATION_TEMPLATES\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOktaAccount.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOktaAccount.json new file mode 100644 index 00000000..87e639cd --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOktaAccount.json @@ -0,0 +1,328 @@ +{ + "name": "UpdateOktaAccount", + "fully_qualified_name": "DatadogApi.UpdateOktaAccount@0.1.0", + "description": "Update details of an existing Okta account.\n\nCall this tool to update information for a specific Okta account using its account ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "account_id", + "required": true, + "description": "The unique identifier for the Okta account to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "account_id" + }, + { + "name": "okta_account_api_key", + "required": false, + "description": "The API key for authenticating the Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.api_key" + }, + { + "name": "authorization_method", + "required": false, + "description": "Specify the authorization method for the Okta account. This is a required string value.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The authorization method for an Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.auth_method" + }, + { + "name": "okta_client_id", + "required": false, + "description": "The Client ID of the Okta app integration to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Client ID of an Okta app integration." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.client_id" + }, + { + "name": "okta_client_secret", + "required": false, + "description": "The client secret for the Okta app integration to be updated. Ensure this is kept secure.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client secret of an Okta app integration." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.client_secret" + }, + { + "name": "okta_domain", + "required": false, + "description": "The domain associated with the Okta account to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain associated with an Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.domain" + }, + { + "name": "account_type", + "required": false, + "description": "Specify the type of the Okta account. Must be 'okta-accounts'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "okta-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "Account type for an Okta account." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateOktaAccount'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integrations/okta/accounts/{account_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "account_id", + "tool_parameter_name": "account_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.api_key", + "tool_parameter_name": "okta_account_api_key", + "description": "The API key of the Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The API key of the Okta account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.auth_method", + "tool_parameter_name": "authorization_method", + "description": "The authorization method for an Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The authorization method for an Okta account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.client_id", + "tool_parameter_name": "okta_client_id", + "description": "The Client ID of an Okta app integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Client ID of an Okta app integration." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.client_secret", + "tool_parameter_name": "okta_client_secret", + "description": "The client secret of an Okta app integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client secret of an Okta app integration." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.domain", + "tool_parameter_name": "okta_domain", + "description": "The domain associated with an Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The domain associated with an Okta account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "account_type", + "description": "Account type for an Okta account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "okta-accounts" + ], + "properties": null, + "inner_properties": null, + "description": "Account type for an Okta account." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "okta-accounts", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Payload schema when updating an Okta account.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data object for updating an Okta account.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes object for updating an Okta account.\",\n \"properties\": {\n \"api_key\": {\n \"description\": \"The API key of the Okta account.\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"auth_method\": {\n \"description\": \"The authorization method for an Okta account.\",\n \"example\": \"oauth\",\n \"type\": \"string\"\n },\n \"client_id\": {\n \"description\": \"The Client ID of an Okta app integration.\",\n \"type\": \"string\"\n },\n \"client_secret\": {\n \"description\": \"The client secret of an Okta app integration.\",\n \"type\": \"string\",\n \"writeOnly\": true\n },\n \"domain\": {\n \"description\": \"The domain associated with an Okta account.\",\n \"example\": \"https://dev-test.okta.com/\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"auth_method\",\n \"domain\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"okta-accounts\",\n \"description\": \"Account type for an Okta account.\",\n \"enum\": [\n \"okta-accounts\"\n ],\n \"example\": \"okta-accounts\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OKTA_ACCOUNTS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOnCallEscalationPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOnCallEscalationPolicy.json new file mode 100644 index 00000000..3ea2adfc --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOnCallEscalationPolicy.json @@ -0,0 +1,534 @@ +{ + "name": "UpdateOnCallEscalationPolicy", + "fully_qualified_name": "DatadogApi.UpdateOnCallEscalationPolicy@0.1.0", + "description": "Update an On-Call escalation policy in Datadog.\n\nThis tool allows updating an existing On-Call escalation policy in Datadog. Use it to modify the details of a specific policy by providing the necessary updates.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "escalation_policy_id", + "required": true, + "description": "The unique identifier of the escalation policy to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the escalation policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + }, + { + "name": "escalation_policy_update_data", + "required": true, + "description": "JSON object containing the updated attributes, ID, relationships, and type for the escalation policy.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Specifies the name of the escalation policy." + }, + "resolve_page_on_policy_end": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the page is automatically resolved when the policy ends." + }, + "retries": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies how many times the escalation sequence is retried if there is no response." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "assignment": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default", + "round-robin" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies how this escalation step will assign targets (example `default` or `round-robin`)." + }, + "escalate_after_seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines how many seconds to wait before escalating to the next step." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier of this step." + }, + "targets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier for this target." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users", + "schedules", + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the type of escalation target (example `users`, `schedules`, or `teams`)." + } + }, + "description": "Specifies the collection of escalation targets for this step." + } + }, + "description": "A list of escalation steps, each defining assignment, escalation timeout, and targets." + } + }, + "inner_properties": null, + "description": "Defines the attributes that can be updated for an escalation policy, such as description, name, resolution behavior, retries, and steps." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier of the escalation policy being updated." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Represents relationships in an escalation policy update request, including references to teams." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policies" + ], + "properties": null, + "inner_properties": null, + "description": "Indicates that the resource is of type `policies`." + } + }, + "inner_properties": null, + "description": "Represents the data for updating an existing escalation policy, including its ID, attributes, relationships, and resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "include_relationships", + "required": false, + "description": "Comma-separated list of relationships to be returned. Options: `teams`, `steps`, `steps.targets`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateOnCallEscalationPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/escalation-policies/{policy_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "include_relationships", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `steps`, `steps.targets`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "policy_id", + "tool_parameter_name": "escalation_policy_id", + "description": "The ID of the escalation policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the escalation policy" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "escalation_policy_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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": "Specifies the name of the escalation policy." + }, + "resolve_page_on_policy_end": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the page is automatically resolved when the policy ends." + }, + "retries": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies how many times the escalation sequence is retried if there is no response." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "assignment": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default", + "round-robin" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies how this escalation step will assign targets (example `default` or `round-robin`)." + }, + "escalate_after_seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines how many seconds to wait before escalating to the next step." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier of this step." + }, + "targets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier for this target." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users", + "schedules", + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the type of escalation target (example `users`, `schedules`, or `teams`)." + } + }, + "description": "Specifies the collection of escalation targets for this step." + } + }, + "description": "A list of escalation steps, each defining assignment, escalation timeout, and targets." + } + }, + "inner_properties": null, + "description": "Defines the attributes that can be updated for an escalation policy, such as description, name, resolution behavior, retries, and steps." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the unique identifier of the escalation policy being updated." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Represents relationships in an escalation policy update request, including references to teams." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policies" + ], + "properties": null, + "inner_properties": null, + "description": "Indicates that the resource is of type `policies`." + } + }, + "inner_properties": null, + "description": "Represents the data for updating an existing escalation policy, including its ID, attributes, relationships, and resource type." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Represents a request to update an existing escalation policy, including the updated policy data.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"name\": \"Escalation Policy 1\",\n \"resolve_page_on_policy_end\": false,\n \"retries\": 2,\n \"steps\": [\n {\n \"assignment\": \"default\",\n \"escalate_after_seconds\": 3600,\n \"id\": \"00000000-aba1-0000-0000-000000000000\",\n \"targets\": [\n {\n \"id\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"users\"\n },\n {\n \"id\": \"00000000-aba2-0000-0000-000000000000\",\n \"type\": \"schedules\"\n }\n ]\n }\n ]\n },\n \"id\": \"a3000000-0000-0000-0000-000000000000\",\n \"relationships\": {\n \"teams\": {\n \"data\": [\n {\n \"id\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"teams\"\n }\n ]\n }\n },\n \"type\": \"policies\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Represents the data for updating an existing escalation policy, including its ID, attributes, relationships, and resource type.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Defines the attributes that can be updated for an escalation policy, such as description, name, resolution behavior, retries, and steps.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Specifies the name of the escalation policy.\",\n \"example\": \"On-Call Escalation Policy\",\n \"type\": \"string\"\n },\n \"resolve_page_on_policy_end\": {\n \"description\": \"Indicates whether the page is automatically resolved when the policy ends.\",\n \"type\": \"boolean\"\n },\n \"retries\": {\n \"description\": \"Specifies how many times the escalation sequence is retried if there is no response.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"steps\": {\n \"description\": \"A list of escalation steps, each defining assignment, escalation timeout, and targets.\",\n \"items\": {\n \"description\": \"Defines a single escalation step within an escalation policy update request. Contains assignment strategy, escalation timeout, an optional step ID, and a list of targets.\",\n \"properties\": {\n \"assignment\": {\n \"description\": \"Specifies how this escalation step will assign targets (example `default` or `round-robin`).\",\n \"enum\": [\n \"default\",\n \"round-robin\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DEFAULT\",\n \"ROUND_ROBIN\"\n ]\n },\n \"escalate_after_seconds\": {\n \"description\": \"Defines how many seconds to wait before escalating to the next step.\",\n \"example\": 3600,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"id\": {\n \"description\": \"Specifies the unique identifier of this step.\",\n \"example\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"targets\": {\n \"description\": \"Specifies the collection of escalation targets for this step.\",\n \"items\": {\n \"description\": \"Defines a single escalation target within a step for an escalation policy creation request. Contains `id` and `type`.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Specifies the unique identifier for this target.\",\n \"example\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Specifies the type of escalation target (example `users`, `schedules`, or `teams`).\",\n \"enum\": [\n \"users\",\n \"schedules\",\n \"teams\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\",\n \"SCHEDULES\",\n \"TEAMS\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"targets\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"steps\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Specifies the unique identifier of the escalation policy being updated.\",\n \"example\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Represents relationships in an escalation policy update request, including references to teams.\",\n \"properties\": {\n \"teams\": {\n \"description\": \"Associates teams with this schedule in a data structure.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An array of team references for this schedule.\",\n \"items\": {\n \"description\": \"Relates a team to this schedule, identified by `id` and `type` (must be `teams`).\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the team in this relationship.\",\n \"example\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"teams\",\n \"description\": \"Teams resource type.\",\n \"enum\": [\n \"teams\"\n ],\n \"example\": \"teams\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAMS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"policies\",\n \"description\": \"Indicates that the resource is of type `policies`.\",\n \"enum\": [\n \"policies\"\n ],\n \"example\": \"policies\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"POLICIES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOnCallSchedule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOnCallSchedule.json new file mode 100644 index 00000000..f53fbba2 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOnCallSchedule.json @@ -0,0 +1,702 @@ +{ + "name": "UpdateOnCallSchedule", + "fully_qualified_name": "DatadogApi.UpdateOnCallSchedule@0.1.0", + "description": "Update an existing on-call schedule in Datadog.\n\nUse this tool to update the details of an existing on-call schedule in Datadog. It should be called when there is a need to modify the configuration or timing of an on-call schedule.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "schedule_id", + "required": true, + "description": "The unique identifier for the on-call schedule to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "schedule_id" + }, + { + "name": "schedule_update_details", + "required": true, + "description": "JSON object containing the updated schedule details, including attributes like name, time zone, and layers. It includes information about relationships and the schedule ID.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When this updated layer takes effect (ISO 8601 format)." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When this updated layer should stop being active (ISO 8601 format)." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for the layer being updated." + }, + "interval": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "days": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of days in each rotation cycle." + }, + "seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any additional seconds for the rotation cycle (up to 30 days)." + } + }, + "inner_properties": null, + "description": "Defines how often the rotation repeats, using a combination of days and optional seconds. Should be at least 1 hour." + }, + "members": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user's ID." + } + }, + "inner_properties": null, + "description": "Identifies the user participating in this layer as a single object with an `id`." + } + }, + "description": "The members assigned to this layer." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for this layer (for example, \"Secondary Coverage\")." + }, + "restrictions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "end_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the ending time for this restriction." + }, + "start_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "start_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the starting time for this restriction." + } + }, + "description": "Any time restrictions that define when this layer is active." + }, + "rotation_start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time at which the rotation begins (ISO 8601 format)." + } + }, + "description": "The updated list of layers (rotations) for this schedule." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short name for the schedule." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time zone used when interpreting rotation times." + } + }, + "inner_properties": null, + "description": "Defines the updatable attributes for a schedule, such as name, time zone, and layers." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule to be updated." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Houses relationships for the schedule update, typically referencing teams." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "schedules" + ], + "properties": null, + "inner_properties": null, + "description": "Schedules resource type." + } + }, + "inner_properties": null, + "description": "Contains all data needed to update an existing schedule, including its attributes (such as name and time zone) and any relationships to teams." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "relationships_to_include", + "required": false, + "description": "Comma-separated relationships to return, e.g., `teams`, `layers`. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "include" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateOnCallSchedule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/on-call/schedules/{schedule_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "include", + "tool_parameter_name": "relationships_to_include", + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Comma-separated list of included relationships to be returned. Allowed values: `teams`, `layers`, `layers.members`, `layers.members.user`." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "schedule_id", + "tool_parameter_name": "schedule_id", + "description": "The ID of the schedule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "schedule_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "effective_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When this updated layer takes effect (ISO 8601 format)." + }, + "end_date": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When this updated layer should stop being active (ISO 8601 format)." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier for the layer being updated." + }, + "interval": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "days": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of days in each rotation cycle." + }, + "seconds": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any additional seconds for the rotation cycle (up to 30 days)." + } + }, + "inner_properties": null, + "description": "Defines how often the rotation repeats, using a combination of days and optional seconds. Should be at least 1 hour." + }, + "members": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "user": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user's ID." + } + }, + "inner_properties": null, + "description": "Identifies the user participating in this layer as a single object with an `id`." + } + }, + "description": "The members assigned to this layer." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for this layer (for example, \"Secondary Coverage\")." + }, + "restrictions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "end_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "end_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the ending time for this restriction." + }, + "start_day": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "properties": null, + "inner_properties": null, + "description": "A day of the week." + }, + "start_time": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specifies the starting time for this restriction." + } + }, + "description": "Any time restrictions that define when this layer is active." + }, + "rotation_start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The date/time at which the rotation begins (ISO 8601 format)." + } + }, + "description": "The updated list of layers (rotations) for this schedule." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A short name for the schedule." + }, + "time_zone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time zone used when interpreting rotation times." + } + }, + "inner_properties": null, + "description": "Defines the updatable attributes for a schedule, such as name, time zone, and layers." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the schedule to be updated." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "teams": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the team in this relationship." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "teams" + ], + "properties": null, + "inner_properties": null, + "description": "Teams resource type." + } + }, + "description": "An array of team references for this schedule." + } + }, + "inner_properties": null, + "description": "Associates teams with this schedule in a data structure." + } + }, + "inner_properties": null, + "description": "Houses relationships for the schedule update, typically referencing teams." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "schedules" + ], + "properties": null, + "inner_properties": null, + "description": "Schedules resource type." + } + }, + "inner_properties": null, + "description": "Contains all data needed to update an existing schedule, including its attributes (such as name and time zone) and any relationships to teams." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A top-level wrapper for a schedule update request, referring to the `data` object with the new details.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"layers\": [\n {\n \"effective_date\": \"2025-02-03T05:00:00Z\",\n \"end_date\": \"2025-12-31T00:00:00Z\",\n \"interval\": {\n \"seconds\": 3600\n },\n \"members\": [\n {\n \"user\": {\n \"id\": \"00000000-aba1-0000-0000-000000000000\"\n }\n }\n ],\n \"name\": \"Layer 1\",\n \"restrictions\": [\n {\n \"end_day\": \"friday\",\n \"end_time\": \"17:00:00\",\n \"start_day\": \"monday\",\n \"start_time\": \"09:00:00\"\n }\n ],\n \"rotation_start\": \"2025-02-01T00:00:00Z\"\n }\n ],\n \"name\": \"On-Call Schedule Updated\",\n \"time_zone\": \"America/New_York\"\n },\n \"id\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"relationships\": {\n \"teams\": {\n \"data\": [\n {\n \"id\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"teams\"\n }\n ]\n }\n },\n \"type\": \"schedules\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Contains all data needed to update an existing schedule, including its attributes (such as name and time zone) and any relationships to teams.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Defines the updatable attributes for a schedule, such as name, time zone, and layers.\",\n \"properties\": {\n \"layers\": {\n \"description\": \"The updated list of layers (rotations) for this schedule.\",\n \"items\": {\n \"description\": \"Represents a layer within a schedule update, including rotation details, members,\\nand optional restrictions.\",\n \"properties\": {\n \"effective_date\": {\n \"description\": \"When this updated layer takes effect (ISO 8601 format).\",\n \"example\": \"2025-02-03T05:00:00Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"end_date\": {\n \"description\": \"When this updated layer should stop being active (ISO 8601 format).\",\n \"example\": \"2025-12-31T00:00:00Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A unique identifier for the layer being updated.\",\n \"example\": \"00000000-0000-0000-0000-000000000001\",\n \"type\": \"string\"\n },\n \"interval\": {\n \"description\": \"Defines how often the rotation repeats, using a combination of days and optional seconds. Should be at least 1 hour.\",\n \"properties\": {\n \"days\": {\n \"description\": \"The number of days in each rotation cycle.\",\n \"example\": 1,\n \"format\": \"int32\",\n \"maximum\": 400,\n \"type\": \"integer\"\n },\n \"seconds\": {\n \"description\": \"Any additional seconds for the rotation cycle (up to 30 days).\",\n \"example\": 300,\n \"format\": \"int64\",\n \"maximum\": 2592000,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"members\": {\n \"description\": \"The members assigned to this layer.\",\n \"items\": {\n \"description\": \"Defines a single member within a schedule layer, including the reference to the underlying user.\",\n \"properties\": {\n \"user\": {\n \"description\": \"Identifies the user participating in this layer as a single object with an `id`.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The user's ID.\",\n \"example\": \"00000000-aba1-0000-0000-000000000000\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name for this layer (for example, \\\"Secondary Coverage\\\").\",\n \"example\": \"Primary On-Call Layer\",\n \"type\": \"string\"\n },\n \"restrictions\": {\n \"description\": \"Any time restrictions that define when this layer is active.\",\n \"items\": {\n \"description\": \"Defines a single time restriction rule with start and end times and the applicable weekdays.\",\n \"properties\": {\n \"end_day\": {\n \"description\": \"A day of the week.\",\n \"enum\": [\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ]\n },\n \"end_time\": {\n \"description\": \"Specifies the ending time for this restriction.\",\n \"type\": \"string\"\n },\n \"start_day\": {\n \"description\": \"A day of the week.\",\n \"enum\": [\n \"monday\",\n \"tuesday\",\n \"wednesday\",\n \"thursday\",\n \"friday\",\n \"saturday\",\n \"sunday\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONDAY\",\n \"TUESDAY\",\n \"WEDNESDAY\",\n \"THURSDAY\",\n \"FRIDAY\",\n \"SATURDAY\",\n \"SUNDAY\"\n ]\n },\n \"start_time\": {\n \"description\": \"Specifies the starting time for this restriction.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"rotation_start\": {\n \"description\": \"The date/time at which the rotation begins (ISO 8601 format).\",\n \"example\": \"2025-02-01T00:00:00Z\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"effective_date\",\n \"interval\",\n \"members\",\n \"name\",\n \"rotation_start\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"A short name for the schedule.\",\n \"example\": \"Primary On-Call\",\n \"type\": \"string\"\n },\n \"time_zone\": {\n \"description\": \"The time zone used when interpreting rotation times.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"time_zone\",\n \"layers\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the schedule to be updated.\",\n \"example\": \"3653d3c6-0c75-11ea-ad28-fb5701eabc7d\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Houses relationships for the schedule update, typically referencing teams.\",\n \"properties\": {\n \"teams\": {\n \"description\": \"Associates teams with this schedule in a data structure.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An array of team references for this schedule.\",\n \"items\": {\n \"description\": \"Relates a team to this schedule, identified by `id` and `type` (must be `teams`).\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier of the team in this relationship.\",\n \"example\": \"00000000-da3a-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"teams\",\n \"description\": \"Teams resource type.\",\n \"enum\": [\n \"teams\"\n ],\n \"example\": \"teams\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAMS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"schedules\",\n \"description\": \"Schedules resource type.\",\n \"enum\": [\n \"schedules\"\n ],\n \"example\": \"schedules\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SCHEDULES\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOpsgenieService.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOpsgenieService.json new file mode 100644 index 00000000..5b13efbe --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOpsgenieService.json @@ -0,0 +1,336 @@ +{ + "name": "UpdateOpsgenieService", + "fully_qualified_name": "DatadogApi.UpdateOpsgenieService@0.1.0", + "description": "Update a service in the Datadog Opsgenie integration.\n\nThis tool updates a specified service object within the Datadog Opsgenie integration. It should be called when you need to modify an existing Opsgenie service.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "service_uuid", + "required": true, + "description": "The UUID of the service to be updated in the Datadog Opsgenie integration.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "integration_service_id" + }, + { + "name": "opsgenie_service_id", + "required": true, + "description": "The unique identifier of the Opsgenie service to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Opsgenie service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "opsgenie_service_resource_type", + "required": true, + "description": "Specify as 'opsgenie-service' to denote the Opsgenie service resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "opsgenie-service" + ], + "properties": null, + "inner_properties": null, + "description": "Opsgenie service resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "custom_region_url", + "required": false, + "description": "The custom URL for a specific Opsgenie region. Specify if using a custom region.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom URL for a custom region." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.custom_url" + }, + { + "name": "opsgenie_service_name", + "required": false, + "description": "The name for the Opsgenie service to update. It should uniquely identify the service within your Opsgenie account.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for the Opsgenie service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "opsgenie_api_key", + "required": false, + "description": "The API key for your Opsgenie service, needed to authenticate the update request.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Opsgenie API key for your Opsgenie service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.opsgenie_api_key" + }, + { + "name": "opsgenie_service_region", + "required": false, + "description": "Specify the region for the Opsgenie service. Allowed values are 'us', 'eu', or 'custom'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "us", + "eu", + "custom" + ], + "properties": null, + "inner_properties": null, + "description": "The region for the Opsgenie service." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.region" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateOpsgenieService'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/opsgenie/services/{integration_service_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "integration_service_id", + "tool_parameter_name": "service_uuid", + "description": "The UUID of the service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the service." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.custom_url", + "tool_parameter_name": "custom_region_url", + "description": "The custom URL for a custom region.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The custom URL for a custom region." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "opsgenie_service_name", + "description": "The name for the Opsgenie service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name for the Opsgenie service." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.opsgenie_api_key", + "tool_parameter_name": "opsgenie_api_key", + "description": "The Opsgenie API key for your Opsgenie service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Opsgenie API key for your Opsgenie service." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.region", + "tool_parameter_name": "opsgenie_service_region", + "description": "The region for the Opsgenie service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "us", + "eu", + "custom" + ], + "properties": null, + "inner_properties": null, + "description": "The region for the Opsgenie service." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "opsgenie_service_id", + "description": "The ID of the Opsgenie service.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Opsgenie service." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "opsgenie_service_resource_type", + "description": "Opsgenie service resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "opsgenie-service" + ], + "properties": null, + "inner_properties": null, + "description": "Opsgenie service resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "opsgenie-service", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update request for an Opsgenie service.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Opsgenie service for an update request.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The Opsgenie service attributes for an update request.\",\n \"properties\": {\n \"custom_url\": {\n \"description\": \"The custom URL for a custom region.\",\n \"example\": \"https://example.com\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name for the Opsgenie service.\",\n \"example\": \"fake-opsgenie-service-name\",\n \"maxLength\": 100,\n \"type\": \"string\"\n },\n \"opsgenie_api_key\": {\n \"description\": \"The Opsgenie API key for your Opsgenie service.\",\n \"example\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"The region for the Opsgenie service.\",\n \"enum\": [\n \"us\",\n \"eu\",\n \"custom\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\",\n \"CUSTOM\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the Opsgenie service.\",\n \"example\": \"596da4af-0563-4097-90ff-07230c3f9db3\",\n \"maxLength\": 100,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"opsgenie-service\",\n \"description\": \"Opsgenie service resource type.\",\n \"enum\": [\n \"opsgenie-service\"\n ],\n \"example\": \"opsgenie-service\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPSGENIE_SERVICE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Opsgenie service payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOrgConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOrgConfig.json new file mode 100644 index 00000000..6d18a1c0 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOrgConfig.json @@ -0,0 +1,196 @@ +{ + "name": "UpdateOrgConfig", + "fully_qualified_name": "DatadogApi.UpdateOrgConfig@0.1.0", + "description": "Update a specified organization configuration in Datadog.\n\nUse this tool to update the value of a specific organization configuration in Datadog. Suitable for changing settings like feature toggles or other organizational configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "organization_configuration_name", + "required": true, + "description": "The name of the organization configuration to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of an Org Config." + }, + "inferrable": true, + "http_endpoint_parameter_name": "org_config_name" + }, + { + "name": "org_config_value", + "required": true, + "description": "The new value for the organization configuration. Provide the desired value to update the specific Org Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of an Org Config." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.value" + }, + { + "name": "org_config_data_type", + "required": true, + "description": "The data type of the organization configuration, which should be 'org_configs'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "org_configs" + ], + "properties": null, + "inner_properties": null, + "description": "Data type of an Org Config." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateOrgConfig'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/org_configs/{org_config_name}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "org_config_name", + "tool_parameter_name": "organization_configuration_name", + "description": "The name of an Org Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of an Org Config." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.value", + "tool_parameter_name": "org_config_value", + "description": "The value of an Org Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of an Org Config." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "org_config_data_type", + "description": "Data type of an Org Config.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "org_configs" + ], + "properties": null, + "inner_properties": null, + "description": "Data type of an Org Config." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A request to update an Org Config.\",\n \"properties\": {\n \"data\": {\n \"description\": \"An Org Config write operation.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Writable attributes of an Org Config.\",\n \"properties\": {\n \"value\": {\n \"description\": \"The value of an Org Config.\"\n }\n },\n \"required\": [\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Data type of an Org Config.\",\n \"enum\": [\n \"org_configs\"\n ],\n \"example\": \"org_configs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ORG_CONFIGS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOrgConnection.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOrgConnection.json new file mode 100644 index 00000000..a9674638 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateOrgConnection.json @@ -0,0 +1,229 @@ +{ + "name": "UpdateOrgConnection", + "fully_qualified_name": "DatadogApi.UpdateOrgConnection@0.1.0", + "description": "Update an existing organization connection in Datadog.\n\nUse this tool to update details of an existing organization connection in Datadog. Useful for modifying connection configurations or settings.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "org_connection_id", + "required": true, + "description": "The unique identifier of the organization connection in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org connection." + }, + "inferrable": true, + "http_endpoint_parameter_name": "connection_id" + }, + { + "name": "updated_connection_types", + "required": true, + "description": "A list of updated connection types for the organization connection.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Updated list of connection types." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.connection_types" + }, + { + "name": "organization_connection_id", + "required": true, + "description": "The unique identifier of the organization connection to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org connection." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "org_connection_type", + "required": true, + "description": "Specifies the type of organization connection. Must be 'org_connection'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "org_connection" + ], + "properties": null, + "inner_properties": null, + "description": "Org connection type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateOrgConnections'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/org_connections/{connection_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "connection_id", + "tool_parameter_name": "org_connection_id", + "description": "The unique identifier of the org connection.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org connection." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.connection_types", + "tool_parameter_name": "updated_connection_types", + "description": "Updated list of connection types.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Updated list of connection types." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "organization_connection_id", + "description": "The unique identifier of the org connection.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the org connection." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "org_connection_type", + "description": "Org connection type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "org_connection" + ], + "properties": null, + "inner_properties": null, + "description": "Org connection type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to update an org connection.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Org connection update data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for updating an org connection.\",\n \"properties\": {\n \"connection_types\": {\n \"description\": \"Updated list of connection types.\",\n \"example\": [\n \"logs\",\n \"metrics\"\n ],\n \"items\": {\n \"description\": \"Available connection types between organizations.\",\n \"enum\": [\n \"logs\",\n \"metrics\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"METRICS\"\n ]\n },\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"connection_types\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier of the org connection.\",\n \"example\": \"f9ec96b0-8c8a-4b0a-9b0a-1b2c3d4e5f6a\",\n \"format\": \"uuid\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Org connection type.\",\n \"enum\": [\n \"org_connection\"\n ],\n \"example\": \"org_connection\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ORG_CONNECTION\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdatePipeline.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdatePipeline.json new file mode 100644 index 00000000..becaf5d7 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdatePipeline.json @@ -0,0 +1,311 @@ +{ + "name": "UpdatePipeline", + "fully_qualified_name": "DatadogApi.UpdatePipeline@0.1.0", + "description": "Update a pipeline in Datadog's remote config.\n\nUse this tool to update specific pipelines in Datadog's remote configuration system using the pipeline ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "pipeline_id", + "required": true, + "description": "The unique ID of the pipeline to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the pipeline to update." + }, + "inferrable": true, + "http_endpoint_parameter_name": "pipeline_id" + }, + { + "name": "pipeline_details", + "required": true, + "description": "A JSON object with the pipeline's ID, type, name, sources, processors, and destinations.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destinations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of destination components where processed logs are sent." + }, + "processors": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of processors that transform or enrich log data." + }, + "sources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of configured data sources for the pipeline." + } + }, + "inner_properties": null, + "description": "Specifies the pipeline's configuration, including its sources, processors, and destinations." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the pipeline." + } + }, + "inner_properties": null, + "description": "Defines the pipeline\u2019s name and its components (sources, processors, and destinations)." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pipeline." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type identifier. For pipeline resources, this should always be set to `pipelines`." + } + }, + "inner_properties": null, + "description": "Contains the pipeline\u2019s ID, type, and configuration attributes." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdatePipeline'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/{pipeline_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "pipeline_id", + "tool_parameter_name": "pipeline_id", + "description": "The ID of the pipeline to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the pipeline to update." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "pipeline_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destinations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of destination components where processed logs are sent." + }, + "processors": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of processors that transform or enrich log data." + }, + "sources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of configured data sources for the pipeline." + } + }, + "inner_properties": null, + "description": "Specifies the pipeline's configuration, including its sources, processors, and destinations." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the pipeline." + } + }, + "inner_properties": null, + "description": "Defines the pipeline\u2019s name and its components (sources, processors, and destinations)." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier for the pipeline." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type identifier. For pipeline resources, this should always be set to `pipelines`." + } + }, + "inner_properties": null, + "description": "Contains the pipeline\u2019s ID, type, and configuration attributes." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Top-level schema representing a pipeline.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Contains the pipeline\\u2019s ID, type, and configuration attributes.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Defines the pipeline\\u2019s name and its components (sources, processors, and destinations).\",\n \"properties\": {\n \"config\": {\n \"description\": \"Specifies the pipeline's configuration, including its sources, processors, and destinations.\",\n \"properties\": {\n \"destinations\": {\n \"description\": \"A list of destination components where processed logs are sent.\",\n \"example\": [\n {\n \"id\": \"datadog-logs-destination\",\n \"inputs\": [\n \"filter-processor\"\n ],\n \"type\": \"datadog_logs\"\n }\n ],\n \"items\": {\n \"description\": \"A destination for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `datadog_logs` destination forwards logs to Datadog Log Management.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"datadog-logs-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"datadog_logs\",\n \"description\": \"The destination type. The value should always be `datadog_logs`.\",\n \"enum\": [\n \"datadog_logs\"\n ],\n \"example\": \"datadog_logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_LOGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_s3` destination sends your logs in Datadog-rehydratable format to an Amazon S3 bucket for archiving.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"S3 bucket name.\",\n \"example\": \"error-logs\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"amazon-s3-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_prefix\": {\n \"description\": \"Optional prefix for object keys.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"AWS region of the S3 bucket.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"storage_class\": {\n \"description\": \"S3 storage class.\",\n \"enum\": [\n \"STANDARD\",\n \"REDUCED_REDUNDANCY\",\n \"INTELLIGENT_TIERING\",\n \"STANDARD_IA\",\n \"EXPRESS_ONEZONE\",\n \"ONEZONE_IA\",\n \"GLACIER\",\n \"GLACIER_IR\",\n \"DEEP_ARCHIVE\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"REDUCED_REDUNDANCY\",\n \"INTELLIGENT_TIERING\",\n \"STANDARD_IA\",\n \"EXPRESS_ONEZONE\",\n \"ONEZONE_IA\",\n \"GLACIER\",\n \"GLACIER_IR\",\n \"DEEP_ARCHIVE\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_s3\",\n \"description\": \"The destination type. Always `amazon_s3`.\",\n \"enum\": [\n \"amazon_s3\"\n ],\n \"example\": \"amazon_s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_S3\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"region\",\n \"storage_class\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_cloud_storage` destination stores logs in a Google Cloud Storage (GCS) bucket.\\nIt requires a bucket name, GCP authentication, and metadata fields.\",\n \"properties\": {\n \"acl\": {\n \"description\": \"Access control list setting for objects written to the bucket.\",\n \"enum\": [\n \"private\",\n \"project-private\",\n \"public-read\",\n \"authenticated-read\",\n \"bucket-owner-read\",\n \"bucket-owner-full-control\"\n ],\n \"example\": \"private\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PRIVATE\",\n \"PROJECTNOT_PRIVATE\",\n \"PUBLICNOT_READ\",\n \"AUTHENTICATEDNOT_READ\",\n \"BUCKETNOT_OWNERNOT_READ\",\n \"BUCKETNOT_OWNERNOT_FULLNOT_CONTROL\"\n ]\n },\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"Name of the GCS bucket.\",\n \"example\": \"error-logs\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"gcs-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_prefix\": {\n \"description\": \"Optional prefix for object keys within the GCS bucket.\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Custom metadata to attach to each object uploaded to the GCS bucket.\",\n \"items\": {\n \"description\": \"A custom metadata entry.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The metadata key.\",\n \"example\": \"environment\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The metadata value.\",\n \"example\": \"production\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"storage_class\": {\n \"description\": \"Storage class used for objects stored in GCS.\",\n \"enum\": [\n \"STANDARD\",\n \"NEARLINE\",\n \"COLDLINE\",\n \"ARCHIVE\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"NEARLINE\",\n \"COLDLINE\",\n \"ARCHIVE\"\n ]\n },\n \"type\": {\n \"default\": \"google_cloud_storage\",\n \"description\": \"The destination type. Always `google_cloud_storage`.\",\n \"enum\": [\n \"google_cloud_storage\"\n ],\n \"example\": \"google_cloud_storage\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_CLOUD_STORAGE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"auth\",\n \"storage_class\",\n \"acl\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_hec` destination forwards logs to Splunk using the HTTP Event Collector (HEC).\",\n \"properties\": {\n \"auto_extract_timestamp\": {\n \"description\": \"If `true`, Splunk tries to extract timestamps from incoming log events.\\nIf `false`, Splunk assigns the time the event was received.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-hec-destination\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Optional name of the Splunk index where logs are written.\",\n \"example\": \"main\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourcetype\": {\n \"description\": \"The Splunk sourcetype to assign to log events.\",\n \"example\": \"custom_sourcetype\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"The destination type. Always `splunk_hec`.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sumo_logic` destination forwards logs to Sumo Logic.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"The output encoding format.\",\n \"enum\": [\n \"json\",\n \"raw_message\",\n \"logfmt\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\",\n \"LOGFMT\"\n ]\n },\n \"header_custom_fields\": {\n \"description\": \"A list of custom headers to include in the request to Sumo Logic.\",\n \"items\": {\n \"description\": \"Single key-value pair used as a custom log header for Sumo Logic.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\",\n \"example\": \"X-Sumo-Category\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value.\",\n \"example\": \"my-app-logs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"header_host_name\": {\n \"description\": \"Optional override for the host name header.\",\n \"example\": \"host-123\",\n \"type\": \"string\"\n },\n \"header_source_category\": {\n \"description\": \"Optional override for the source category header.\",\n \"example\": \"source-category\",\n \"type\": \"string\"\n },\n \"header_source_name\": {\n \"description\": \"Optional override for the source name header.\",\n \"example\": \"source-name\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sumo-logic-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"sumo_logic\",\n \"description\": \"The destination type. The value should always be `sumo_logic`.\",\n \"enum\": [\n \"sumo_logic\"\n ],\n \"example\": \"sumo_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUMO_LOGIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `elasticsearch` destination writes logs to an Elasticsearch cluster.\",\n \"properties\": {\n \"api_version\": {\n \"description\": \"The Elasticsearch API version to use. Set to `auto` to auto-detect.\",\n \"enum\": [\n \"auto\",\n \"v6\",\n \"v7\",\n \"v8\"\n ],\n \"example\": \"auto\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AUTO\",\n \"V6\",\n \"V7\",\n \"V8\"\n ]\n },\n \"bulk_index\": {\n \"description\": \"The index to write logs to in Elasticsearch.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"elasticsearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"elasticsearch\",\n \"description\": \"The destination type. The value should always be `elasticsearch`.\",\n \"enum\": [\n \"elasticsearch\"\n ],\n \"example\": \"elasticsearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ELASTICSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rsyslog` destination forwards logs to an external `rsyslog` server over TCP or UDP using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"rsyslog-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keepalive\": {\n \"description\": \"Optional socket keepalive duration in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rsyslog\",\n \"description\": \"The destination type. The value should always be `rsyslog`.\",\n \"enum\": [\n \"rsyslog\"\n ],\n \"example\": \"rsyslog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RSYSLOG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `syslog_ng` destination forwards logs to an external `syslog-ng` server over TCP or UDP using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"syslog-ng-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keepalive\": {\n \"description\": \"Optional socket keepalive duration in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"syslog_ng\",\n \"description\": \"The destination type. The value should always be `syslog_ng`.\",\n \"enum\": [\n \"syslog_ng\"\n ],\n \"example\": \"syslog_ng\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SYSLOG_NG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `azure_storage` destination forwards logs to an Azure Blob Storage container.\",\n \"properties\": {\n \"blob_prefix\": {\n \"description\": \"Optional prefix for blobs written to the container.\",\n \"example\": \"logs/\",\n \"type\": \"string\"\n },\n \"container_name\": {\n \"description\": \"The name of the Azure Blob Storage container to store logs in.\",\n \"example\": \"my-log-container\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"azure-storage-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"processor-id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"azure_storage\",\n \"description\": \"The destination type. The value should always be `azure_storage`.\",\n \"enum\": [\n \"azure_storage\"\n ],\n \"example\": \"azure_storage\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE_STORAGE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"container_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `microsoft_sentinel` destination forwards logs to Microsoft Sentinel.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"Azure AD client ID used for authentication.\",\n \"example\": \"a1b2c3d4-5678-90ab-cdef-1234567890ab\",\n \"type\": \"string\"\n },\n \"dcr_immutable_id\": {\n \"description\": \"The immutable ID of the Data Collection Rule (DCR).\",\n \"example\": \"dcr-uuid-1234\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sentinel-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"table\": {\n \"description\": \"The name of the Log Analytics table where logs are sent.\",\n \"example\": \"CustomLogsTable\",\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"Azure AD tenant ID.\",\n \"example\": \"abcdef12-3456-7890-abcd-ef1234567890\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"microsoft_sentinel\",\n \"description\": \"The destination type. The value should always be `microsoft_sentinel`.\",\n \"enum\": [\n \"microsoft_sentinel\"\n ],\n \"example\": \"microsoft_sentinel\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MICROSOFT_SENTINEL\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"client_id\",\n \"tenant_id\",\n \"dcr_immutable_id\",\n \"table\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_chronicle` destination sends logs to Google Chronicle.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"customer_id\": {\n \"description\": \"The Google Chronicle customer ID.\",\n \"example\": \"abcdefg123456789\",\n \"type\": \"string\"\n },\n \"encoding\": {\n \"description\": \"The encoding format for the logs sent to Chronicle.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"google-chronicle-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"log_type\": {\n \"description\": \"The log type metadata associated with the Chronicle destination.\",\n \"example\": \"nginx_logs\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"google_chronicle\",\n \"description\": \"The destination type. The value should always be `google_chronicle`.\",\n \"enum\": [\n \"google_chronicle\"\n ],\n \"example\": \"google_chronicle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_CHRONICLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"auth\",\n \"customer_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `new_relic` destination sends logs to the New Relic platform.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"new-relic-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"The New Relic region.\",\n \"enum\": [\n \"us\",\n \"eu\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\"\n ]\n },\n \"type\": {\n \"default\": \"new_relic\",\n \"description\": \"The destination type. The value should always be `new_relic`.\",\n \"enum\": [\n \"new_relic\"\n ],\n \"example\": \"new_relic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEW_RELIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sentinel_one` destination sends logs to SentinelOne.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sentinelone-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"The SentinelOne region to send logs to.\",\n \"enum\": [\n \"us\",\n \"eu\",\n \"ca\",\n \"data_set_us\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\",\n \"CA\",\n \"DATA_SET_US\"\n ]\n },\n \"type\": {\n \"default\": \"sentinel_one\",\n \"description\": \"The destination type. The value should always be `sentinel_one`.\",\n \"enum\": [\n \"sentinel_one\"\n ],\n \"example\": \"sentinel_one\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENTINEL_ONE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `opensearch` destination writes logs to an OpenSearch cluster.\",\n \"properties\": {\n \"bulk_index\": {\n \"description\": \"The index to write logs to.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"opensearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"opensearch\",\n \"description\": \"The destination type. The value should always be `opensearch`.\",\n \"enum\": [\n \"opensearch\"\n ],\n \"example\": \"opensearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPENSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_opensearch` destination writes logs to Amazon OpenSearch.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Authentication settings for the Amazon OpenSearch destination.\\nThe `strategy` field determines whether basic or AWS-based authentication is used.\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The ARN of the role to assume (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"aws_region\": {\n \"description\": \"AWS region\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"External ID for the assumed role (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"Session name for the assumed role (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The authentication strategy to use.\",\n \"enum\": [\n \"basic\",\n \"aws\"\n ],\n \"example\": \"aws\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\",\n \"AWS\"\n ]\n }\n },\n \"required\": [\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n \"bulk_index\": {\n \"description\": \"The index to write logs to.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"elasticsearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"amazon_opensearch\",\n \"description\": \"The destination type. The value should always be `amazon_opensearch`.\",\n \"enum\": [\n \"amazon_opensearch\"\n ],\n \"example\": \"amazon_opensearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_OPENSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"auth\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `socket` destination sends logs over TCP or UDP to a remote server.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"framing\": {\n \"description\": \"Framing method configuration.\",\n \"oneOf\": [\n {\n \"description\": \"Each log event is delimited by a newline character.\",\n \"properties\": {\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingNewlineDelimitedMethod` object.\",\n \"enum\": [\n \"newline_delimited\"\n ],\n \"example\": \"newline_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEWLINE_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Event data is not delimited at all.\",\n \"properties\": {\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingBytesMethod` object.\",\n \"enum\": [\n \"bytes\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Each log event is separated using the specified delimiter character.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"A single ASCII character used as a delimiter.\",\n \"example\": \"|\",\n \"maxLength\": 1,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingCharacterDelimitedMethod` object.\",\n \"enum\": [\n \"character_delimited\"\n ],\n \"example\": \"character_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHARACTER_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\",\n \"delimiter\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"socket-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"Protocol used to send logs.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"socket\",\n \"description\": \"The destination type. The value should always be `socket`.\",\n \"enum\": [\n \"socket\"\n ],\n \"example\": \"socket\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SOCKET\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\",\n \"framing\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_security_lake` destination sends your logs to Amazon Security Lake.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"Name of the Amazon S3 bucket in Security Lake (3-63 characters).\",\n \"example\": \"security-lake-bucket\",\n \"type\": \"string\"\n },\n \"custom_source_name\": {\n \"description\": \"Custom source name for the logs in Security Lake.\",\n \"example\": \"my-custom-source\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"amazon-security-lake-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"AWS region of the S3 bucket.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_security_lake\",\n \"description\": \"The destination type. Always `amazon_security_lake`.\",\n \"enum\": [\n \"amazon_security_lake\"\n ],\n \"example\": \"amazon_security_lake\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_SECURITY_LAKE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"region\",\n \"custom_source_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `crowdstrike_next_gen_siem` destination forwards logs to CrowdStrike Next Gen SIEM.\",\n \"properties\": {\n \"compression\": {\n \"description\": \"Compression configuration for log events.\",\n \"properties\": {\n \"algorithm\": {\n \"description\": \"Compression algorithm for log events.\",\n \"enum\": [\n \"gzip\",\n \"zlib\"\n ],\n \"example\": \"gzip\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GZIP\",\n \"ZLIB\"\n ]\n },\n \"level\": {\n \"description\": \"Compression level.\",\n \"example\": 6,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"algorithm\"\n ],\n \"type\": \"object\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"crowdstrike-ngsiem-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"crowdstrike_next_gen_siem\",\n \"description\": \"The destination type. The value should always be `crowdstrike_next_gen_siem`.\",\n \"enum\": [\n \"crowdstrike_next_gen_siem\"\n ],\n \"example\": \"crowdstrike_next_gen_siem\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CROWDSTRIKE_NEXT_GEN_SIEM\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_pubsub` destination publishes logs to a Google Cloud Pub/Sub topic.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"google-pubsub-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"project\": {\n \"description\": \"The GCP project ID that owns the Pub/Sub topic.\",\n \"example\": \"my-gcp-project\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"topic\": {\n \"description\": \"The Pub/Sub topic name to publish logs to.\",\n \"example\": \"logs-subscription\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"google_pubsub\",\n \"description\": \"The destination type. The value should always be `google_pubsub`.\",\n \"enum\": [\n \"google_pubsub\"\n ],\n \"example\": \"google_pubsub\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_PUBSUB\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\",\n \"project\",\n \"topic\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"processors\": {\n \"description\": \"A list of processors that transform or enrich log data.\",\n \"example\": [\n {\n \"id\": \"filter-processor\",\n \"include\": \"service:my-service\",\n \"inputs\": [\n \"datadog-agent-source\"\n ],\n \"type\": \"filter\"\n }\n ],\n \"items\": {\n \"description\": \"A processor for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `filter` processor allows conditional processing of logs based on a Datadog search query. Logs that match the `include` query are passed through; others are discarded.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"filter-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs should pass through the filter. Logs that match this query continue to downstream components; others are dropped.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"filter\",\n \"description\": \"The processor type. The value should always be `filter`.\",\n \"enum\": [\n \"filter\"\n ],\n \"example\": \"filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FILTER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `parse_json` processor extracts JSON from a specified field and flattens it into the event. This is useful when logs contain embedded JSON as a string.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The name of the log field that contains a JSON string.\",\n \"example\": \"message\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"parse-json-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"parse_json\",\n \"description\": \"The processor type. The value should always be `parse_json`.\",\n \"enum\": [\n \"parse_json\"\n ],\n \"example\": \"parse_json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARSE_JSON\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"field\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Quota Processor measures logging traffic for logs that match a specified filter. When the configured daily quota is met, the processor can drop or alert.\",\n \"properties\": {\n \"drop_events\": {\n \"description\": \"If set to `true`, logs that matched the quota filter and sent after the quota has been met are dropped; only logs that did not match the filter query continue through the pipeline.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"quota-processor\",\n \"type\": \"string\"\n },\n \"ignore_when_missing_partitions\": {\n \"description\": \"If `true`, the processor skips quota checks when partition fields are missing from the logs.\",\n \"type\": \"boolean\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"description\": \"The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events.\",\n \"properties\": {\n \"enforce\": {\n \"description\": \"Unit for quota enforcement in bytes for data size or events for count.\",\n \"enum\": [\n \"bytes\",\n \"events\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\",\n \"EVENTS\"\n ]\n },\n \"limit\": {\n \"description\": \"The limit for quota enforcement.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"enforce\",\n \"limit\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the quota.\",\n \"example\": \"MyQuota\",\n \"type\": \"string\"\n },\n \"overflow_action\": {\n \"description\": \"The action to take when the quota is exceeded. Options:\\n- `drop`: Drop the event.\\n- `no_action`: Let the event pass through.\\n- `overflow_routing`: Route to an overflow destination.\",\n \"enum\": [\n \"drop\",\n \"no_action\",\n \"overflow_routing\"\n ],\n \"example\": \"drop\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DROP\",\n \"NO_ACTION\",\n \"OVERFLOW_ROUTING\"\n ]\n },\n \"overrides\": {\n \"description\": \"A list of alternate quota rules that apply to specific sets of events, identified by matching field values. Each override can define a custom limit.\",\n \"items\": {\n \"description\": \"Defines a custom quota limit that applies to specific log events based on matching field values.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of field matchers used to apply a specific override. If an event matches all listed key-value pairs, the corresponding override limit is enforced.\",\n \"items\": {\n \"description\": \"Represents a static key-value pair used in various processors.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"field_name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The field value.\",\n \"example\": \"field_value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"description\": \"The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events.\",\n \"properties\": {\n \"enforce\": {\n \"description\": \"Unit for quota enforcement in bytes for data size or events for count.\",\n \"enum\": [\n \"bytes\",\n \"events\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\",\n \"EVENTS\"\n ]\n },\n \"limit\": {\n \"description\": \"The limit for quota enforcement.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"enforce\",\n \"limit\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"fields\",\n \"limit\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"partition_fields\": {\n \"description\": \"A list of fields used to segment log traffic for quota enforcement. Quotas are tracked independently by unique combinations of these field values.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"quota\",\n \"description\": \"The processor type. The value should always be `quota`.\",\n \"enum\": [\n \"quota\"\n ],\n \"example\": \"quota\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"QUOTA\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"name\",\n \"drop_events\",\n \"limit\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `add_fields` processor adds static key-value fields to logs.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of static fields (key-value pairs) that is added to each log event processed by this component.\",\n \"items\": {\n \"description\": \"Represents a static key-value pair used in various processors.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"field_name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The field value.\",\n \"example\": \"field_value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"add-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"add_fields\",\n \"description\": \"The processor type. The value should always be `add_fields`.\",\n \"enum\": [\n \"add_fields\"\n ],\n \"example\": \"add_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADD_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `remove_fields` processor deletes specified fields from logs.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of field names to be removed from each log event.\",\n \"example\": [\n \"field1\",\n \"field2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"remove-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"The `PipelineRemoveFieldsProcessor` `inputs`.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"remove_fields\",\n \"description\": \"The processor type. The value should always be `remove_fields`.\",\n \"enum\": [\n \"remove_fields\"\n ],\n \"example\": \"remove_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REMOVE_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rename_fields` processor changes field names.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of rename rules specifying which fields to rename in the event, what to rename them to, and whether to preserve the original fields.\",\n \"items\": {\n \"description\": \"Defines how to rename a field in log events.\",\n \"properties\": {\n \"destination\": {\n \"description\": \"The field name to assign the renamed value to.\",\n \"example\": \"destination_field\",\n \"type\": \"string\"\n },\n \"preserve_source\": {\n \"description\": \"Indicates whether the original field, that is received from the source, should be kept (`true`) or removed (`false`) after renaming.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"source\": {\n \"description\": \"The original field name in the log event that should be renamed.\",\n \"example\": \"source_field\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\",\n \"destination\",\n \"preserve_source\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"rename-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"rename_fields\",\n \"description\": \"The processor type. The value should always be `rename_fields`.\",\n \"enum\": [\n \"rename_fields\"\n ],\n \"example\": \"rename_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RENAME_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `generate_datadog_metrics` processor creates custom metrics from logs and sends them to Datadog.\\nMetrics can be counters, gauges, or distributions and optionally grouped by log fields.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline.\",\n \"example\": \"generate-metrics-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this processor.\",\n \"example\": [\n \"source-id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metrics\": {\n \"description\": \"Configuration for generating individual metrics.\",\n \"items\": {\n \"description\": \"Defines a log-based custom metric, including its name, type, filter, value computation strategy,\\nand optional grouping fields.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"Optional fields used to group the metric series.\",\n \"example\": [\n \"service\",\n \"env\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"include\": {\n \"description\": \"Datadog filter query to match logs for metric generation.\",\n \"example\": \"service:billing\",\n \"type\": \"string\"\n },\n \"metric_type\": {\n \"description\": \"Type of metric to create.\",\n \"enum\": [\n \"count\",\n \"gauge\",\n \"distribution\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"GAUGE\",\n \"DISTRIBUTION\"\n ]\n },\n \"name\": {\n \"description\": \"Name of the custom metric to be created.\",\n \"example\": \"logs.processed\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Specifies how the value of the generated metric is computed.\",\n \"oneOf\": [\n {\n \"description\": \"Strategy that increments a generated metric by one for each matching event.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Increments the metric by 1 for each matching event.\",\n \"enum\": [\n \"increment_by_one\"\n ],\n \"example\": \"increment_by_one\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCREMENT_BY_ONE\"\n ]\n }\n },\n \"required\": [\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Strategy that increments a generated metric based on the value of a log field.\",\n \"properties\": {\n \"field\": {\n \"description\": \"Name of the log field containing the numeric value to increment the metric by.\",\n \"example\": \"errors\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"Uses a numeric field in the log event as the metric increment.\",\n \"enum\": [\n \"increment_by_field\"\n ],\n \"example\": \"increment_by_field\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCREMENT_BY_FIELD\"\n ]\n }\n },\n \"required\": [\n \"strategy\",\n \"field\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"name\",\n \"include\",\n \"metric_type\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"generate_datadog_metrics\",\n \"description\": \"The processor type. Always `generate_datadog_metrics`.\",\n \"enum\": [\n \"generate_datadog_metrics\"\n ],\n \"example\": \"generate_datadog_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GENERATE_DATADOG_METRICS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"include\",\n \"metrics\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sample` processor allows probabilistic sampling of logs at a fixed rate.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"sample-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"percentage\": {\n \"description\": \"The percentage of logs to sample.\",\n \"example\": 10.0,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"rate\": {\n \"description\": \"Number of events to sample (1 in N).\",\n \"example\": 10,\n \"format\": \"int64\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"sample\",\n \"description\": \"The processor type. The value should always be `sample`.\",\n \"enum\": [\n \"sample\"\n ],\n \"example\": \"sample\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SAMPLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `parse_grok` processor extracts structured fields from unstructured log messages using Grok patterns.\",\n \"properties\": {\n \"disable_library_rules\": {\n \"default\": false,\n \"description\": \"If set to `true`, disables the default Grok rules provided by Datadog.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this processor.\",\n \"example\": \"parse-grok-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rules\": {\n \"description\": \"The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied.\",\n \"items\": {\n \"description\": \"A Grok parsing rule used in the `parse_grok` processor. Each rule defines how to extract structured fields\\nfrom a specific log field using Grok patterns.\",\n \"properties\": {\n \"match_rules\": {\n \"description\": \"A list of Grok parsing rules that define how to extract fields from the source field.\\nEach rule must contain a name and a valid Grok pattern.\",\n \"example\": [\n {\n \"name\": \"MyParsingRule\",\n \"rule\": \"%{word:user} connected on %{date(\\\"MM/dd/yyyy\\\"):date}\"\n }\n ],\n \"items\": {\n \"description\": \"Defines a Grok parsing rule, which extracts structured fields from log content using named Grok patterns.\\nEach rule must have a unique name and a valid Datadog Grok pattern that will be applied to the source field.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"MyParsingRule\",\n \"type\": \"string\"\n },\n \"rule\": {\n \"description\": \"The definition of the Grok rule.\",\n \"example\": \"%{word:user} connected on %{date(\\\"MM/dd/yyyy\\\"):date}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"source\": {\n \"description\": \"The name of the field in the log event to apply the Grok rules to.\",\n \"example\": \"message\",\n \"type\": \"string\"\n },\n \"support_rules\": {\n \"description\": \"A list of Grok helper rules that can be referenced by the parsing rules.\",\n \"example\": [\n {\n \"name\": \"user\",\n \"rule\": \"%{word:user.name}\"\n }\n ],\n \"items\": {\n \"description\": \"The Grok helper rule referenced in the parsing rules.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the Grok helper rule.\",\n \"example\": \"user\",\n \"type\": \"string\"\n },\n \"rule\": {\n \"description\": \"The definition of the Grok helper rule.\",\n \"example\": \" %{word:user.name}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"source\",\n \"match_rules\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"parse_grok\",\n \"description\": \"The processor type. The value should always be `parse_grok`.\",\n \"enum\": [\n \"parse_grok\"\n ],\n \"example\": \"parse_grok\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARSE_GROK\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sensitive_data_scanner` processor detects and optionally redacts sensitive data in log events.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"sensitive-scanner\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"source:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rules\": {\n \"description\": \"A list of rules for identifying and acting on sensitive data patterns.\",\n \"items\": {\n \"description\": \"Defines a rule for detecting sensitive data, including matching pattern, scope, and the action to take.\",\n \"properties\": {\n \"keyword_options\": {\n \"description\": \"Configuration for keywords used to reinforce sensitive data pattern detection.\",\n \"properties\": {\n \"keywords\": {\n \"description\": \"A list of keywords to match near the sensitive pattern.\",\n \"example\": [\n \"ssn\",\n \"card\",\n \"account\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"proximity\": {\n \"description\": \"Maximum number of tokens between a keyword and a sensitive value match.\",\n \"example\": 5,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"keywords\",\n \"proximity\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"A name identifying the rule.\",\n \"example\": \"Redact Credit Card Numbers\",\n \"type\": \"string\"\n },\n \"on_match\": {\n \"description\": \"Defines what action to take when sensitive data is matched.\",\n \"oneOf\": [\n {\n \"description\": \"Configuration for completely redacting matched sensitive data.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that completely replaces the matched sensitive data with a fixed replacement string to remove all visibility.\",\n \"enum\": [\n \"redact\"\n ],\n \"example\": \"redact\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDACT\"\n ]\n },\n \"options\": {\n \"description\": \"Configuration for fully redacting sensitive data.\",\n \"properties\": {\n \"replace\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionRedactOptions` `replace`.\",\n \"example\": \"***\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"replace\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Configuration for hashing matched sensitive values.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that replaces the matched sensitive data with a hashed representation, preserving structure while securing content.\",\n \"enum\": [\n \"hash\"\n ],\n \"example\": \"hash\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HASH\"\n ]\n },\n \"options\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionHash` `options`.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Configuration for partially redacting matched sensitive data.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that redacts part of the sensitive data while preserving a configurable number of characters, typically used for masking purposes (e.g., show last 4 digits of a credit card).\",\n \"enum\": [\n \"partial_redact\"\n ],\n \"example\": \"partial_redact\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARTIAL_REDACT\"\n ]\n },\n \"options\": {\n \"description\": \"Controls how partial redaction is applied, including character count and direction.\",\n \"properties\": {\n \"characters\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionPartialRedactOptions` `characters`.\",\n \"example\": 4,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"direction\": {\n \"description\": \"Indicates whether to redact characters from the first or last part of the matched value.\",\n \"enum\": [\n \"first\",\n \"last\"\n ],\n \"example\": \"last\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FIRST\",\n \"LAST\"\n ]\n }\n },\n \"required\": [\n \"characters\",\n \"direction\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\",\n \"options\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"pattern\": {\n \"description\": \"Pattern detection configuration for identifying sensitive data using either a custom regex or a library reference.\",\n \"oneOf\": [\n {\n \"description\": \"Defines a custom regex-based pattern for identifying sensitive data in logs.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Options for defining a custom regex pattern.\",\n \"properties\": {\n \"rule\": {\n \"description\": \"A regular expression used to detect sensitive values. Must be a valid regex.\",\n \"example\": \"\\\\b\\\\d{16}\\\\b\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Indicates a custom regular expression is used for matching.\",\n \"enum\": [\n \"custom\"\n ],\n \"example\": \"custom\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Specifies a pattern from Datadog\\u2019s sensitive data detection library to match known sensitive data types.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Options for selecting a predefined library pattern and enabling keyword support.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Identifier for a predefined pattern from the sensitive data scanner pattern library.\",\n \"example\": \"credit_card\",\n \"type\": \"string\"\n },\n \"use_recommended_keywords\": {\n \"description\": \"Whether to augment the pattern with recommended keywords (optional).\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Indicates that a predefined library pattern is used.\",\n \"enum\": [\n \"library\"\n ],\n \"example\": \"library\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LIBRARY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"options\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"scope\": {\n \"description\": \"Determines which parts of the log the pattern-matching rule should be applied to.\",\n \"oneOf\": [\n {\n \"description\": \"Includes only specific fields for sensitive data scanning.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Fields to which the scope rule applies.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` `fields`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\"\n ],\n \"type\": \"object\"\n },\n \"target\": {\n \"description\": \"Applies the rule only to included fields.\",\n \"enum\": [\n \"include\"\n ],\n \"example\": \"include\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCLUDE\"\n ]\n }\n },\n \"required\": [\n \"target\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Excludes specific fields from sensitive data scanning.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Fields to which the scope rule applies.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` `fields`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\"\n ],\n \"type\": \"object\"\n },\n \"target\": {\n \"description\": \"Excludes specific fields from processing.\",\n \"enum\": [\n \"exclude\"\n ],\n \"example\": \"exclude\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EXCLUDE\"\n ]\n }\n },\n \"required\": [\n \"target\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Applies scanning across all available fields.\",\n \"properties\": {\n \"target\": {\n \"description\": \"Applies the rule to all fields.\",\n \"enum\": [\n \"all\"\n ],\n \"example\": \"all\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALL\"\n ]\n }\n },\n \"required\": [\n \"target\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"tags\": {\n \"description\": \"Tags assigned to this rule for filtering and classification.\",\n \"example\": [\n \"pii\",\n \"ccn\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"tags\",\n \"pattern\",\n \"scope\",\n \"on_match\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner\",\n \"description\": \"The processor type. The value should always be `sensitive_data_scanner`.\",\n \"enum\": [\n \"sensitive_data_scanner\"\n ],\n \"example\": \"sensitive_data_scanner\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `ocsf_mapper` processor transforms logs into the OCSF schema using a predefined mapping configuration.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline.\",\n \"example\": \"ocsf-mapper-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this processor.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mappings\": {\n \"description\": \"A list of mapping rules to convert events to the OCSF format.\",\n \"items\": {\n \"description\": \"Defines how specific events are transformed to OCSF using a mapping configuration.\",\n \"properties\": {\n \"include\": {\n \"description\": \"A Datadog search query used to select the logs that this mapping should apply to.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"mapping\": {\n \"description\": \"Defines a single mapping rule for transforming logs into the OCSF schema.\",\n \"oneOf\": [\n {\n \"description\": \"Predefined library mappings for common log formats.\",\n \"enum\": [\n \"CloudTrail Account Change\",\n \"GCP Cloud Audit CreateBucket\",\n \"GCP Cloud Audit CreateSink\",\n \"GCP Cloud Audit SetIamPolicy\",\n \"GCP Cloud Audit UpdateSink\",\n \"Github Audit Log API Activity\",\n \"Google Workspace Admin Audit addPrivilege\",\n \"Microsoft 365 Defender Incident\",\n \"Microsoft 365 Defender UserLoggedIn\",\n \"Okta System Log Authentication\",\n \"Palo Alto Networks Firewall Traffic\"\n ],\n \"example\": \"CloudTrail Account Change\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDTRAIL_ACCOUNT_CHANGE\",\n \"GCP_CLOUD_AUDIT_CREATEBUCKET\",\n \"GCP_CLOUD_AUDIT_CREATESINK\",\n \"GCP_CLOUD_AUDIT_SETIAMPOLICY\",\n \"GCP_CLOUD_AUDIT_UPDATESINK\",\n \"GITHUB_AUDIT_LOG_API_ACTIVITY\",\n \"GOOGLE_WORKSPACE_ADMIN_AUDIT_ADDPRIVILEGE\",\n \"MICROSOFT_365_DEFENDER_INCIDENT\",\n \"MICROSOFT_365_DEFENDER_USERLOGGEDIN\",\n \"OKTA_SYSTEM_LOG_AUTHENTICATION\",\n \"PALO_ALTO_NETWORKS_FIREWALL_TRAFFIC\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"include\",\n \"mapping\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"ocsf_mapper\",\n \"description\": \"The processor type. The value should always be `ocsf_mapper`.\",\n \"enum\": [\n \"ocsf_mapper\"\n ],\n \"example\": \"ocsf_mapper\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OCSF_MAPPER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"mappings\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `add_env_vars` processor adds environment variable values to log events.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this processor in the pipeline.\",\n \"example\": \"add-env-vars-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"add_env_vars\",\n \"description\": \"The processor type. The value should always be `add_env_vars`.\",\n \"enum\": [\n \"add_env_vars\"\n ],\n \"example\": \"add_env_vars\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADD_ENV_VARS\"\n ]\n },\n \"variables\": {\n \"description\": \"A list of environment variable mappings to apply to log fields.\",\n \"items\": {\n \"description\": \"Defines a mapping between an environment variable and a log field.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The target field in the log event.\",\n \"example\": \"log.environment.region\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the environment variable to read.\",\n \"example\": \"AWS_REGION\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"field\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `dedupe` processor removes duplicate fields in log events.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of log field paths to check for duplicates.\",\n \"example\": [\n \"log.message\",\n \"log.error\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"dedupe-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"The deduplication mode to apply to the fields.\",\n \"enum\": [\n \"match\",\n \"ignore\"\n ],\n \"example\": \"match\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MATCH\",\n \"IGNORE\"\n ]\n },\n \"type\": {\n \"default\": \"dedupe\",\n \"description\": \"The processor type. The value should always be `dedupe`.\",\n \"enum\": [\n \"dedupe\"\n ],\n \"example\": \"dedupe\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DEDUPE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"fields\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `enrichment_table` processor enriches logs using a static CSV file or GeoIP database.\",\n \"properties\": {\n \"file\": {\n \"description\": \"Defines a static enrichment table loaded from a CSV file.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"File encoding format.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"The `encoding` `delimiter`.\",\n \"example\": \",\",\n \"type\": \"string\"\n },\n \"includes_headers\": {\n \"description\": \"The `encoding` `includes_headers`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"type\": {\n \"description\": \"Specifies the encoding format (e.g., CSV) used for enrichment tables.\",\n \"enum\": [\n \"csv\"\n ],\n \"example\": \"csv\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CSV\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"delimiter\",\n \"includes_headers\"\n ],\n \"type\": \"object\"\n },\n \"key\": {\n \"description\": \"Key fields used to look up enrichment values.\",\n \"items\": {\n \"description\": \"Defines how to map log fields to enrichment table columns during lookups.\",\n \"properties\": {\n \"column\": {\n \"description\": \"The `items` `column`.\",\n \"example\": \"user_id\",\n \"type\": \"string\"\n },\n \"comparison\": {\n \"description\": \"Defines how to compare key fields for enrichment table lookups.\",\n \"enum\": [\n \"equals\"\n ],\n \"example\": \"equals\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EQUALS\"\n ]\n },\n \"field\": {\n \"description\": \"The `items` `field`.\",\n \"example\": \"log.user.id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"column\",\n \"comparison\",\n \"field\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to the CSV file.\",\n \"example\": \"/etc/enrichment/lookup.csv\",\n \"type\": \"string\"\n },\n \"schema\": {\n \"description\": \"Schema defining column names and their types.\",\n \"items\": {\n \"description\": \"Describes a single column and its type in an enrichment table schema.\",\n \"properties\": {\n \"column\": {\n \"description\": \"The `items` `column`.\",\n \"example\": \"region\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Declares allowed data types for enrichment table columns.\",\n \"enum\": [\n \"string\",\n \"boolean\",\n \"integer\",\n \"float\",\n \"date\",\n \"timestamp\"\n ],\n \"example\": \"string\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"BOOLEAN\",\n \"INTEGER\",\n \"FLOAT\",\n \"DATE\",\n \"TIMESTAMP\"\n ]\n }\n },\n \"required\": [\n \"column\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"encoding\",\n \"key\",\n \"path\",\n \"schema\"\n ],\n \"type\": \"object\"\n },\n \"geoip\": {\n \"description\": \"Uses a GeoIP database to enrich logs based on an IP field.\",\n \"properties\": {\n \"key_field\": {\n \"description\": \"Path to the IP field in the log.\",\n \"example\": \"log.source.ip\",\n \"type\": \"string\"\n },\n \"locale\": {\n \"description\": \"Locale used to resolve geographical names.\",\n \"example\": \"en\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to the GeoIP database file.\",\n \"example\": \"/etc/geoip/GeoLite2-City.mmdb\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key_field\",\n \"locale\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"enrichment-table-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"source:my-source\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"add-fields-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"target\": {\n \"description\": \"Path where enrichment results should be stored in the log.\",\n \"example\": \"enriched.geoip\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"enrichment_table\",\n \"description\": \"The processor type. The value should always be `enrichment_table`.\",\n \"enum\": [\n \"enrichment_table\"\n ],\n \"example\": \"enrichment_table\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ENRICHMENT_TABLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"target\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `reduce` processor aggregates and merges logs based on matching keys and merge strategies.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"A list of fields used to group log events for merging.\",\n \"example\": [\n \"log.user.id\",\n \"log.device.id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"reduce-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"merge_strategies\": {\n \"description\": \"List of merge strategies defining how values from grouped events should be combined.\",\n \"items\": {\n \"description\": \"Defines how a specific field should be merged across grouped events.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The field path in the log event.\",\n \"example\": \"log.user.roles\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The merge strategy to apply.\",\n \"enum\": [\n \"discard\",\n \"retain\",\n \"sum\",\n \"max\",\n \"min\",\n \"array\",\n \"concat\",\n \"concat_newline\",\n \"concat_raw\",\n \"shortest_array\",\n \"longest_array\",\n \"flat_unique\"\n ],\n \"example\": \"flat_unique\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DISCARD\",\n \"RETAIN\",\n \"SUM\",\n \"MAX\",\n \"MIN\",\n \"ARRAY\",\n \"CONCAT\",\n \"CONCAT_NEWLINE\",\n \"CONCAT_RAW\",\n \"SHORTEST_ARRAY\",\n \"LONGEST_ARRAY\",\n \"FLAT_UNIQUE\"\n ]\n }\n },\n \"required\": [\n \"path\",\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"reduce\",\n \"description\": \"The processor type. The value should always be `reduce`.\",\n \"enum\": [\n \"reduce\"\n ],\n \"example\": \"reduce\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDUCE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"group_by\",\n \"merge_strategies\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `throttle` processor limits the number of events that pass through over a given time window.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"Optional list of fields used to group events before the threshold has been reached.\",\n \"example\": [\n \"log.user.id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"throttle-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"threshold\": {\n \"description\": \"the number of events allowed in a given time window. Events sent after the threshold has been reached, are dropped.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"throttle\",\n \"description\": \"The processor type. The value should always be `throttle`.\",\n \"enum\": [\n \"throttle\"\n ],\n \"example\": \"throttle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THROTTLE\"\n ]\n },\n \"window\": {\n \"description\": \"The time window in seconds over which the threshold applies.\",\n \"example\": 60.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"threshold\",\n \"window\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `custom_processor` processor transforms events using [Vector Remap Language (VRL)](https://vector.dev/docs/reference/vrl/) scripts with advanced filtering capabilities.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"remap-vrl-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"default\": \"*\",\n \"description\": \"A Datadog search query used to determine which logs this processor targets. This field should always be set to `*` for the custom_processor processor.\",\n \"example\": \"*\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"remaps\": {\n \"description\": \"Array of VRL remap rules.\",\n \"items\": {\n \"description\": \"Defines a single VRL remap rule with its own filtering and transformation logic.\",\n \"properties\": {\n \"drop_on_error\": {\n \"description\": \"Whether to drop events that caused errors during processing.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"description\": \"Whether this remap rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to filter events for this specific remap rule.\",\n \"example\": \"service:web\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A descriptive name for this remap rule.\",\n \"example\": \"Parse JSON from message field\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"The VRL script source code that defines the processing logic.\",\n \"example\": \". = parse_json!(.message)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"include\",\n \"name\",\n \"source\",\n \"enabled\",\n \"drop_on_error\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"custom_processor\",\n \"description\": \"The processor type. The value should always be `custom_processor`.\",\n \"enum\": [\n \"custom_processor\"\n ],\n \"example\": \"custom_processor\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_PROCESSOR\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"remaps\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `datadog_tags` processor includes or excludes specific Datadog tags in your logs.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The action to take on tags with matching keys.\",\n \"enum\": [\n \"include\",\n \"exclude\"\n ],\n \"example\": \"include\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCLUDE\",\n \"EXCLUDE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"datadog-tags-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keys\": {\n \"description\": \"A list of tag keys.\",\n \"example\": [\n \"env\",\n \"service\",\n \"version\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"The processing mode.\",\n \"enum\": [\n \"filter\"\n ],\n \"example\": \"filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FILTER\"\n ]\n },\n \"type\": {\n \"default\": \"datadog_tags\",\n \"description\": \"The processor type. The value should always be `datadog_tags`.\",\n \"enum\": [\n \"datadog_tags\"\n ],\n \"example\": \"datadog_tags\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_TAGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"mode\",\n \"action\",\n \"keys\",\n \"inputs\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"A list of configured data sources for the pipeline.\",\n \"example\": [\n {\n \"id\": \"datadog-agent-source\",\n \"type\": \"datadog_agent\"\n }\n ],\n \"items\": {\n \"description\": \"A data source for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `kafka` source ingests data from Apache Kafka topics.\",\n \"properties\": {\n \"group_id\": {\n \"description\": \"Consumer group ID used by the Kafka client.\",\n \"example\": \"consumer-group-0\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"kafka-source\",\n \"type\": \"string\"\n },\n \"librdkafka_options\": {\n \"description\": \"Optional list of advanced Kafka client configuration options, defined as key-value pairs.\",\n \"items\": {\n \"description\": \"Represents a key-value pair used to configure low-level `librdkafka` client options for Kafka sources, such as timeouts, buffer sizes, and security settings.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the `librdkafka` configuration option to set.\",\n \"example\": \"fetch.message.max.bytes\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The value assigned to the specified `librdkafka` configuration option.\",\n \"example\": \"1048576\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sasl\": {\n \"description\": \"Specifies the SASL mechanism for authenticating with a Kafka cluster.\",\n \"properties\": {\n \"mechanism\": {\n \"description\": \"SASL mechanism used for Kafka authentication.\",\n \"enum\": [\n \"PLAIN\",\n \"SCRAM-SHA-256\",\n \"SCRAM-SHA-512\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PLAIN\",\n \"SCRAMNOT_SHANOT_256\",\n \"SCRAMNOT_SHANOT_512\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"topics\": {\n \"description\": \"A list of Kafka topic names to subscribe to. The source ingests messages from each topic specified.\",\n \"example\": [\n \"topic1\",\n \"topic2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"kafka\",\n \"description\": \"The source type. The value should always be `kafka`.\",\n \"enum\": [\n \"kafka\"\n ],\n \"example\": \"kafka\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"KAFKA\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"group_id\",\n \"topics\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `datadog_agent` source collects logs from the Datadog Agent.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"datadog-agent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"datadog_agent\",\n \"description\": \"The source type. The value should always be `datadog_agent`.\",\n \"enum\": [\n \"datadog_agent\"\n ],\n \"example\": \"datadog_agent\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_AGENT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_tcp` source receives logs from a Splunk Universal Forwarder over TCP.\\nTLS is supported for secure transmission.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-tcp-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"splunk_tcp\",\n \"description\": \"The source type. Always `splunk_tcp`.\",\n \"enum\": [\n \"splunk_tcp\"\n ],\n \"example\": \"splunk_tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_TCP\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_hec` source implements the Splunk HTTP Event Collector (HEC) API.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-hec-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"The source type. Always `splunk_hec`.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_s3` source ingests logs from an Amazon S3 bucket.\\nIt supports AWS authentication and TLS encryption.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"aws-s3-source\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"AWS region where the S3 bucket resides.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_s3\",\n \"description\": \"The source type. Always `amazon_s3`.\",\n \"enum\": [\n \"amazon_s3\"\n ],\n \"example\": \"amazon_s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_S3\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `fluentd` source ingests logs from a Fluentd-compatible service.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"fluent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fluentd\",\n \"description\": \"The source type. The value should always be `fluentd.\",\n \"enum\": [\n \"fluentd\"\n ],\n \"example\": \"fluentd\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FLUENTD\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `fluent_bit` source ingests logs from Fluent Bit.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"fluent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fluent_bit\",\n \"description\": \"The source type. The value should always be `fluent_bit`.\",\n \"enum\": [\n \"fluent_bit\"\n ],\n \"example\": \"fluent_bit\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FLUENT_BIT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `http_server` source collects logs over HTTP POST from external services.\",\n \"properties\": {\n \"auth_strategy\": {\n \"description\": \"HTTP authentication method.\",\n \"enum\": [\n \"none\",\n \"plain\"\n ],\n \"example\": \"plain\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NONE\",\n \"PLAIN\"\n ]\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"Unique ID for the HTTP server source.\",\n \"example\": \"http-server-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"http_server\",\n \"description\": \"The source type. The value should always be `http_server`.\",\n \"enum\": [\n \"http_server\"\n ],\n \"example\": \"http_server\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP_SERVER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"auth_strategy\",\n \"decoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sumo_logic` source receives logs from Sumo Logic collectors.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"sumo-logic-source\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sumo_logic\",\n \"description\": \"The source type. The value should always be `sumo_logic`.\",\n \"enum\": [\n \"sumo_logic\"\n ],\n \"example\": \"sumo_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUMO_LOGIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rsyslog` source listens for logs over TCP or UDP from an `rsyslog` server using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"rsyslog-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used by the syslog source to receive messages.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rsyslog\",\n \"description\": \"The source type. The value should always be `rsyslog`.\",\n \"enum\": [\n \"rsyslog\"\n ],\n \"example\": \"rsyslog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RSYSLOG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `syslog_ng` source listens for logs over TCP or UDP from a `syslog-ng` server using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"syslog-ng-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used by the syslog source to receive messages.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"syslog_ng\",\n \"description\": \"The source type. The value should always be `syslog_ng`.\",\n \"enum\": [\n \"syslog_ng\"\n ],\n \"example\": \"syslog_ng\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SYSLOG_NG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_data_firehose` source ingests logs from AWS Data Firehose.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"amazon-firehose-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_data_firehose\",\n \"description\": \"The source type. The value should always be `amazon_data_firehose`.\",\n \"enum\": [\n \"amazon_data_firehose\"\n ],\n \"example\": \"amazon_data_firehose\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_DATA_FIREHOSE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_pubsub` source ingests logs from a Google Cloud Pub/Sub subscription.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"google-pubsub-source\",\n \"type\": \"string\"\n },\n \"project\": {\n \"description\": \"The GCP project ID that owns the Pub/Sub subscription.\",\n \"example\": \"my-gcp-project\",\n \"type\": \"string\"\n },\n \"subscription\": {\n \"description\": \"The Pub/Sub subscription name from which messages are consumed.\",\n \"example\": \"logs-subscription\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"google_pubsub\",\n \"description\": \"The source type. The value should always be `google_pubsub`.\",\n \"enum\": [\n \"google_pubsub\"\n ],\n \"example\": \"google_pubsub\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_PUBSUB\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"auth\",\n \"decoding\",\n \"project\",\n \"subscription\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `http_client` source scrapes logs from HTTP endpoints at regular intervals.\",\n \"properties\": {\n \"auth_strategy\": {\n \"description\": \"Optional authentication strategy for HTTP requests.\",\n \"enum\": [\n \"basic\",\n \"bearer\"\n ],\n \"example\": \"basic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\",\n \"BEARER\"\n ]\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"http-client-source\",\n \"type\": \"string\"\n },\n \"scrape_interval_secs\": {\n \"description\": \"The interval (in seconds) between HTTP scrape requests.\",\n \"example\": 60,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scrape_timeout_secs\": {\n \"description\": \"The timeout (in seconds) for each scrape request.\",\n \"example\": 10,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"http_client\",\n \"description\": \"The source type. The value should always be `http_client`.\",\n \"enum\": [\n \"http_client\"\n ],\n \"example\": \"http_client\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP_CLIENT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"decoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `logstash` source ingests logs from a Logstash forwarder.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"logstash-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"logstash\",\n \"description\": \"The source type. The value should always be `logstash`.\",\n \"enum\": [\n \"logstash\"\n ],\n \"example\": \"logstash\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGSTASH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `socket` source ingests logs over TCP or UDP.\",\n \"properties\": {\n \"framing\": {\n \"description\": \"Framing method configuration for the socket source.\",\n \"oneOf\": [\n {\n \"description\": \"Byte frames which are delimited by a newline character.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames which are delimited by a newline character.\",\n \"enum\": [\n \"newline_delimited\"\n ],\n \"example\": \"newline_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEWLINE_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).\",\n \"enum\": [\n \"bytes\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames which are delimited by a chosen character.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"A single ASCII character used to delimit events.\",\n \"example\": \"|\",\n \"maxLength\": 1,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"Byte frames which are delimited by a chosen character.\",\n \"enum\": [\n \"character_delimited\"\n ],\n \"example\": \"character_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHARACTER_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\",\n \"delimiter\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames according to the octet counting format as per RFC6587.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames according to the octet counting format as per RFC6587.\",\n \"enum\": [\n \"octet_counting\"\n ],\n \"example\": \"octet_counting\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OCTET_COUNTING\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames which are chunked GELF messages.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames which are chunked GELF messages.\",\n \"enum\": [\n \"chunked_gelf\"\n ],\n \"example\": \"chunked_gelf\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHUNKED_GELF\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"socket-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used to receive logs.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"socket\",\n \"description\": \"The source type. The value should always be `socket`.\",\n \"enum\": [\n \"socket\"\n ],\n \"example\": \"socket\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SOCKET\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\",\n \"framing\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"sources\",\n \"destinations\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the pipeline.\",\n \"example\": \"Main Observability Pipeline\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"config\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the pipeline.\",\n \"example\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"pipelines\",\n \"description\": \"The resource type identifier. For pipeline resources, this should always be set to `pipelines`.\",\n \"example\": \"pipelines\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdatePowerpack.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdatePowerpack.json new file mode 100644 index 00000000..15d70e03 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdatePowerpack.json @@ -0,0 +1,795 @@ +{ + "name": "UpdatePowerpack", + "fully_qualified_name": "DatadogApi.UpdatePowerpack@0.1.0", + "description": "Update the details of a specific powerpack in Datadog.\n\nUse this tool to modify the properties of an existing powerpack in Datadog by providing the specific powerpack ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "powerpack_id", + "required": true, + "description": "The unique identifier for the powerpack to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "inferrable": true, + "http_endpoint_parameter_name": "powerpack_id" + }, + { + "name": "powerpack_update_request", + "required": true, + "description": "JSON object with updated attributes for a powerpack, including layout, name, tags, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 this powerpack." + }, + "group_widget": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layout_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Layout type of widgets." + }, + "show_title": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean indicating whether powerpack group title should be visible or not." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name for the group widget." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be group." + }, + "widgets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Information about widget." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack inner widget layout." + } + }, + "description": "Widgets inside the powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack group widget object." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack group widget layout." + }, + "live_span": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1m", + "5m", + "10m", + "15m", + "30m", + "1h", + "4h", + "1d", + "2d", + "1w", + "1mo", + "3mo", + "6mo", + "1y", + "alert" + ], + "properties": null, + "inner_properties": null, + "description": "The available timeframes depend on the widget you are using." + } + }, + "inner_properties": null, + "description": "Powerpack group widget definition object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the powerpack." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags to identify this powerpack." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of values that the template variable drop-down is limited to." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "One or many template variable default values within the saved view, which are unioned together using `OR` if more than one is specified." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the variable." + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down." + } + }, + "description": "List of template variables for this powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack attribute object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "author": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "Powerpack relationship object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack data object." + } + }, + "inner_properties": null, + "description": "Update a powerpack request body." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdatePowerpack'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/powerpacks/{powerpack_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "powerpack_id", + "tool_parameter_name": "powerpack_id", + "description": "ID of the powerpack.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "powerpack_update_request", + "description": "Update a powerpack request body.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 this powerpack." + }, + "group_widget": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "layout_type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Layout type of widgets." + }, + "show_title": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Boolean indicating whether powerpack group title should be visible or not." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name for the group widget." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be group." + }, + "widgets": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Information about widget." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack inner widget layout." + } + }, + "description": "Widgets inside the powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack group widget object." + }, + "layout": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The height of the widget. Should be a non-negative integer." + }, + "width": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The width of the widget. Should be a non-negative integer." + }, + "x": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the x (horizontal) axis. Should be a non-negative integer." + }, + "y": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The position of the widget on the y (vertical) axis. Should be a non-negative integer." + } + }, + "inner_properties": null, + "description": "Powerpack group widget layout." + }, + "live_span": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "1m", + "5m", + "10m", + "15m", + "30m", + "1h", + "4h", + "1d", + "2d", + "1w", + "1mo", + "3mo", + "6mo", + "1y", + "alert" + ], + "properties": null, + "inner_properties": null, + "description": "The available timeframes depend on the widget you are using." + } + }, + "inner_properties": null, + "description": "Powerpack group widget definition object." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the powerpack." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags to identify this powerpack." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of values that the template variable drop-down is limited to." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "One or many template variable default values within the saved view, which are unioned together using `OR` if more than one is specified." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the variable." + }, + "prefix": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down." + } + }, + "description": "List of template variables for this powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack attribute object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the powerpack." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "author": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A unique identifier that represents the user." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "Users resource type." + } + }, + "inner_properties": null, + "description": "Relationship to user object." + } + }, + "inner_properties": null, + "description": "Relationship to user." + } + }, + "inner_properties": null, + "description": "Powerpack relationship object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of widget, must be powerpack." + } + }, + "inner_properties": null, + "description": "Powerpack data object." + } + }, + "inner_properties": null, + "description": "Update a powerpack request body." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Powerpacks are templated groups of dashboard widgets you can save from an existing dashboard and turn into reusable packs in the widget tray.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Powerpack data object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Powerpack attribute object.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of this powerpack.\",\n \"example\": \"Powerpack for ABC\",\n \"type\": \"string\"\n },\n \"group_widget\": {\n \"description\": \"Powerpack group widget definition object.\",\n \"properties\": {\n \"definition\": {\n \"description\": \"Powerpack group widget object.\",\n \"properties\": {\n \"layout_type\": {\n \"description\": \"Layout type of widgets.\",\n \"example\": \"ordered\",\n \"type\": \"string\"\n },\n \"show_title\": {\n \"description\": \"Boolean indicating whether powerpack group title should be visible or not.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"Name for the group widget.\",\n \"example\": \"Sample Powerpack\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Type of widget, must be group.\",\n \"example\": \"group\",\n \"type\": \"string\"\n },\n \"widgets\": {\n \"description\": \"Widgets inside the powerpack.\",\n \"example\": [\n {\n \"definition\": {\n \"content\": \"example\",\n \"type\": \"note\"\n },\n \"layout\": {\n \"height\": 5,\n \"width\": 10,\n \"x\": 0,\n \"y\": 0\n }\n }\n ],\n \"items\": {\n \"description\": \"Powerpack group widget definition of individual widgets.\",\n \"properties\": {\n \"definition\": {\n \"additionalProperties\": {},\n \"description\": \"Information about widget.\",\n \"example\": {\n \"definition\": {\n \"content\": \"example\",\n \"type\": \"note\"\n }\n },\n \"type\": \"object\"\n },\n \"layout\": {\n \"description\": \"Powerpack inner widget layout.\",\n \"properties\": {\n \"height\": {\n \"description\": \"The height of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"width\": {\n \"description\": \"The width of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"x\": {\n \"description\": \"The position of the widget on the x (horizontal) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"y\": {\n \"description\": \"The position of the widget on the y (vertical) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"x\",\n \"y\",\n \"width\",\n \"height\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"definition\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"widgets\",\n \"layout_type\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"layout\": {\n \"description\": \"Powerpack group widget layout.\",\n \"properties\": {\n \"height\": {\n \"description\": \"The height of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"width\": {\n \"description\": \"The width of the widget. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"x\": {\n \"description\": \"The position of the widget on the x (horizontal) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"y\": {\n \"description\": \"The position of the widget on the y (vertical) axis. Should be a non-negative integer.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"x\",\n \"y\",\n \"width\",\n \"height\"\n ],\n \"type\": \"object\"\n },\n \"live_span\": {\n \"description\": \"The available timeframes depend on the widget you are using.\",\n \"enum\": [\n \"1m\",\n \"5m\",\n \"10m\",\n \"15m\",\n \"30m\",\n \"1h\",\n \"4h\",\n \"1d\",\n \"2d\",\n \"1w\",\n \"1mo\",\n \"3mo\",\n \"6mo\",\n \"1y\",\n \"alert\"\n ],\n \"example\": \"5m\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PAST_ONE_MINUTE\",\n \"PAST_FIVE_MINUTES\",\n \"PAST_TEN_MINUTES\",\n \"PAST_FIFTEEN_MINUTES\",\n \"PAST_THIRTY_MINUTES\",\n \"PAST_ONE_HOUR\",\n \"PAST_FOUR_HOURS\",\n \"PAST_ONE_DAY\",\n \"PAST_TWO_DAYS\",\n \"PAST_ONE_WEEK\",\n \"PAST_ONE_MONTH\",\n \"PAST_THREE_MONTHS\",\n \"PAST_SIX_MONTHS\",\n \"PAST_ONE_YEAR\",\n \"ALERT\"\n ]\n }\n },\n \"required\": [\n \"definition\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the powerpack.\",\n \"example\": \"Sample Powerpack\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"List of tags to identify this powerpack.\",\n \"example\": [\n \"tag:foo1\"\n ],\n \"items\": {\n \"maxLength\": 80,\n \"type\": \"string\"\n },\n \"maxItems\": 8,\n \"type\": \"array\"\n },\n \"template_variables\": {\n \"description\": \"List of template variables for this powerpack.\",\n \"example\": [\n {\n \"defaults\": [\n \"*\"\n ],\n \"name\": \"test\"\n }\n ],\n \"items\": {\n \"description\": \"Powerpack template variables.\",\n \"properties\": {\n \"available_values\": {\n \"description\": \"The list of values that the template variable drop-down is limited to.\",\n \"example\": [\n \"my-host\",\n \"host1\",\n \"host2\"\n ],\n \"items\": {\n \"description\": \"Template variable value.\",\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"defaults\": {\n \"description\": \"One or many template variable default values within the saved view, which are unioned together using `OR` if more than one is specified.\",\n \"items\": {\n \"description\": \"One or many default values of the template variable.\",\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the variable.\",\n \"example\": \"datacenter\",\n \"type\": \"string\"\n },\n \"prefix\": {\n \"description\": \"The tag prefix associated with the variable. Only tags with this prefix appear in the variable drop-down.\",\n \"example\": \"host\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"group_widget\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the powerpack.\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Powerpack relationship object.\",\n \"properties\": {\n \"author\": {\n \"description\": \"Relationship to user.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Relationship to user object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"A unique identifier that represents the user.\",\n \"example\": \"00000000-0000-0000-2345-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"users\",\n \"description\": \"Users resource type.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Type of widget, must be powerpack.\",\n \"example\": \"powerpack\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Update a powerpack request body.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateReferenceTable.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateReferenceTable.json new file mode 100644 index 00000000..20a312ca --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateReferenceTable.json @@ -0,0 +1,387 @@ +{ + "name": "UpdateReferenceTable", + "fully_qualified_name": "DatadogApi.UpdateReferenceTable@0.1.0", + "description": "Update data, description, and tags of a reference table.\n\nThis tool updates a reference table by its ID, allowing changes to the data, description, or tags. It is useful when modifications are needed for existing reference tables, including those with different source types like LOCAL_FILE, S3, GCS, or AZURE.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "reference_table_id", + "required": true, + "description": "The ID of the reference table that needs to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table to update" + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "update_data_description_tags", + "required": true, + "description": "JSON object to update the reference table's data, description, and tags. Includes table ID, resource type, data attributes like description, file metadata, schema, sync status, and tags.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 reference table." + }, + "file_metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `PatchTableRequestDataAttributesFileMetadata` object." + }, + "schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field name." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "INT32" + ], + "properties": null, + "inner_properties": null, + "description": "The field type for reference table schema fields." + } + }, + "description": "The `schema` `fields`." + }, + "primary_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of field names that serve as primary keys for the table. Only one primary key is supported, and it is used as an ID to retrieve rows." + } + }, + "inner_properties": null, + "description": "The definition of `PatchTableRequestDataAttributesSchema` object." + }, + "sync_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether this table is synced automatically." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tags of the reference table." + } + }, + "inner_properties": null, + "description": "The definition of `PatchTableRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "reference_table" + ], + "properties": null, + "inner_properties": null, + "description": "Reference table resource type." + } + }, + "inner_properties": null, + "description": "The definition of `PatchTableRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateReferenceTable'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/reference-tables/tables/{id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "id", + "tool_parameter_name": "reference_table_id", + "description": "The ID of the reference table to update", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table to update" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_data_description_tags", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 reference table." + }, + "file_metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `PatchTableRequestDataAttributesFileMetadata` object." + }, + "schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "fields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field name." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "INT32" + ], + "properties": null, + "inner_properties": null, + "description": "The field type for reference table schema fields." + } + }, + "description": "The `schema` `fields`." + }, + "primary_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of field names that serve as primary keys for the table. Only one primary key is supported, and it is used as an ID to retrieve rows." + } + }, + "inner_properties": null, + "description": "The definition of `PatchTableRequestDataAttributesSchema` object." + }, + "sync_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether this table is synced automatically." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tags of the reference table." + } + }, + "inner_properties": null, + "description": "The definition of `PatchTableRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the reference table." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "reference_table" + ], + "properties": null, + "inner_properties": null, + "description": "Reference table resource type." + } + }, + "inner_properties": null, + "description": "The definition of `PatchTableRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `PatchTableRequest` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"description\": \"this is a cloud table generated via a cloud bucket sync\",\n \"file_metadata\": {\n \"access_details\": {\n \"aws_detail\": {\n \"aws_account_id\": \"test-account-id\",\n \"aws_bucket_name\": \"test-bucket\",\n \"file_path\": \"test_rt.csv\"\n }\n },\n \"sync_enabled\": true\n },\n \"schema\": {\n \"fields\": [\n {\n \"name\": \"id\",\n \"type\": \"INT32\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\"\n }\n ],\n \"primary_keys\": [\n \"id\"\n ]\n },\n \"sync_enabled\": false,\n \"tags\": [\n \"test_tag\"\n ]\n },\n \"id\": \"00000000-0000-0000-0000-000000000000\",\n \"type\": \"reference_table\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `PatchTableRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributes` object.\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the reference table.\",\n \"type\": \"string\"\n },\n \"file_metadata\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributesFileMetadata` object.\",\n \"oneOf\": [\n {\n \"additionalProperties\": false,\n \"description\": \"Cloud storage file metadata for patch requests. Allows partial updates of access_details and sync_enabled.\",\n \"properties\": {\n \"access_details\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributesFileMetadataOneOfAccessDetails` object.\",\n \"properties\": {\n \"aws_detail\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributesFileMetadataOneOfAccessDetailsAwsDetail` object.\",\n \"properties\": {\n \"aws_account_id\": {\n \"description\": \"The ID of the AWS account.\",\n \"example\": \"123456789000\",\n \"type\": \"string\"\n },\n \"aws_bucket_name\": {\n \"description\": \"The name of the AWS bucket.\",\n \"example\": \"example-data-bucket\",\n \"type\": \"string\"\n },\n \"file_path\": {\n \"description\": \"The relative file path from the S3 bucket root to the CSV file.\",\n \"example\": \"reference-tables/users.csv\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-oneOf-parent\": [\n \"AwsDetail\"\n ]\n },\n \"azure_detail\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributesFileMetadataOneOfAccessDetailsAzureDetail` object.\",\n \"properties\": {\n \"azure_client_id\": {\n \"description\": \"The Azure client ID.\",\n \"example\": \"aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb\",\n \"type\": \"string\"\n },\n \"azure_container_name\": {\n \"description\": \"The name of the Azure container.\",\n \"example\": \"reference-data\",\n \"type\": \"string\"\n },\n \"azure_storage_account_name\": {\n \"description\": \"The name of the Azure storage account.\",\n \"example\": \"examplestorageaccount\",\n \"type\": \"string\"\n },\n \"azure_tenant_id\": {\n \"description\": \"The ID of the Azure tenant.\",\n \"example\": \"cccccccc-4444-5555-6666-dddddddddddd\",\n \"type\": \"string\"\n },\n \"file_path\": {\n \"description\": \"The relative file path from the Azure container root to the CSV file.\",\n \"example\": \"tables/users.csv\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-oneOf-parent\": [\n \"AzureDetail\"\n ]\n },\n \"gcp_detail\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributesFileMetadataOneOfAccessDetailsGcpDetail` object.\",\n \"properties\": {\n \"file_path\": {\n \"description\": \"The relative file path from the GCS bucket root to the CSV file.\",\n \"example\": \"data/reference_tables/users.csv\",\n \"type\": \"string\"\n },\n \"gcp_bucket_name\": {\n \"description\": \"The name of the GCP bucket.\",\n \"example\": \"example-data-bucket\",\n \"type\": \"string\"\n },\n \"gcp_project_id\": {\n \"description\": \"The ID of the GCP project.\",\n \"example\": \"example-gcp-project-12345\",\n \"type\": \"string\"\n },\n \"gcp_service_account_email\": {\n \"description\": \"The email of the GCP service account.\",\n \"example\": \"example-service@example-gcp-project-12345.iam.gserviceaccount.com\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\",\n \"x-oneOf-parent\": [\n \"GcpDetail\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sync_enabled\": {\n \"description\": \"Whether this table is synced automatically.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"title\": \"CloudFileMetadataV2\",\n \"type\": \"object\"\n },\n {\n \"additionalProperties\": false,\n \"description\": \"Local file metadata for patch requests using upload ID.\",\n \"properties\": {\n \"upload_id\": {\n \"description\": \"The upload ID.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"upload_id\"\n ],\n \"title\": \"LocalFileMetadataV2\",\n \"type\": \"object\"\n }\n ]\n },\n \"schema\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributesSchema` object.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `schema` `fields`.\",\n \"items\": {\n \"description\": \"The definition of `PatchTableRequestDataAttributesSchemaFieldsItems` object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The field type for reference table schema fields.\",\n \"enum\": [\n \"STRING\",\n \"INT32\"\n ],\n \"example\": \"STRING\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"INT32\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"primary_keys\": {\n \"description\": \"List of field names that serve as primary keys for the table. Only one primary key is supported, and it is used as an ID to retrieve rows.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\",\n \"primary_keys\"\n ],\n \"type\": \"object\"\n },\n \"sync_enabled\": {\n \"description\": \"Whether this table is synced automatically.\",\n \"type\": \"boolean\"\n },\n \"tags\": {\n \"description\": \"The tags of the reference table.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the reference table.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"reference_table\",\n \"description\": \"Reference table resource type.\",\n \"enum\": [\n \"reference_table\"\n ],\n \"example\": \"reference_table\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REFERENCE_TABLE\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateResourceFilters.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateResourceFilters.json new file mode 100644 index 00000000..2ff94bca --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateResourceFilters.json @@ -0,0 +1,232 @@ +{ + "name": "UpdateResourceFilters", + "fully_qualified_name": "DatadogApi.UpdateResourceFilters@0.1.0", + "description": "Update resource filters in cloud security management.\n\nUse this tool to modify resource filters within Datadog's cloud security management. It should be called when you need to change which resources are included or excluded for evaluation.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "resource_filter_data", + "required": true, + "description": "JSON data for the resource filter update. Includes attributes like `cloud_provider`, `uuid`, and type `csm_resource_filter`.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cloud_provider": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A map of cloud provider names (e.g., \"aws\", \"gcp\", \"azure\") to a map of account/resource IDs and their associated tag filters." + }, + "uuid": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the resource filter." + } + }, + "inner_properties": null, + "description": "Attributes of a resource filter." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `UpdateResourceEvaluationFiltersRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "csm_resource_filter" + ], + "properties": null, + "inner_properties": null, + "description": "Constant string to identify the request type." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateResourceFilterRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateResourceEvaluationFilters'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cloud_security_management/resource_filters", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "resource_filter_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "cloud_provider": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A map of cloud provider names (e.g., \"aws\", \"gcp\", \"azure\") to a map of account/resource IDs and their associated tag filters." + }, + "uuid": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The UUID of the resource filter." + } + }, + "inner_properties": null, + "description": "Attributes of a resource filter." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `UpdateResourceEvaluationFiltersRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "csm_resource_filter" + ], + "properties": null, + "inner_properties": null, + "description": "Constant string to identify the request type." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateResourceFilterRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object to update a resource filter.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `UpdateResourceFilterRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of a resource filter.\",\n \"example\": {\n \"aws\": {\n \"123456789\": [\n \"environment:production\",\n \"team:devops\"\n ]\n },\n \"azure\": {\n \"sub-001\": [\n \"app:frontend\"\n ]\n },\n \"gcp\": {\n \"project-abc\": [\n \"region:us-central1\"\n ]\n }\n },\n \"properties\": {\n \"cloud_provider\": {\n \"additionalProperties\": {\n \"additionalProperties\": {\n \"items\": {\n \"description\": \"Tag filter in format \\\"key:value\\\"\",\n \"example\": \"environment:production\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": \"object\"\n },\n \"description\": \"A map of cloud provider names (e.g., \\\"aws\\\", \\\"gcp\\\", \\\"azure\\\") to a map of account/resource IDs and their associated tag filters.\",\n \"type\": \"object\"\n },\n \"uuid\": {\n \"description\": \"The UUID of the resource filter.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"cloud_provider\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `UpdateResourceEvaluationFiltersRequestData` `id`.\",\n \"example\": \"csm_resource_filter\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Constant string to identify the request type.\",\n \"enum\": [\n \"csm_resource_filter\"\n ],\n \"example\": \"csm_resource_filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CSM_RESOURCE_FILTER\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRestrictionPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRestrictionPolicy.json new file mode 100644 index 00000000..ba7421de --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRestrictionPolicy.json @@ -0,0 +1,316 @@ +{ + "name": "UpdateRestrictionPolicy", + "fully_qualified_name": "DatadogApi.UpdateRestrictionPolicy@0.1.0", + "description": "Update the restriction policy for a Datadog resource.\n\nUse this tool to update the restriction policy associated with various Datadog resources, such as dashboards, integration services, notebooks, and more. You can specify the resource type and the new access permissions like viewer, editor, or others depending on the resource.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "resource_identifier", + "required": true, + "description": "Identifier of the resource, formatted as `type:id`. Includes supported types like `dashboard`, `integration-service`, `notebook`, and others.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules." + }, + "inferrable": true, + "http_endpoint_parameter_name": "resource_id" + }, + { + "name": "restriction_policy_payload", + "required": true, + "description": "The payload for the restriction policy update, including attributes like bindings, principals, and relation types.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bindings": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "principals": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An array of principals. A principal is a subject or group of subjects.\nEach principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`.\nThe org ID can be obtained through the api/v2/current_user API.\nThe user principal type accepts service account IDs." + }, + "relation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The role/level of access." + } + }, + "description": "An array of bindings." + } + }, + "inner_properties": null, + "description": "Restriction policy attributes." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier, always equivalent to the value specified in the `resource_id` path parameter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "restriction_policy" + ], + "properties": null, + "inner_properties": null, + "description": "Restriction policy type." + } + }, + "inner_properties": null, + "description": "Restriction policy object." + } + }, + "inner_properties": null, + "description": "Restriction policy payload" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "allow_self_lockout", + "required": false, + "description": "Set to true to allow admins to remove their own access from the resource. Default is false, preventing self-lockout.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allows admins (users with the `user_access_manage` permission) to remove their own access from the resource if set to `true`. By default, this is set to `false`, preventing admins from locking themselves out." + }, + "inferrable": true, + "http_endpoint_parameter_name": "allow_self_lockout" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateRestrictionPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/restriction_policy/{resource_id}", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "allow_self_lockout", + "tool_parameter_name": "allow_self_lockout", + "description": "Allows admins (users with the `user_access_manage` permission) to remove their own access from the resource if set to `true`. By default, this is set to `false`, preventing admins from locking themselves out.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Allows admins (users with the `user_access_manage` permission) to remove their own access from the resource if set to `true`. By default, this is set to `false`, preventing admins from locking themselves out." + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "resource_id", + "tool_parameter_name": "resource_identifier", + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier, formatted as `type:id`. Supported types: `dashboard`, `integration-service`, `integration-webhook`, `notebook`, `reference-table`, `security-rule`, `slo`, `workflow`, `app-builder-app`, `connection`, `connection-group`, `rum-application`, `cross-org-connection`, `spreadsheet`, `on-call-schedule`, `on-call-escalation-policy`, `on-call-team-routing-rules." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "restriction_policy_payload", + "description": "Restriction policy payload", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bindings": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "principals": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An array of principals. A principal is a subject or group of subjects.\nEach principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`.\nThe org ID can be obtained through the api/v2/current_user API.\nThe user principal type accepts service account IDs." + }, + "relation": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The role/level of access." + } + }, + "description": "An array of bindings." + } + }, + "inner_properties": null, + "description": "Restriction policy attributes." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier, always equivalent to the value specified in the `resource_id` path parameter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "restriction_policy" + ], + "properties": null, + "inner_properties": null, + "description": "Restriction policy type." + } + }, + "inner_properties": null, + "description": "Restriction policy object." + } + }, + "inner_properties": null, + "description": "Restriction policy payload" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update request for a restriction policy.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Restriction policy object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Restriction policy attributes.\",\n \"example\": {\n \"bindings\": []\n },\n \"properties\": {\n \"bindings\": {\n \"description\": \"An array of bindings.\",\n \"items\": {\n \"description\": \"Specifies which principals are associated with a relation.\",\n \"properties\": {\n \"principals\": {\n \"description\": \"An array of principals. A principal is a subject or group of subjects.\\nEach principal is formatted as `type:id`. Supported types: `role`, `team`, `user`, and `org`.\\nThe org ID can be obtained through the api/v2/current_user API.\\nThe user principal type accepts service account IDs.\",\n \"example\": [\n \"role:00000000-0000-1111-0000-000000000000\"\n ],\n \"items\": {\n \"description\": \"Subject or group of subjects. Each principal is formatted as `type:id`.\\nSupported types: `role`, `team`, `user`, and `org`.\\nThe org ID can be obtained through the api/v2/current_user API.\\nThe user principal type accepts service account IDs.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"relation\": {\n \"description\": \"The role/level of access.\",\n \"example\": \"editor\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"relation\",\n \"principals\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"bindings\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The identifier, always equivalent to the value specified in the `resource_id` path parameter.\",\n \"example\": \"dashboard:abc-def-ghi\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"restriction_policy\",\n \"description\": \"Restriction policy type.\",\n \"enum\": [\n \"restriction_policy\"\n ],\n \"example\": \"restriction_policy\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RESTRICTION_POLICY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Restriction policy payload\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumApplication.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumApplication.json new file mode 100644 index 00000000..8ddffeba --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumApplication.json @@ -0,0 +1,342 @@ +{ + "name": "UpdateRumApplication", + "fully_qualified_name": "DatadogApi.UpdateRumApplication@0.1.0", + "description": "Update settings of a specific RUM application by ID.\n\nUse this tool to modify the configuration or details of a RUM (Real User Monitoring) application within your organization by providing its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The ID of the RUM application to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "id" + }, + { + "name": "rum_app_id", + "required": true, + "description": "The unique ID of the RUM application to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "rum_application_update_type", + "required": true, + "description": "Specifies the RUM application update type. Allowed value is 'rum_application_update'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_application_update" + ], + "properties": null, + "inner_properties": null, + "description": "RUM application update type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "rum_application_name", + "required": false, + "description": "The name of the RUM application to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the RUM application." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "product_analytics_retention_state", + "required": false, + "description": "Set the retention policy for Product Analytics data derived from RUM events. Accepted values: 'MAX', 'NONE'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "MAX", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Controls the retention policy for Product Analytics data derived from RUM events." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.product_analytics_retention_state" + }, + { + "name": "rum_event_processing_state", + "required": false, + "description": "Configures which RUM events are processed and stored. Accepts 'ALL', 'ERROR_FOCUSED_MODE', or 'NONE'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALL", + "ERROR_FOCUSED_MODE", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Configures which RUM events are processed and stored for the application." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.rum_event_processing_state" + }, + { + "name": "rum_application_type", + "required": false, + "description": "Specify the type of RUM application. Valid options: `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateRUMApplication'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "rum_application_name", + "description": "Name of the RUM application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the RUM application." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.product_analytics_retention_state", + "tool_parameter_name": "product_analytics_retention_state", + "description": "Controls the retention policy for Product Analytics data derived from RUM events.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "MAX", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Controls the retention policy for Product Analytics data derived from RUM events." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.rum_event_processing_state", + "tool_parameter_name": "rum_event_processing_state", + "description": "Configures which RUM events are processed and stored for the application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ALL", + "ERROR_FOCUSED_MODE", + "NONE" + ], + "properties": null, + "inner_properties": null, + "description": "Configures which RUM events are processed and stored for the application." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.type", + "tool_parameter_name": "rum_application_type", + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "rum_app_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "rum_application_update_type", + "description": "RUM application update type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_application_update" + ], + "properties": null, + "inner_properties": null, + "description": "RUM application update type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "rum_application_update", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"RUM application update request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"RUM application update.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"RUM application update attributes.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the RUM application.\",\n \"example\": \"updated_name_for_my_existing_rum_application\",\n \"type\": \"string\"\n },\n \"product_analytics_retention_state\": {\n \"description\": \"Controls the retention policy for Product Analytics data derived from RUM events.\",\n \"enum\": [\n \"MAX\",\n \"NONE\"\n ],\n \"example\": \"MAX\",\n \"type\": \"string\",\n \"x-enum-descriptions\": [\n \"Store Product Analytics data for the maximum available retention period\",\n \"Do not store Product Analytics data\"\n ],\n \"x-enum-varnames\": [\n \"MAX\",\n \"NONE\"\n ]\n },\n \"rum_event_processing_state\": {\n \"description\": \"Configures which RUM events are processed and stored for the application.\",\n \"enum\": [\n \"ALL\",\n \"ERROR_FOCUSED_MODE\",\n \"NONE\"\n ],\n \"example\": \"ALL\",\n \"type\": \"string\",\n \"x-enum-descriptions\": [\n \"Process and store all RUM events (sessions, views, actions, resources, errors)\",\n \"Process and store only error events and related critical events\",\n \"Disable RUM event processing\\u2014no events are stored\"\n ],\n \"x-enum-varnames\": [\n \"ALL\",\n \"ERROR_FOCUSED_MODE\",\n \"NONE\"\n ]\n },\n \"type\": {\n \"description\": \"Type of the RUM application. Supported values are `browser`, `ios`, `android`, `react-native`, `flutter`, `roku`, `electron`, `unity`, `kotlin-multiplatform`.\",\n \"example\": \"browser\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"RUM application ID.\",\n \"example\": \"abcd1234-0000-0000-abcd-1234abcd5678\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"rum_application_update\",\n \"description\": \"RUM application update type.\",\n \"enum\": [\n \"rum_application_update\"\n ],\n \"example\": \"rum_application_update\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RUM_APPLICATION_UPDATE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumMetric.json new file mode 100644 index 00000000..988613eb --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumMetric.json @@ -0,0 +1,351 @@ +{ + "name": "UpdateRumMetric", + "fully_qualified_name": "DatadogApi.UpdateRumMetric@0.1.0", + "description": "Update a specific rum-based metric in your organization.\n\nUse this tool to update details of a specific rum-based metric within your organization's Datadog settings. Ideal for modifying existing metrics to adjust configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "metric_name", + "required": true, + "description": "The name of the rum-based metric to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + }, + { + "name": "new_rum_metric_definition", + "required": true, + "description": "JSON object containing the new definition of the rum-based metric, including compute rules, filters, and other properties.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the rum-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the RUM search syntax." + } + }, + "inner_properties": null, + "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the rum-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The rum-based metric properties that will be updated." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be rum_metrics." + } + }, + "inner_properties": null, + "description": "The new rum-based metric properties." + } + }, + "inner_properties": null, + "description": "New definition of the rum-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateRumMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/config/metrics/{metric_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "metric_name", + "description": "The name of the rum-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_rum_metric_definition", + "description": "New definition of the rum-based metric.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the rum-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the RUM search syntax." + } + }, + "inner_properties": null, + "description": "The rum-based metric filter. Events matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the rum-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, `path` is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The rum-based metric properties that will be updated." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the rum-based metric." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rum_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be rum_metrics." + } + }, + "inner_properties": null, + "description": "The new rum-based metric properties." + } + }, + "inner_properties": null, + "description": "New definition of the rum-based metric." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The new rum-based metric body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new rum-based metric properties.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The rum-based metric properties that will be updated.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The compute rule to compute the rum-based metric.\",\n \"properties\": {\n \"include_percentiles\": {\n \"description\": \"Toggle to include or exclude percentile aggregations for distribution metrics.\\nOnly present when `aggregation_type` is `distribution`.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"description\": \"The rum-based metric filter. Events matching this filter will be aggregated in this metric.\",\n \"properties\": {\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the RUM search syntax.\",\n \"example\": \"@service:web-ui: \",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group by rule.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The path to the value the rum-based metric will be aggregated over.\",\n \"example\": \"@browser.name\",\n \"type\": \"string\"\n },\n \"tag_name\": {\n \"description\": \"Eventual name of the tag that gets created. By default, `path` is used as the tag name.\",\n \"example\": \"browser_name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The name of the rum-based metric.\",\n \"example\": \"rum.sessions.webui.count\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"rum_metrics\",\n \"description\": \"The type of the resource. The value should always be rum_metrics.\",\n \"enum\": [\n \"rum_metrics\"\n ],\n \"example\": \"rum_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RUM_METRICS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the rum-based metric.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumRetentionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumRetentionFilter.json new file mode 100644 index 00000000..2399f366 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateRumRetentionFilter.json @@ -0,0 +1,410 @@ +{ + "name": "UpdateRumRetentionFilter", + "fully_qualified_name": "DatadogApi.UpdateRumRetentionFilter@0.1.0", + "description": "Update a RUM retention filter for a RUM application.\n\nUse this tool to modify the retention filter settings of a RUM application. It returns the updated RUM retention filter details if the request succeeds.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rum_application_id", + "required": true, + "description": "The ID of the RUM application to update the retention filter. Required for identifying the application.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "app_id" + }, + { + "name": "retention_filter_id", + "required": true, + "description": "The unique ID of the retention filter to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retention filter ID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rf_id" + }, + { + "name": "filter_id", + "required": true, + "description": "UUID of the retention filter to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of retention filter in UUID." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "resource_type", + "required": true, + "description": "Specifies the resource type for the retention filter. Must be 'retention_filters'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "retention_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be retention_filters." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "rum_event_type_filter", + "required": false, + "description": "Specifies the type of RUM events to filter on, such as 'session', 'view', 'action', etc.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "properties": null, + "inner_properties": null, + "description": "The type of RUM events to filter on." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.event_type" + }, + { + "name": "filter_name", + "required": false, + "description": "The name of the RUM retention filter to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a RUM retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "rum_retention_filter_query", + "required": false, + "description": "The query string used to define criteria for the RUM retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query string for a RUM retention filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.query" + }, + { + "name": "sample_rate", + "required": false, + "description": "The sample rate for a RUM retention filter, an integer between 0 and 100, specifying the percentage of data to sample.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sample rate for a RUM retention filter, between 0 and 100." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.sample_rate" + }, + { + "name": "enable_retention_filter", + "required": false, + "description": "Set to true to enable the retention filter. Set to false to disable it.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the retention filter is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateRetentionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/rum/applications/{app_id}/retention_filters/{rf_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "app_id", + "tool_parameter_name": "rum_application_id", + "description": "RUM application ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "RUM application ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "rf_id", + "tool_parameter_name": "retention_filter_id", + "description": "Retention filter ID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Retention filter ID." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "enable_retention_filter", + "description": "Whether the retention filter is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the retention filter is enabled." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.event_type", + "tool_parameter_name": "rum_event_type_filter", + "description": "The type of RUM events to filter on.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "session", + "view", + "action", + "error", + "resource", + "long_task", + "vital" + ], + "properties": null, + "inner_properties": null, + "description": "The type of RUM events to filter on." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "filter_name", + "description": "The name of a RUM retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of a RUM retention filter." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.query", + "tool_parameter_name": "rum_retention_filter_query", + "description": "The query string for a RUM retention filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query string for a RUM retention filter." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.sample_rate", + "tool_parameter_name": "sample_rate", + "description": "The sample rate for a RUM retention filter, between 0 and 100.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The sample rate for a RUM retention filter, between 0 and 100." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "filter_id", + "description": "ID of retention filter in UUID.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of retention filter in UUID." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource. The value should always be retention_filters.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "retention_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be retention_filters." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "retention_filters", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The RUM retention filter body to update.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new RUM retention filter properties to update.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The object describing attributes of a RUM retention filter to update.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"Whether the retention filter is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"event_type\": {\n \"description\": \"The type of RUM events to filter on.\",\n \"enum\": [\n \"session\",\n \"view\",\n \"action\",\n \"error\",\n \"resource\",\n \"long_task\",\n \"vital\"\n ],\n \"example\": \"session\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SESSION\",\n \"VIEW\",\n \"ACTION\",\n \"ERROR\",\n \"RESOURCE\",\n \"LONG_TASK\",\n \"VITAL\"\n ]\n },\n \"name\": {\n \"description\": \"The name of a RUM retention filter.\",\n \"example\": \"Retention filter for session\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query string for a RUM retention filter.\",\n \"example\": \"@session.has_replay:true\",\n \"type\": \"string\"\n },\n \"sample_rate\": {\n \"description\": \"The sample rate for a RUM retention filter, between 0 and 100.\",\n \"example\": 25,\n \"format\": \"int64\",\n \"maximum\": 100,\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of retention filter in UUID.\",\n \"example\": \"051601eb-54a0-abc0-03f9-cc02efa18892\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"retention_filters\",\n \"description\": \"The type of the resource. The value should always be retention_filters.\",\n \"enum\": [\n \"retention_filters\"\n ],\n \"example\": \"retention_filters\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RETENTION_FILTERS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the RUM retention filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScanningGroup.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScanningGroup.json new file mode 100644 index 00000000..79ff8594 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScanningGroup.json @@ -0,0 +1,587 @@ +{ + "name": "UpdateScanningGroup", + "fully_qualified_name": "DatadogApi.UpdateScanningGroup@0.1.0", + "description": "Update a scanning group's rule order in Datadog.\n\nUse this tool to update and reorder the rules within a specific scanning group in Datadog. Ensure all current rules are included in the update to maintain the group integrity.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "group_id", + "required": true, + "description": "The ID of the scanning group whose rules are being updated. This is required to identify the group.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a group of rules." + }, + "inferrable": true, + "http_endpoint_parameter_name": "group_id" + }, + { + "name": "group_update_data", + "required": true, + "description": "JSON object containing data related to the update of a group, including attributes, relationships, and metadata.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 group." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to filter the events." + } + }, + "inner_properties": null, + "description": "Filter for the Scanning Group." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the group is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the group." + }, + "product_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of products the scanning group applies." + }, + "samplings": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs", + "rum", + "events", + "apm" + ], + "properties": null, + "inner_properties": null, + "description": "Datadog product onto which Sensitive Data Scanner can be activated." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate at which data in product type will be scanned, as a percentage." + } + }, + "description": "List of sampling rates per product type." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner group." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_configuration" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner configuration type." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration data." + }, + "rules": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "description": "Rules included in the group. The order is important." + } + }, + "inner_properties": null, + "description": "Rules included in the group." + } + }, + "inner_properties": null, + "description": "Relationships of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "Data related to the update of a group." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateScanningGroup'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/groups/{group_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "group_id", + "tool_parameter_name": "group_id", + "description": "The ID of a group of rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of a group of rules." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "group_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 group." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to filter the events." + } + }, + "inner_properties": null, + "description": "Filter for the Scanning Group." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the group is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the group." + }, + "product_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of products the scanning group applies." + }, + "samplings": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "product": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs", + "rum", + "events", + "apm" + ], + "properties": null, + "inner_properties": null, + "description": "Datadog product onto which Sensitive Data Scanner can be activated." + }, + "rate": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Rate at which data in product type will be scanned, as a percentage." + } + }, + "description": "List of sampling rates per product type." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner group." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the configuration." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_configuration" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner configuration type." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration." + } + }, + "inner_properties": null, + "description": "A Sensitive Data Scanner configuration data." + }, + "rules": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "description": "Rules included in the group. The order is important." + } + }, + "inner_properties": null, + "description": "Rules included in the group." + } + }, + "inner_properties": null, + "description": "Relationships of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "Data related to the update of a group." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update group request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the update of a group.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the Sensitive Data Scanner group.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of the group.\",\n \"type\": \"string\"\n },\n \"filter\": {\n \"description\": \"Filter for the Scanning Group.\",\n \"properties\": {\n \"query\": {\n \"description\": \"Query to filter the events.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"is_enabled\": {\n \"description\": \"Whether or not the group is enabled.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Name of the group.\",\n \"type\": \"string\"\n },\n \"product_list\": {\n \"description\": \"List of products the scanning group applies.\",\n \"items\": {\n \"default\": \"logs\",\n \"description\": \"Datadog product onto which Sensitive Data Scanner can be activated.\",\n \"enum\": [\n \"logs\",\n \"rum\",\n \"events\",\n \"apm\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"RUM\",\n \"EVENTS\",\n \"APM\"\n ]\n },\n \"type\": \"array\"\n },\n \"samplings\": {\n \"description\": \"List of sampling rates per product type.\",\n \"items\": {\n \"description\": \"Sampling configurations for the Scanning Group.\",\n \"properties\": {\n \"product\": {\n \"default\": \"logs\",\n \"description\": \"Datadog product onto which Sensitive Data Scanner can be activated.\",\n \"enum\": [\n \"logs\",\n \"rum\",\n \"events\",\n \"apm\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"RUM\",\n \"EVENTS\",\n \"APM\"\n ]\n },\n \"rate\": {\n \"description\": \"Rate at which data in product type will be scanned, as a percentage.\",\n \"example\": 100.0,\n \"format\": \"double\",\n \"maximum\": 100.0,\n \"minimum\": 0.0,\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the group.\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Relationships of the group.\",\n \"properties\": {\n \"configuration\": {\n \"description\": \"A Sensitive Data Scanner configuration data.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A Sensitive Data Scanner configuration.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the configuration.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_configuration\",\n \"description\": \"Sensitive Data Scanner configuration type.\",\n \"enum\": [\n \"sensitive_data_scanner_configuration\"\n ],\n \"example\": \"sensitive_data_scanner_configuration\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_CONFIGURATIONS\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"rules\": {\n \"description\": \"Rules included in the group.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Rules included in the group. The order is important.\",\n \"items\": {\n \"description\": \"Rule item included in the group.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the rule.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_rule\",\n \"description\": \"Sensitive Data Scanner rule type.\",\n \"enum\": [\n \"sensitive_data_scanner_rule\"\n ],\n \"example\": \"sensitive_data_scanner_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_RULE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_group\",\n \"description\": \"Sensitive Data Scanner group type.\",\n \"enum\": [\n \"sensitive_data_scanner_group\"\n ],\n \"example\": \"sensitive_data_scanner_group\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_GROUP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"meta\": {\n \"description\": \"Meta payload containing information about the API.\",\n \"properties\": {\n \"version\": {\n \"description\": \"Version of the API (optional).\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\",\n \"meta\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScanningRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScanningRule.json new file mode 100644 index 00000000..83bfcb11 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScanningRule.json @@ -0,0 +1,717 @@ +{ + "name": "UpdateScanningRule", + "fully_qualified_name": "DatadogApi.UpdateScanningRule@0.1.0", + "description": "Update a scanning rule in Datadog.\n\nUse this tool to update a scanning rule in Datadog's sensitive data scanner. It's important to note that the request must not attempt to edit the regex attribute of rules that include a standard_pattern relationship, as these are non-editable.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_id", + "required": true, + "description": "The unique identifier for the scanning rule to be updated. This value is required.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "update_rule_request_body", + "required": true, + "description": "A JSON object containing the attributes and relationships for updating a scanning rule. Do not modify standard pattern relationships.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 rule." + }, + "excluded_namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array." + }, + "included_keyword_configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "character_count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of characters behind a match detected by Sensitive Data Scanner to look for the keywords defined.\n`character_count` should be greater than the maximum length of a keyword defined for a rule." + }, + "keywords": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Keyword list that will be checked during scanning in order to validate a match.\nThe number of keywords in the list must be less than or equal to 30." + }, + "use_recommended_keywords": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Should the rule use the underlying standard pattern keyword configuration. If set to `true`, the rule must be tied\nto a standard pattern. If set to `false`, the specified keywords and `character_count` are applied." + } + }, + "inner_properties": null, + "description": "Object defining a set of keywords and a number of characters that help reduce noise.\nYou can provide a list of keywords you would like to check within a defined proximity of the matching pattern.\nIf any of the keywords are found within the proximity check, the match is kept.\nIf none are found, the match is discarded." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned.\nIf both are missing the whole event is scanned." + }, + "pattern": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Not included if there is a relationship to a standard pattern." + }, + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Integer from 1 (high) to 5 (low) indicating rule issue severity." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags." + }, + "text_replacement": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "number_of_chars": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'partial_replacement_from_beginning'\nor 'partial_replacement_from_end'. It must be > 0." + }, + "replacement_string": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'replacement_string'." + }, + "should_save_match": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with \u2018Data Scanner Unmask\u2019 permission. As a security best practice, avoid masking for highly-sensitive, long-lived data." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "hash", + "replacement_string", + "partial_replacement_from_beginning", + "partial_replacement_from_end" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end." + } + }, + "inner_properties": null, + "description": "Object describing how the scanned event will be replaced." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "group": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "A scanning group." + } + }, + "inner_properties": null, + "description": "A scanning group data." + }, + "standard_pattern": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the standard pattern." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_standard_pattern" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner standard pattern type." + } + }, + "inner_properties": null, + "description": "Data containing the standard pattern id." + } + }, + "inner_properties": null, + "description": "A standard pattern." + } + }, + "inner_properties": null, + "description": "Relationships of a scanning rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "inner_properties": null, + "description": "Data related to the update of a rule." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateScanningRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/sensitive-data-scanner/config/rules/{rule_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "update_rule_request_body", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 rule." + }, + "excluded_namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array." + }, + "included_keyword_configuration": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "character_count": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The number of characters behind a match detected by Sensitive Data Scanner to look for the keywords defined.\n`character_count` should be greater than the maximum length of a keyword defined for a rule." + }, + "keywords": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Keyword list that will be checked during scanning in order to validate a match.\nThe number of keywords in the list must be less than or equal to 30." + }, + "use_recommended_keywords": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Should the rule use the underlying standard pattern keyword configuration. If set to `true`, the rule must be tied\nto a standard pattern. If set to `false`, the specified keywords and `character_count` are applied." + } + }, + "inner_properties": null, + "description": "Object defining a set of keywords and a number of characters that help reduce noise.\nYou can provide a list of keywords you would like to check within a defined proximity of the matching pattern.\nIf any of the keywords are found within the proximity check, the match is kept.\nIf none are found, the match is discarded." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether or not the rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "namespaces": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned.\nIf both are missing the whole event is scanned." + }, + "pattern": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Not included if there is a relationship to a standard pattern." + }, + "priority": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Integer from 1 (high) to 5 (low) indicating rule issue severity." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of tags." + }, + "text_replacement": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "number_of_chars": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'partial_replacement_from_beginning'\nor 'partial_replacement_from_end'. It must be > 0." + }, + "replacement_string": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Required if type == 'replacement_string'." + }, + "should_save_match": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with \u2018Data Scanner Unmask\u2019 permission. As a security best practice, avoid masking for highly-sensitive, long-lived data." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "none", + "hash", + "replacement_string", + "partial_replacement_from_beginning", + "partial_replacement_from_end" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the replacement text. None means no replacement.\nhash means the data will be stubbed. replacement_string means that\none can chose a text to replace the data. partial_replacement_from_beginning\nallows a user to partially replace the data from the beginning, and\npartial_replacement_from_end on the other hand, allows to replace data from\nthe end." + } + }, + "inner_properties": null, + "description": "Object describing how the scanned event will be replaced." + } + }, + "inner_properties": null, + "description": "Attributes of the Sensitive Data Scanner rule." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the rule." + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "group": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the group." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_group" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner group type." + } + }, + "inner_properties": null, + "description": "A scanning group." + } + }, + "inner_properties": null, + "description": "A scanning group data." + }, + "standard_pattern": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the standard pattern." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_standard_pattern" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner standard pattern type." + } + }, + "inner_properties": null, + "description": "Data containing the standard pattern id." + } + }, + "inner_properties": null, + "description": "A standard pattern." + } + }, + "inner_properties": null, + "description": "Relationships of a scanning rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "sensitive_data_scanner_rule" + ], + "properties": null, + "inner_properties": null, + "description": "Sensitive Data Scanner rule type." + } + }, + "inner_properties": null, + "description": "Data related to the update of a rule." + }, + "meta": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Version of the API (optional)." + } + }, + "inner_properties": null, + "description": "Meta payload containing information about the API." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update rule request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the update of a rule.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes of the Sensitive Data Scanner rule.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Description of the rule.\",\n \"type\": \"string\"\n },\n \"excluded_namespaces\": {\n \"description\": \"Attributes excluded from the scan. If namespaces is provided, it has to be a sub-path of the namespaces array.\",\n \"example\": [\n \"admin.name\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"included_keyword_configuration\": {\n \"description\": \"Object defining a set of keywords and a number of characters that help reduce noise.\\nYou can provide a list of keywords you would like to check within a defined proximity of the matching pattern.\\nIf any of the keywords are found within the proximity check, the match is kept.\\nIf none are found, the match is discarded.\",\n \"properties\": {\n \"character_count\": {\n \"description\": \"The number of characters behind a match detected by Sensitive Data Scanner to look for the keywords defined.\\n`character_count` should be greater than the maximum length of a keyword defined for a rule.\",\n \"example\": 30,\n \"format\": \"int64\",\n \"maximum\": 50,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"keywords\": {\n \"description\": \"Keyword list that will be checked during scanning in order to validate a match.\\nThe number of keywords in the list must be less than or equal to 30.\",\n \"example\": [\n \"credit card\",\n \"cc\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"use_recommended_keywords\": {\n \"description\": \"Should the rule use the underlying standard pattern keyword configuration. If set to `true`, the rule must be tied\\nto a standard pattern. If set to `false`, the specified keywords and `character_count` are applied.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"keywords\",\n \"character_count\"\n ],\n \"type\": \"object\"\n },\n \"is_enabled\": {\n \"description\": \"Whether or not the rule is enabled.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"Name of the rule.\",\n \"type\": \"string\"\n },\n \"namespaces\": {\n \"description\": \"Attributes included in the scan. If namespaces is empty or missing, all attributes except excluded_namespaces are scanned.\\nIf both are missing the whole event is scanned.\",\n \"example\": [\n \"admin\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"pattern\": {\n \"description\": \"Not included if there is a relationship to a standard pattern.\",\n \"type\": \"string\"\n },\n \"priority\": {\n \"description\": \"Integer from 1 (high) to 5 (low) indicating rule issue severity.\",\n \"format\": \"int64\",\n \"maximum\": 5,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"tags\": {\n \"description\": \"List of tags.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"text_replacement\": {\n \"description\": \"Object describing how the scanned event will be replaced.\",\n \"properties\": {\n \"number_of_chars\": {\n \"description\": \"Required if type == 'partial_replacement_from_beginning'\\nor 'partial_replacement_from_end'. It must be > 0.\",\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"replacement_string\": {\n \"description\": \"Required if type == 'replacement_string'.\",\n \"type\": \"string\"\n },\n \"should_save_match\": {\n \"description\": \"Only valid when type == `replacement_string`. When enabled, matches can be unmasked in logs by users with \\u2018Data Scanner Unmask\\u2019 permission. As a security best practice, avoid masking for highly-sensitive, long-lived data.\",\n \"type\": \"boolean\"\n },\n \"type\": {\n \"default\": \"none\",\n \"description\": \"Type of the replacement text. None means no replacement.\\nhash means the data will be stubbed. replacement_string means that\\none can chose a text to replace the data. partial_replacement_from_beginning\\nallows a user to partially replace the data from the beginning, and\\npartial_replacement_from_end on the other hand, allows to replace data from\\nthe end.\",\n \"enum\": [\n \"none\",\n \"hash\",\n \"replacement_string\",\n \"partial_replacement_from_beginning\",\n \"partial_replacement_from_end\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NONE\",\n \"HASH\",\n \"REPLACEMENT_STRING\",\n \"PARTIAL_REPLACEMENT_FROM_BEGINNING\",\n \"PARTIAL_REPLACEMENT_FROM_END\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"ID of the rule.\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"Relationships of a scanning rule.\",\n \"properties\": {\n \"group\": {\n \"description\": \"A scanning group data.\",\n \"properties\": {\n \"data\": {\n \"description\": \"A scanning group.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the group.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_group\",\n \"description\": \"Sensitive Data Scanner group type.\",\n \"enum\": [\n \"sensitive_data_scanner_group\"\n ],\n \"example\": \"sensitive_data_scanner_group\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_GROUP\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"standard_pattern\": {\n \"description\": \"A standard pattern.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data containing the standard pattern id.\",\n \"properties\": {\n \"id\": {\n \"description\": \"ID of the standard pattern.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_standard_pattern\",\n \"description\": \"Sensitive Data Scanner standard pattern type.\",\n \"enum\": [\n \"sensitive_data_scanner_standard_pattern\"\n ],\n \"example\": \"sensitive_data_scanner_standard_pattern\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_STANDARD_PATTERN\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner_rule\",\n \"description\": \"Sensitive Data Scanner rule type.\",\n \"enum\": [\n \"sensitive_data_scanner_rule\"\n ],\n \"example\": \"sensitive_data_scanner_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER_RULE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"meta\": {\n \"description\": \"Meta payload containing information about the API.\",\n \"properties\": {\n \"version\": {\n \"description\": \"Version of the API (optional).\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\",\n \"meta\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScorecardOutcomes.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScorecardOutcomes.json new file mode 100644 index 00000000..d69db86c --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScorecardOutcomes.json @@ -0,0 +1,274 @@ +{ + "name": "UpdateScorecardOutcomes", + "fully_qualified_name": "DatadogApi.UpdateScorecardOutcomes@0.1.0", + "description": "Update multiple scorecard rule outcomes in Datadog.\n\nUse this tool to update several scorecard rule outcomes in Datadog with a single request. Ideal for synchronizing or modifying multiple outcomes efficiently.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "scorecard_outcomes", + "required": true, + "description": "A JSON object representing a set of scorecard outcomes to be updated. Includes the type and attributes such as results with details like entity_reference, remarks, rule_id, and state.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "results": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "entity_reference": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique reference for an IDP entity." + }, + "remarks": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any remarks regarding the scorecard rule's evaluation. Supports HTML hyperlinks." + }, + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID for a scorecard rule." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pass", + "fail", + "skip" + ], + "properties": null, + "inner_properties": null, + "description": "The state of the rule evaluation." + } + }, + "description": "Set of scorecard outcomes to update asynchronously." + } + }, + "inner_properties": null, + "description": "The JSON:API attributes for a batched set of scorecard outcomes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "batched-outcome" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard outcomes." + } + }, + "inner_properties": null, + "description": "Scorecard outcomes batch request data." + } + }, + "inner_properties": null, + "description": "Set of scorecard outcomes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateScorecardOutcomesAsync'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/scorecard/outcomes", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "scorecard_outcomes", + "description": "Set of scorecard outcomes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "results": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "entity_reference": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique reference for an IDP entity." + }, + "remarks": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Any remarks regarding the scorecard rule's evaluation. Supports HTML hyperlinks." + }, + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique ID for a scorecard rule." + }, + "state": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "pass", + "fail", + "skip" + ], + "properties": null, + "inner_properties": null, + "description": "The state of the rule evaluation." + } + }, + "description": "Set of scorecard outcomes to update asynchronously." + } + }, + "inner_properties": null, + "description": "The JSON:API attributes for a batched set of scorecard outcomes." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "batched-outcome" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard outcomes." + } + }, + "inner_properties": null, + "description": "Scorecard outcomes batch request data." + } + }, + "inner_properties": null, + "description": "Set of scorecard outcomes." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Scorecard outcomes batch request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Scorecard outcomes batch request data.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The JSON:API attributes for a batched set of scorecard outcomes.\",\n \"properties\": {\n \"results\": {\n \"description\": \"Set of scorecard outcomes to update asynchronously.\",\n \"items\": {\n \"description\": \"Scorecard outcome for a single entity and rule.\",\n \"properties\": {\n \"entity_reference\": {\n \"description\": \"The unique reference for an IDP entity.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"remarks\": {\n \"description\": \"Any remarks regarding the scorecard rule's evaluation. Supports HTML hyperlinks.\",\n \"example\": \"See: Services\",\n \"type\": \"string\"\n },\n \"rule_id\": {\n \"description\": \"The unique ID for a scorecard rule.\",\n \"example\": \"q8MQxk8TCqrHnWkx\",\n \"type\": \"string\"\n },\n \"state\": {\n \"description\": \"The state of the rule evaluation.\",\n \"enum\": [\n \"pass\",\n \"fail\",\n \"skip\"\n ],\n \"example\": \"pass\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PASS\",\n \"FAIL\",\n \"SKIP\"\n ]\n }\n },\n \"required\": [\n \"rule_id\",\n \"entity_reference\",\n \"state\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"batched-outcome\",\n \"description\": \"The JSON:API type for scorecard outcomes.\",\n \"enum\": [\n \"batched-outcome\"\n ],\n \"example\": \"batched-outcome\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BATCHED_OUTCOME\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Set of scorecard outcomes.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScorecardRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScorecardRule.json new file mode 100644 index 00000000..971191fa --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateScorecardRule.json @@ -0,0 +1,377 @@ +{ + "name": "UpdateScorecardRule", + "fully_qualified_name": "DatadogApi.UpdateScorecardRule@0.1.0", + "description": "Updates an existing scorecard rule in Datadog.\n\nUse this tool to modify an existing scorecard rule in the Datadog platform by specifying the rule ID and the new details for the rule.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_id", + "required": true, + "description": "A unique identifier for the scorecard rule to be updated in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "rule_attributes", + "required": true, + "description": "JSON object containing attributes for updating the scorecard rule, including details like category, creation time, owner, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + }, + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the rule outcome." + }, + "custom": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines if the rule is a custom rule." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Explanation of the rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If enabled, the rule is calculated as part of the score." + }, + "level": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maturity level of the rule (1, 2, or 3)." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of the last rule outcome modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "owner": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Owner of the rule." + }, + "scorecard_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + } + }, + "inner_properties": null, + "description": "Details of a rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rule" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard rules." + } + }, + "inner_properties": null, + "description": "Data for the request to update a scorecard rule." + } + }, + "inner_properties": null, + "description": "Rule attributes." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateScorecardRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/scorecard/rules/{rule_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "rule_attributes", + "description": "Rule attributes.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + }, + "created_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Creation time of the rule outcome." + }, + "custom": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Defines if the rule is a custom rule." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Explanation of the rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If enabled, the rule is calculated as part of the score." + }, + "level": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The maturity level of the rule (1, 2, or 3)." + }, + "modified_at": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time of the last rule outcome modification." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "owner": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Owner of the rule." + }, + "scorecard_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scorecard name to which this rule must belong." + } + }, + "inner_properties": null, + "description": "Details of a rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "rule" + ], + "properties": null, + "inner_properties": null, + "description": "The JSON:API type for scorecard rules." + } + }, + "inner_properties": null, + "description": "Data for the request to update a scorecard rule." + } + }, + "inner_properties": null, + "description": "Rule attributes." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request to update a scorecard rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Data for the request to update a scorecard rule.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Details of a rule.\",\n \"properties\": {\n \"category\": {\n \"deprecated\": true,\n \"description\": \"The scorecard name to which this rule must belong.\",\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Creation time of the rule outcome.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"custom\": {\n \"description\": \"Defines if the rule is a custom rule.\",\n \"type\": \"boolean\"\n },\n \"description\": {\n \"description\": \"Explanation of the rule.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"If enabled, the rule is calculated as part of the score.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"level\": {\n \"description\": \"The maturity level of the rule (1, 2, or 3).\",\n \"example\": 2,\n \"format\": \"int32\",\n \"maximum\": 3,\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"modified_at\": {\n \"description\": \"Time of the last rule outcome modification.\",\n \"format\": \"date-time\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the rule.\",\n \"example\": \"Team Defined\",\n \"type\": \"string\"\n },\n \"owner\": {\n \"description\": \"Owner of the rule.\",\n \"type\": \"string\"\n },\n \"scorecard_name\": {\n \"description\": \"The scorecard name to which this rule must belong.\",\n \"example\": \"Deployments automated via Deployment Trains\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rule\",\n \"description\": \"The JSON:API type for scorecard rules.\",\n \"enum\": [\n \"rule\"\n ],\n \"example\": \"rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RULE\"\n ]\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Rule attributes.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSecurityFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSecurityFilter.json new file mode 100644 index 00000000..84baf463 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSecurityFilter.json @@ -0,0 +1,351 @@ +{ + "name": "UpdateSecurityFilter", + "fully_qualified_name": "DatadogApi.UpdateSecurityFilter@0.1.0", + "description": "Update a specific security filter's configuration.\n\nUse this tool to update the configuration of a specific security filter in Datadog. It returns the updated security filter object when successful.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_filter_id", + "required": true, + "description": "The ID of the specific security filter to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the security filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "security_filter_id" + }, + { + "name": "new_security_filter_definition", + "required": true, + "description": "JSON object defining the new properties of the security filter, including attributes like name, query, version, exclusion_filters, etc.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "exclusion_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter query. Logs that match this query are excluded from the security filter." + } + }, + "description": "Exclusion filters to exclude some logs from the security filter." + }, + "filtered_data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs" + ], + "properties": null, + "inner_properties": null, + "description": "The filtered data type." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the security filter is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the security filter." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query of the security filter." + }, + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The version of the security filter to update." + } + }, + "inner_properties": null, + "description": "The security filters properties to be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "security_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `security_filters`." + } + }, + "inner_properties": null, + "description": "The new security filter properties." + } + }, + "inner_properties": null, + "description": "New definition of the security filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateSecurityFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/security_filters/{security_filter_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "security_filter_id", + "tool_parameter_name": "security_filter_id", + "description": "The ID of the security filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the security filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_security_filter_definition", + "description": "New definition of the security filter.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "exclusion_filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter name." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Exclusion filter query. Logs that match this query are excluded from the security filter." + } + }, + "description": "Exclusion filters to exclude some logs from the security filter." + }, + "filtered_data_type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "logs" + ], + "properties": null, + "inner_properties": null, + "description": "The filtered data type." + }, + "is_enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the security filter is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the security filter." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The query of the security filter." + }, + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The version of the security filter to update." + } + }, + "inner_properties": null, + "description": "The security filters properties to be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "security_filters" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `security_filters`." + } + }, + "inner_properties": null, + "description": "The new security filter properties." + } + }, + "inner_properties": null, + "description": "New definition of the security filter." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The new security filter body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new security filter properties.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The security filters properties to be updated.\",\n \"properties\": {\n \"exclusion_filters\": {\n \"description\": \"Exclusion filters to exclude some logs from the security filter.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Exclusion filter for the security filter.\",\n \"example\": {\n \"name\": \"Exclude staging\",\n \"query\": \"source:staging\"\n },\n \"properties\": {\n \"name\": {\n \"description\": \"Exclusion filter name.\",\n \"example\": \"Exclude staging\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Exclusion filter query. Logs that match this query are excluded from the security filter.\",\n \"example\": \"source:staging\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"filtered_data_type\": {\n \"description\": \"The filtered data type.\",\n \"enum\": [\n \"logs\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\"\n ]\n },\n \"is_enabled\": {\n \"description\": \"Whether the security filter is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The name of the security filter.\",\n \"example\": \"Custom security filter\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The query of the security filter.\",\n \"example\": \"service:api\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"The version of the security filter to update.\",\n \"example\": 1,\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"security_filters\",\n \"description\": \"The type of the resource. The value should always be `security_filters`.\",\n \"enum\": [\n \"security_filters\"\n ],\n \"example\": \"security_filters\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SECURITY_FILTERS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the security filter.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSecurityMonitoringRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSecurityMonitoringRule.json new file mode 100644 index 00000000..856cbc56 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSecurityMonitoringRule.json @@ -0,0 +1,1827 @@ +{ + "name": "UpdateSecurityMonitoringRule", + "fully_qualified_name": "DatadogApi.UpdateSecurityMonitoringRule@0.1.0", + "description": "Update an existing Datadog security monitoring rule.\n\nUse this tool to update an existing security monitoring rule in Datadog. Ensure all 'cases', 'queries', and 'options' fields are included when making updates. Default rules can only have specific updates allowed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "security_rule_id", + "required": true, + "description": "The ID of the security monitoring rule to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "rule_id" + }, + { + "name": "security_rule_details", + "required": true, + "description": "A JSON object containing fields like 'cases', 'queries', 'options'. Include all necessary fields for a rule update in Datadog.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "calculatedFields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expression." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field name." + } + }, + "description": "Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined." + }, + "cases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "duration": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Duration of the action in seconds. 0 indicates no expiration." + }, + "flaggedIPType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses." + }, + "userBehaviorName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule." + } + }, + "inner_properties": null, + "description": "Options for the rule action" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "properties": null, + "inner_properties": null, + "description": "The action type." + } + }, + "description": "Action to perform for each rule case." + }, + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries." + }, + "customStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for each rule case." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases for generating signals." + }, + "complianceSignalOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "defaultActivationStatus": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default activation status." + }, + "defaultGroupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default group by fields." + }, + "userActivationStatus": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether signals will be sent." + }, + "userGroupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to use to group findings by when sending signals." + } + }, + "inner_properties": null, + "description": "How to generate compliance signals. Useful for cloud_configuration rules only." + }, + "customMessage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom/Overridden Message for generated signals (used in case of Default rule update)." + }, + "customName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom/Overridden name (used in case of Default rule update)." + }, + "filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "require", + "suppress" + ], + "properties": null, + "inner_properties": null, + "description": "The type of filtering action." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query for selecting logs to apply the filtering action." + } + }, + "description": "Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules." + }, + "groupSignalsBy": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups." + }, + "hasExtendedTitle": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the notifications include the triggering group-by values in their title." + }, + "isEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is enabled." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Message for generated signals." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "complianceRuleOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "complexRule": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is a complex one.\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false." + }, + "regoRule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "policy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/" + }, + "resourceTypes": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of resource types that will be evaluated upon. Must have at least one element." + } + }, + "inner_properties": null, + "description": "Rule details." + }, + "resourceType": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`." + } + }, + "inner_properties": null, + "description": "Options for cloud_configuration rules.\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules." + }, + "decreaseCriticalityBasedOnEnv": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`." + }, + "detectionMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "properties": null, + "inner_properties": null, + "description": "The detection method." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "hardcodedEvaluatorType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "log4shell" + ], + "properties": null, + "inner_properties": null, + "description": "Hardcoded evaluator type." + }, + "impossibleTravelOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "baselineUserLocations": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access." + } + }, + "inner_properties": null, + "description": "Options on impossible travel detection method." + }, + "keepAlive": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used." + }, + "maxSignalDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp." + }, + "newValueOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "forgetAfter": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "1", + "2", + "7", + "14", + "21", + "28" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days after which a learned value is forgotten." + }, + "learningDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1", + "7" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned." + }, + "learningMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "duration", + "threshold" + ], + "properties": null, + "inner_properties": null, + "description": "The learning method used to determine when signals should be generated for values that weren't learned." + }, + "learningThreshold": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "A number of occurrences after which signals will be generated for values that weren't learned." + } + }, + "inner_properties": null, + "description": "Options on new value detection method." + }, + "sequenceDetectionOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "stepTransitions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "child": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the child step." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "parent": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the parent step." + } + }, + "description": "Transitions defining the allowed order of steps and their evaluation windows." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Condition referencing rule queries (e.g., `a > 0`)." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name identifying the step." + } + }, + "description": "Steps that define the conditions to be matched in sequence." + } + }, + "inner_properties": null, + "description": "Options on sequence detection method." + }, + "thirdPartyRuleOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "defaultNotifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for the logs that do not correspond to any of the cases." + }, + "defaultStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "rootQueries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "groupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to group by." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to run on logs." + } + }, + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert." + }, + "signalTitleTemplate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A template for the signal title; if omitted, the title is generated based on the case name." + } + }, + "inner_properties": null, + "description": "Options on third party detection method." + } + }, + "inner_properties": null, + "description": "Options." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Queries for selecting logs which are part of the rule." + }, + "referenceTables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "checkPresence": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to include or exclude the matched values." + }, + "columnName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the column in the reference table." + }, + "logFieldPath": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field in the log to match against the reference table." + }, + "ruleQueryName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the query to apply the reference table to." + }, + "tableName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + } + }, + "description": "Reference tables for the rule." + }, + "schedulingOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rrule": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference." + }, + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date for the schedule, in ISO 8601 format without timezone." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format." + } + }, + "inner_properties": null, + "description": "Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags for generated signals." + }, + "thirdPartyCases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for each rule case." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A query to map a third party event to this case." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases for generating signals from third-party rules. Only available for third-party rules." + }, + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The version of the rule being updated." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/{rule_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "rule_id", + "tool_parameter_name": "security_rule_id", + "description": "The ID of the rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "security_rule_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "calculatedFields": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Expression." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Field name." + } + }, + "description": "Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined." + }, + "cases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "duration": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Duration of the action in seconds. 0 indicates no expiration." + }, + "flaggedIPType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "SUSPICIOUS", + "FLAGGED" + ], + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses." + }, + "userBehaviorName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule." + } + }, + "inner_properties": null, + "description": "Options for the rule action" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "block_ip", + "block_user", + "user_behavior", + "flag_ip" + ], + "properties": null, + "inner_properties": null, + "description": "The action type." + } + }, + "description": "Action to perform for each rule case." + }, + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\nbased on the event counts in the previously defined queries." + }, + "customStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for each rule case." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases for generating signals." + }, + "complianceSignalOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "defaultActivationStatus": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default activation status." + }, + "defaultGroupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default group by fields." + }, + "userActivationStatus": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether signals will be sent." + }, + "userGroupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to use to group findings by when sending signals." + } + }, + "inner_properties": null, + "description": "How to generate compliance signals. Useful for cloud_configuration rules only." + }, + "customMessage": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom/Overridden Message for generated signals (used in case of Default rule update)." + }, + "customName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Custom/Overridden name (used in case of Default rule update)." + }, + "filters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "require", + "suppress" + ], + "properties": null, + "inner_properties": null, + "description": "The type of filtering action." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query for selecting logs to apply the filtering action." + } + }, + "description": "Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules." + }, + "groupSignalsBy": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups." + }, + "hasExtendedTitle": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the notifications include the triggering group-by values in their title." + }, + "isEnabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is enabled." + }, + "message": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Message for generated signals." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the rule." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "complianceRuleOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "complexRule": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is a complex one.\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false." + }, + "regoRule": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "policy": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/" + }, + "resourceTypes": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of resource types that will be evaluated upon. Must have at least one element." + } + }, + "inner_properties": null, + "description": "Rule details." + }, + "resourceType": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`." + } + }, + "inner_properties": null, + "description": "Options for cloud_configuration rules.\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules." + }, + "decreaseCriticalityBasedOnEnv": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`." + }, + "detectionMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "threshold", + "new_value", + "anomaly_detection", + "impossible_travel", + "hardcoded", + "third_party", + "anomaly_threshold", + "sequence_detection" + ], + "properties": null, + "inner_properties": null, + "description": "The detection method." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "hardcodedEvaluatorType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "log4shell" + ], + "properties": null, + "inner_properties": null, + "description": "Hardcoded evaluator type." + }, + "impossibleTravelOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "baselineUserLocations": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access." + } + }, + "inner_properties": null, + "description": "Options on impossible travel detection method." + }, + "keepAlive": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "Once a signal is generated, the signal will remain \"open\" if a case is matched at least once within\nthis keep alive window. For third party detection method, this field is not used." + }, + "maxSignalDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A signal will \"close\" regardless of the query being matched once the time exceeds the maximum duration.\nThis time is calculated from the first seen timestamp." + }, + "newValueOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "forgetAfter": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "1", + "2", + "7", + "14", + "21", + "28" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days after which a learned value is forgotten." + }, + "learningDuration": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1", + "7" + ], + "properties": null, + "inner_properties": null, + "description": "The duration in days during which values are learned, and after which signals will be generated for values that\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned." + }, + "learningMethod": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "duration", + "threshold" + ], + "properties": null, + "inner_properties": null, + "description": "The learning method used to determine when signals should be generated for values that weren't learned." + }, + "learningThreshold": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "1" + ], + "properties": null, + "inner_properties": null, + "description": "A number of occurrences after which signals will be generated for values that weren't learned." + } + }, + "inner_properties": null, + "description": "Options on new value detection method." + }, + "sequenceDetectionOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "stepTransitions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "child": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the child step." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "parent": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the parent step." + } + }, + "description": "Transitions defining the allowed order of steps and their evaluation windows." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "condition": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Condition referencing rule queries (e.g., `a > 0`)." + }, + "evaluationWindow": { + "val_type": "integer", + "inner_val_type": null, + "enum": [ + "0", + "60", + "300", + "600", + "900", + "1800", + "3600", + "7200", + "10800", + "21600", + "43200", + "86400" + ], + "properties": null, + "inner_properties": null, + "description": "A time window is specified to match when at least one of the cases matches true. This is a sliding window\nand evaluates in real time. For third party detection method, this field is not used." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique name identifying the step." + } + }, + "description": "Steps that define the conditions to be matched in sequence." + } + }, + "inner_properties": null, + "description": "Options on sequence detection method." + }, + "thirdPartyRuleOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "defaultNotifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for the logs that do not correspond to any of the cases." + }, + "defaultStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "rootQueries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "groupByFields": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Fields to group by." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Query to run on logs." + } + }, + "description": "Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert." + }, + "signalTitleTemplate": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A template for the signal title; if omitted, the title is generated based on the case name." + } + }, + "inner_properties": null, + "description": "Options on third party detection method." + } + }, + "inner_properties": null, + "description": "Options." + }, + "queries": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "Queries for selecting logs which are part of the rule." + }, + "referenceTables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "checkPresence": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether to include or exclude the matched values." + }, + "columnName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the column in the reference table." + }, + "logFieldPath": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field in the log to match against the reference table." + }, + "ruleQueryName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the query to apply the reference table to." + }, + "tableName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the reference table." + } + }, + "description": "Reference tables for the rule." + }, + "schedulingOptions": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "rrule": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference." + }, + "start": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date for the schedule, in ISO 8601 format without timezone." + }, + "timezone": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format." + } + }, + "inner_properties": null, + "description": "Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags for generated signals." + }, + "thirdPartyCases": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "customStatus": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the case." + }, + "notifications": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Notification targets for each rule case." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A query to map a third party event to this case." + }, + "status": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "info", + "low", + "medium", + "high", + "critical" + ], + "properties": null, + "inner_properties": null, + "description": "Severity of the Security Signal." + } + }, + "description": "Cases for generating signals from third-party rules. Only available for third-party rules." + }, + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The version of the rule being updated." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update an existing rule.\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A rule case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"customStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each rule case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"complianceSignalOptions\": {\n \"description\": \"How to generate compliance signals. Useful for cloud_configuration rules only.\",\n \"properties\": {\n \"defaultActivationStatus\": {\n \"description\": \"The default activation status.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"defaultGroupByFields\": {\n \"description\": \"The default group by fields.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"userActivationStatus\": {\n \"description\": \"Whether signals will be sent.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"userGroupByFields\": {\n \"description\": \"Fields to use to group findings by when sending signals.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"customMessage\": {\n \"description\": \"Custom/Overridden Message for generated signals (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"customName\": {\n \"description\": \"Custom/Overridden name (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs which are part of the rule.\",\n \"items\": {\n \"description\": \"Query for matching rule.\",\n \"oneOf\": [\n {\n \"description\": \"Query for matching rule.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"customQueryExtension\": {\n \"description\": \"Query extension to append to the logs query.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"**This field is currently unstable and might be removed in a minor version upgrade.**\\nThe index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules - in other words, when the `schedulingOptions` field is present in the rule payload.\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"description\": \"List of indexes to query when the `dataSource` is `logs`. Only used for scheduled rules, such as when the `schedulingOptions` field is present in the rule payload.\",\n \"items\": {\n \"description\": \"Index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metric\": {\n \"deprecated\": true,\n \"description\": \"(Deprecated) The target field to aggregate over when using the sum or max\\naggregations. `metrics` field should be used instead.\",\n \"type\": \"string\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n {\n \"description\": \"Query for matching rule on signals.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"correlatedByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"correlatedQueryIndex\": {\n \"description\": \"Index of the rule query used to retrieve the correlated field.\",\n \"format\": \"int32\",\n \"maximum\": 9,\n \"type\": \"integer\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"ruleId\": {\n \"description\": \"Rule ID to match on signals.\",\n \"example\": \"org-ru1-e1d\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ruleId\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables for the rule.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulingOptions\": {\n \"description\": \"Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.\",\n \"nullable\": true,\n \"properties\": {\n \"rrule\": {\n \"description\": \"Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference.\",\n \"example\": \"FREQ=HOURLY;INTERVAL=1;\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"Start date for the schedule, in ISO 8601 format without timezone.\",\n \"example\": \"2025-07-14T12:00:00\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating signals from third-party rules. Only available for third-party rules.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated by a third party rule.\",\n \"properties\": {\n \"customStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each rule case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"version\": {\n \"description\": \"The version of the rule being updated.\",\n \"example\": 1,\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSoftwareCatalogKind.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSoftwareCatalogKind.json new file mode 100644 index 00000000..c27fe4ed --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSoftwareCatalogKind.json @@ -0,0 +1,126 @@ +{ + "name": "UpdateSoftwareCatalogKind", + "fully_qualified_name": "DatadogApi.UpdateSoftwareCatalogKind@0.1.0", + "description": "Create or update kinds in the Software Catalog.\n\nUse this tool to add new kinds or update existing ones in the Datadog Software Catalog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "catalog_kind_data", + "required": true, + "description": "YAML or JSON data for creating or updating a kind in the Software Catalog.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Kind YAML or JSON." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpsertCatalogKind'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/catalog/kind", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "catalog_kind_data", + "description": "Kind YAML or JSON.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Kind YAML or JSON." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Create or update kind request.\",\n \"oneOf\": [\n {\n \"description\": \"Schema for kind.\",\n \"properties\": {\n \"description\": {\n \"description\": \"Short description of the kind.\",\n \"type\": \"string\"\n },\n \"displayName\": {\n \"description\": \"The display name of the kind. Automatically generated if not provided.\",\n \"type\": \"string\"\n },\n \"kind\": {\n \"description\": \"The name of the kind to create or update. This must be in kebab-case format.\",\n \"example\": \"my-job\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Kind definition in raw JSON or YAML representation.\",\n \"example\": \"kind: service\\ndisplayName: Service\\ndescription: A service entity in the catalog.\",\n \"type\": \"string\"\n }\n ]\n }\n }\n },\n \"description\": \"Kind YAML or JSON.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSpanMetric.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSpanMetric.json new file mode 100644 index 00000000..6414e17a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSpanMetric.json @@ -0,0 +1,335 @@ +{ + "name": "UpdateSpanMetric", + "fully_qualified_name": "DatadogApi.UpdateSpanMetric@0.1.0", + "description": "Update a specific span-based metric in Datadog.\n\nUse this tool to update a specific span-based metric in your Datadog organization. Call this tool when you need to modify the configuration of an existing span-based metric.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "span_metric_name", + "required": true, + "description": "The name of the span-based metric to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "metric_id" + }, + { + "name": "new_span_metric_definition", + "required": true, + "description": "JSON object defining the new properties of the span-based metric, including compute rules, filters, and group-by rules.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the span-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + } + }, + "inner_properties": null, + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the span-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The span-based metric properties that will be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be spans_metrics." + } + }, + "inner_properties": null, + "description": "The new span-based metric properties." + } + }, + "inner_properties": null, + "description": "New definition of the span-based metric." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateSpansMetric'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/apm/config/metrics/{metric_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "metric_id", + "tool_parameter_name": "span_metric_name", + "description": "The name of the span-based metric.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the span-based metric." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_span_metric_definition", + "description": "New definition of the span-based metric.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "compute": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "include_percentiles": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Toggle to include or exclude percentile aggregations for distribution metrics.\nOnly present when the `aggregation_type` is `distribution`." + } + }, + "inner_properties": null, + "description": "The compute rule to compute the span-based metric." + }, + "filter": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The search query - following the span search syntax." + } + }, + "inner_properties": null, + "description": "The span-based metric filter. Spans matching this filter will be aggregated in this metric." + }, + "group_by": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "path": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path to the value the span-based metric will be aggregated over." + }, + "tag_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Eventual name of the tag that gets created. By default, the path attribute is used as the tag name." + } + }, + "description": "The rules for the group by." + } + }, + "inner_properties": null, + "description": "The span-based metric properties that will be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "spans_metrics" + ], + "properties": null, + "inner_properties": null, + "description": "The type of resource. The value should always be spans_metrics." + } + }, + "inner_properties": null, + "description": "The new span-based metric properties." + } + }, + "inner_properties": null, + "description": "New definition of the span-based metric." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The new span-based metric body.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new span-based metric properties.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The span-based metric properties that will be updated.\",\n \"properties\": {\n \"compute\": {\n \"description\": \"The compute rule to compute the span-based metric.\",\n \"properties\": {\n \"include_percentiles\": {\n \"description\": \"Toggle to include or exclude percentile aggregations for distribution metrics.\\nOnly present when the `aggregation_type` is `distribution`.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"filter\": {\n \"description\": \"The span-based metric filter. Spans matching this filter will be aggregated in this metric.\",\n \"properties\": {\n \"query\": {\n \"default\": \"*\",\n \"description\": \"The search query - following the span search syntax.\",\n \"example\": \"@http.status_code:200 service:my-service\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"group_by\": {\n \"description\": \"The rules for the group by.\",\n \"items\": {\n \"description\": \"A group by rule.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The path to the value the span-based metric will be aggregated over.\",\n \"example\": \"resource_name\",\n \"type\": \"string\"\n },\n \"tag_name\": {\n \"description\": \"Eventual name of the tag that gets created. By default, the path attribute is used as the tag name.\",\n \"example\": \"resource_name\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"spans_metrics\",\n \"description\": \"The type of resource. The value should always be spans_metrics.\",\n \"enum\": [\n \"spans_metrics\"\n ],\n \"example\": \"spans_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPANS_METRICS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the span-based metric.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSuppressionRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSuppressionRule.json new file mode 100644 index 00000000..77da5619 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateSuppressionRule.json @@ -0,0 +1,361 @@ +{ + "name": "UpdateSuppressionRule", + "fully_qualified_name": "DatadogApi.UpdateSuppressionRule@0.1.0", + "description": "Update a specific suppression rule in Datadog.\n\nUse this tool to modify an existing suppression rule within Datadog's security monitoring configuration. Call this when you need to change the settings of a particular suppression rule identified by its ID.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "suppression_rule_id", + "required": true, + "description": "The unique identifier of the suppression rule to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the suppression rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "suppression_id" + }, + { + "name": "suppression_rule_update", + "required": true, + "description": "JSON object with the new definition of the suppression rule, supporting partial updates. Include attributes like name, description, enabled status, and queries related to data exclusion or suppression. Also, define timestamps for start or expiration dates if necessary, along with the version for concurrency handling.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data_exclusion_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A description for the suppression rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the suppression rule is enabled." + }, + "expiration_date": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. If unset, the expiration date of the suppression rule is left untouched. If set to `null`, the expiration date is removed." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the suppression rule." + }, + "rule_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules." + }, + "start_date": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals. If unset, the start date of the suppression rule is left untouched. If set to `null`, the start date is removed." + }, + "suppression_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and not triggered. Same syntax as the queries to search signals in the signal explorer." + }, + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The current version of the suppression. This is optional, but it can help prevent concurrent modifications." + } + }, + "inner_properties": null, + "description": "The suppression rule properties to be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "suppressions" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `suppressions`." + } + }, + "inner_properties": null, + "description": "The new suppression properties; partial updates are supported." + } + }, + "inner_properties": null, + "description": "New definition of the suppression rule. Supports partial updates." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateSecurityMonitoringSuppression'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/{suppression_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "suppression_id", + "tool_parameter_name": "suppression_rule_id", + "description": "The ID of the suppression rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the suppression rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "suppression_rule_update", + "description": "New definition of the suppression rule. Supports partial updates.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data_exclusion_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A description for the suppression rule." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the suppression rule is enabled." + }, + "expiration_date": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. If unset, the expiration date of the suppression rule is left untouched. If set to `null`, the expiration date is removed." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the suppression rule." + }, + "rule_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules." + }, + "start_date": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals. If unset, the start date of the suppression rule is left untouched. If set to `null`, the start date is removed." + }, + "suppression_query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and not triggered. Same syntax as the queries to search signals in the signal explorer." + }, + "version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The current version of the suppression. This is optional, but it can help prevent concurrent modifications." + } + }, + "inner_properties": null, + "description": "The suppression rule properties to be updated." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "suppressions" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `suppressions`." + } + }, + "inner_properties": null, + "description": "The new suppression properties; partial updates are supported." + } + }, + "inner_properties": null, + "description": "New definition of the suppression rule. Supports partial updates." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object containing the fields to update on the suppression rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The new suppression properties; partial updates are supported.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The suppression rule properties to be updated.\",\n \"properties\": {\n \"data_exclusion_query\": {\n \"description\": \"An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule.\",\n \"example\": \"source:cloudtrail account_id:12345\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"A description for the suppression rule.\",\n \"example\": \"This rule suppresses low-severity signals in staging environments.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Whether the suppression rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"expiration_date\": {\n \"description\": \"A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore. If unset, the expiration date of the suppression rule is left untouched. If set to `null`, the expiration date is removed.\",\n \"example\": 1703187336000,\n \"format\": \"int64\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"The name of the suppression rule.\",\n \"example\": \"Custom suppression\",\n \"type\": \"string\"\n },\n \"rule_query\": {\n \"description\": \"The rule query of the suppression rule, with the same syntax as the search bar for detection rules.\",\n \"example\": \"type:log_detection source:cloudtrail\",\n \"type\": \"string\"\n },\n \"start_date\": {\n \"description\": \"A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals. If unset, the start date of the suppression rule is left untouched. If set to `null`, the start date is removed.\",\n \"example\": 1703187336000,\n \"format\": \"int64\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"suppression_query\": {\n \"description\": \"The suppression query of the suppression rule. If a signal matches this query, it is suppressed and not triggered. Same syntax as the queries to search signals in the signal explorer.\",\n \"example\": \"env:staging status:low\",\n \"type\": \"string\"\n },\n \"version\": {\n \"description\": \"The current version of the suppression. This is optional, but it can help prevent concurrent modifications.\",\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"suppressions\",\n \"description\": \"The type of the resource. The value should always be `suppressions`.\",\n \"enum\": [\n \"suppressions\"\n ],\n \"example\": \"suppressions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUPPRESSIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the suppression rule. Supports partial updates.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTagPipelineRuleset.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTagPipelineRuleset.json new file mode 100644 index 00000000..544f206f --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTagPipelineRuleset.json @@ -0,0 +1,645 @@ +{ + "name": "UpdateTagPipelineRuleset", + "fully_qualified_name": "DatadogApi.UpdateTagPipelineRuleset@0.1.0", + "description": "Update an existing tag pipeline ruleset with new rules.\n\nUse this tool to modify the rules and configuration of an existing tag pipeline ruleset in Datadog.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "ruleset_identifier", + "required": true, + "description": "A unique string identifier for the tag pipeline ruleset to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the ruleset" + }, + "inferrable": true, + "http_endpoint_parameter_name": "ruleset_id" + }, + { + "name": "ruleset_update_details", + "required": true, + "description": "JSON object detailing the new rules and configuration for the ruleset. Includes attributes like enabled status, last version, and specific rules configuration.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "last_version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `last_version`." + }, + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `enabled`." + }, + "mapping": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `destination_key`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `source_keys`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsMapping` object." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `metadata`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `name`." + }, + "query": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "addition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `value`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsQueryAddition` object." + }, + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `case_insensitivity`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `if_not_exists`." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `query`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsQuery` object." + }, + "reference_table": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `case_insensitivity`." + }, + "field_pairs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "input_column": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `input_column`." + }, + "output_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `output_key`." + } + }, + "description": "The `reference_table` `field_pairs`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `source_keys`." + }, + "table_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `table_name`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsReferenceTable` object." + } + }, + "description": "The `attributes` `rules`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `UpdateRulesetRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "update_ruleset" + ], + "properties": null, + "inner_properties": null, + "description": "Update ruleset resource type." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateTagPipelinesRuleset'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/tags/enrichment/{ruleset_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "ruleset_id", + "tool_parameter_name": "ruleset_identifier", + "description": "The unique identifier of the ruleset", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of the ruleset" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "ruleset_update_details", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `enabled`." + }, + "last_version": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `last_version`." + }, + "rules": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `enabled`." + }, + "mapping": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destination_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `destination_key`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `mapping` `source_keys`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsMapping` object." + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `metadata`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `name`." + }, + "query": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "addition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `key`." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `addition` `value`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsQueryAddition` object." + }, + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `case_insensitivity`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `if_not_exists`." + }, + "query": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `query` `query`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsQuery` object." + }, + "reference_table": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_insensitivity": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `case_insensitivity`." + }, + "field_pairs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "input_column": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `input_column`." + }, + "output_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `items` `output_key`." + } + }, + "description": "The `reference_table` `field_pairs`." + }, + "if_not_exists": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `if_not_exists`." + }, + "source_keys": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `source_keys`." + }, + "table_name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `reference_table` `table_name`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributesRulesItemsReferenceTable` object." + } + }, + "description": "The `attributes` `rules`." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestDataAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `UpdateRulesetRequestData` `id`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "update_ruleset" + ], + "properties": null, + "inner_properties": null, + "description": "Update ruleset resource type." + } + }, + "inner_properties": null, + "description": "The definition of `UpdateRulesetRequestData` object." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `UpdateRulesetRequest` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"enabled\": true,\n \"last_version\": 1,\n \"name\": \"Updated Ruleset\",\n \"rules\": [\n {\n \"enabled\": true,\n \"mapping\": null,\n \"metadata\": null,\n \"name\": \"Add Cost Center Tag\",\n \"query\": {\n \"addition\": {\n \"key\": \"cost_center\",\n \"value\": \"engineering\"\n },\n \"case_insensitivity\": false,\n \"if_not_exists\": true,\n \"query\": \"account_id:\\\"123456789\\\" AND service:\\\"web-api\\\"\"\n },\n \"reference_table\": null\n },\n {\n \"enabled\": true,\n \"mapping\": {\n \"destination_key\": \"team_owner\",\n \"if_not_exists\": true,\n \"source_keys\": [\n \"account_name\",\n \"account_id\"\n ]\n },\n \"metadata\": null,\n \"name\": \"Account Name Mapping\",\n \"query\": null,\n \"reference_table\": null\n },\n {\n \"enabled\": true,\n \"mapping\": null,\n \"metadata\": null,\n \"name\": \"New table rule with new UI\",\n \"query\": null,\n \"reference_table\": {\n \"case_insensitivity\": true,\n \"field_pairs\": [\n {\n \"input_column\": \"status_type\",\n \"output_key\": \"status\"\n },\n {\n \"input_column\": \"status_description\",\n \"output_key\": \"dess\"\n }\n ],\n \"if_not_exists\": false,\n \"source_keys\": [\n \"http_status\",\n \"status_description\"\n ],\n \"table_name\": \"http_status_codes\"\n }\n }\n ]\n },\n \"type\": \"update_ruleset\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `UpdateRulesetRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `UpdateRulesetRequestDataAttributes` object.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"The `attributes` `enabled`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"last_version\": {\n \"description\": \"The `attributes` `last_version`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"rules\": {\n \"description\": \"The `attributes` `rules`.\",\n \"items\": {\n \"description\": \"The definition of `UpdateRulesetRequestDataAttributesRulesItems` object.\",\n \"properties\": {\n \"enabled\": {\n \"description\": \"The `items` `enabled`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"mapping\": {\n \"description\": \"The definition of `UpdateRulesetRequestDataAttributesRulesItemsMapping` object.\",\n \"nullable\": true,\n \"properties\": {\n \"destination_key\": {\n \"description\": \"The `mapping` `destination_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"if_not_exists\": {\n \"description\": \"The `mapping` `if_not_exists`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"source_keys\": {\n \"description\": \"The `mapping` `source_keys`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"destination_key\",\n \"if_not_exists\",\n \"source_keys\"\n ],\n \"type\": \"object\"\n },\n \"metadata\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"The `items` `metadata`.\",\n \"nullable\": true,\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"The `items` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"The definition of `UpdateRulesetRequestDataAttributesRulesItemsQuery` object.\",\n \"nullable\": true,\n \"properties\": {\n \"addition\": {\n \"description\": \"The definition of `UpdateRulesetRequestDataAttributesRulesItemsQueryAddition` object.\",\n \"nullable\": true,\n \"properties\": {\n \"key\": {\n \"description\": \"The `addition` `key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `addition` `value`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"case_insensitivity\": {\n \"description\": \"The `query` `case_insensitivity`.\",\n \"type\": \"boolean\"\n },\n \"if_not_exists\": {\n \"description\": \"The `query` `if_not_exists`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"query\": {\n \"description\": \"The `query` `query`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"addition\",\n \"if_not_exists\",\n \"query\"\n ],\n \"type\": \"object\"\n },\n \"reference_table\": {\n \"description\": \"The definition of `UpdateRulesetRequestDataAttributesRulesItemsReferenceTable` object.\",\n \"nullable\": true,\n \"properties\": {\n \"case_insensitivity\": {\n \"description\": \"The `reference_table` `case_insensitivity`.\",\n \"type\": \"boolean\"\n },\n \"field_pairs\": {\n \"description\": \"The `reference_table` `field_pairs`.\",\n \"items\": {\n \"description\": \"The definition of `UpdateRulesetRequestDataAttributesRulesItemsReferenceTableFieldPairsItems` object.\",\n \"properties\": {\n \"input_column\": {\n \"description\": \"The `items` `input_column`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"output_key\": {\n \"description\": \"The `items` `output_key`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"input_column\",\n \"output_key\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"if_not_exists\": {\n \"description\": \"The `reference_table` `if_not_exists`.\",\n \"type\": \"boolean\"\n },\n \"source_keys\": {\n \"description\": \"The `reference_table` `source_keys`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"table_name\": {\n \"description\": \"The `reference_table` `table_name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"field_pairs\",\n \"source_keys\",\n \"table_name\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"enabled\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"enabled\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `UpdateRulesetRequestData` `id`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"update_ruleset\",\n \"description\": \"Update ruleset resource type.\",\n \"enum\": [\n \"update_ruleset\"\n ],\n \"example\": \"update_ruleset\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"UPDATE_RULESET\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamInfo.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamInfo.json new file mode 100644 index 00000000..20c87ed1 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamInfo.json @@ -0,0 +1,453 @@ +{ + "name": "UpdateTeamInfo", + "fully_qualified_name": "DatadogApi.UpdateTeamInfo@0.1.0", + "description": "Update and modify a team's configuration in Datadog.\n\nUse this tool to update a team in Datadog by modifying its configuration using the team's ID. You can adjust team links and other settings as needed.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier for the team to be updated. Must be a valid string representing the team's ID in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "team_update_request", + "required": true, + "description": "JSON object containing team update attributes and relationships, including avatar, banner, description, handle, hidden/visible modules, and team links.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "avatar": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unicode representation of the avatar for the team, limited to a single grapheme" + }, + "banner": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Banner selection for the team" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form markdown description/content for the team's homepage" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team's identifier" + }, + "hidden_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of hidden modules for the team" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the team" + }, + "visible_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of visible modules for the team" + } + }, + "inner_properties": null, + "description": "Team update attributes" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "team_links": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team link's identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_links" + ], + "properties": null, + "inner_properties": null, + "description": "Team link type" + } + }, + "description": "Related team links" + }, + "links": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "related": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Related link." + } + }, + "inner_properties": null, + "description": "Links attributes." + } + }, + "inner_properties": null, + "description": "Relationship between a team and a team link" + } + }, + "inner_properties": null, + "description": "Team update relationships" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team" + ], + "properties": null, + "inner_properties": null, + "description": "Team type" + } + }, + "inner_properties": null, + "description": "Team update request" + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateTeam'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "team_update_request", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "avatar": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unicode representation of the avatar for the team, limited to a single grapheme" + }, + "banner": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Banner selection for the team" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Free-form markdown description/content for the team's homepage" + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team's identifier" + }, + "hidden_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of hidden modules for the team" + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the team" + }, + "visible_modules": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Collection of visible modules for the team" + } + }, + "inner_properties": null, + "description": "Team update attributes" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "team_links": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The team link's identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_links" + ], + "properties": null, + "inner_properties": null, + "description": "Team link type" + } + }, + "description": "Related team links" + }, + "links": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "related": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Related link." + } + }, + "inner_properties": null, + "description": "Links attributes." + } + }, + "inner_properties": null, + "description": "Relationship between a team and a team link" + } + }, + "inner_properties": null, + "description": "Team update relationships" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team" + ], + "properties": null, + "inner_properties": null, + "description": "Team type" + } + }, + "inner_properties": null, + "description": "Team update request" + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Team update request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Team update request\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team update attributes\",\n \"properties\": {\n \"avatar\": {\n \"description\": \"Unicode representation of the avatar for the team, limited to a single grapheme\",\n \"example\": \"\\ud83e\\udd51\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"banner\": {\n \"description\": \"Banner selection for the team\",\n \"format\": \"int64\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"description\": {\n \"description\": \"Free-form markdown description/content for the team's homepage\",\n \"type\": \"string\"\n },\n \"handle\": {\n \"description\": \"The team's identifier\",\n \"example\": \"example-team\",\n \"maxLength\": 195,\n \"type\": \"string\"\n },\n \"hidden_modules\": {\n \"description\": \"Collection of hidden modules for the team\",\n \"items\": {\n \"description\": \"String identifier of the module\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the team\",\n \"example\": \"Example Team\",\n \"maxLength\": 200,\n \"type\": \"string\"\n },\n \"visible_modules\": {\n \"description\": \"Collection of visible modules for the team\",\n \"items\": {\n \"description\": \"String identifier of the module\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"handle\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"relationships\": {\n \"description\": \"Team update relationships\",\n \"properties\": {\n \"team_links\": {\n \"description\": \"Relationship between a team and a team link\",\n \"properties\": {\n \"data\": {\n \"description\": \"Related team links\",\n \"items\": {\n \"description\": \"Relationship between a link and a team\",\n \"properties\": {\n \"id\": {\n \"description\": \"The team link's identifier\",\n \"example\": \"f9bb8444-af7f-11ec-ac2c-da7ad0900001\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"team_links\",\n \"description\": \"Team link type\",\n \"enum\": [\n \"team_links\"\n ],\n \"example\": \"team_links\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_LINKS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"links\": {\n \"description\": \"Links attributes.\",\n \"properties\": {\n \"related\": {\n \"description\": \"Related link.\",\n \"example\": \"/api/v2/team/c75a4a8e-20c7-11ee-a3a5-da7ad0900002/links\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"team\",\n \"description\": \"Team type\",\n \"enum\": [\n \"team\"\n ],\n \"example\": \"team\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamLink.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamLink.json new file mode 100644 index 00000000..1a875749 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamLink.json @@ -0,0 +1,328 @@ +{ + "name": "UpdateTeamLink", + "fully_qualified_name": "DatadogApi.UpdateTeamLink@0.1.0", + "description": "Updates a team link in Datadog.\n\nUse this tool to update the details of a specific team link within the Datadog service. It's useful for modifying or adjusting link information associated with a team.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique string identifier for the team related to the link.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "link_identifier", + "required": true, + "description": "The unique identifier for the link you want to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "link_id" + }, + { + "name": "link_label", + "required": true, + "description": "Specify the label for the link. This is used to identify or name the link within the team's list of links.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's label" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.label" + }, + { + "name": "link_url", + "required": true, + "description": "The URL for the team link. Provide a valid, well-formed URL.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The URL for the link" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.url" + }, + { + "name": "team_link_type", + "required": true, + "description": "Specifies the type of team link. Must be 'team_links'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_links" + ], + "properties": null, + "inner_properties": null, + "description": "Team link type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "link_position", + "required": false, + "description": "The position of the link in the list, used to sort links for the team.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's position, used to sort links for the team" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.position" + }, + { + "name": "team_id_associated_with_link", + "required": false, + "description": "The ID of the team associated with the link to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the team the link is associated with" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.team_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateTeamLink'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/links/{link_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "link_id", + "tool_parameter_name": "link_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.label", + "tool_parameter_name": "link_label", + "description": "The link's label", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's label" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.position", + "tool_parameter_name": "link_position", + "description": "The link's position, used to sort links for the team", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The link's position, used to sort links for the team" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.team_id", + "tool_parameter_name": "team_id_associated_with_link", + "description": "ID of the team the link is associated with", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the team the link is associated with" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.url", + "tool_parameter_name": "link_url", + "description": "The URL for the link", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The URL for the link" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "team_link_type", + "description": "Team link type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_links" + ], + "properties": null, + "inner_properties": null, + "description": "Team link type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "team_links", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Team link create request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Team link create\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team link attributes\",\n \"properties\": {\n \"label\": {\n \"description\": \"The link's label\",\n \"example\": \"Link label\",\n \"maxLength\": 256,\n \"type\": \"string\"\n },\n \"position\": {\n \"description\": \"The link's position, used to sort links for the team\",\n \"format\": \"int32\",\n \"maximum\": 2147483647,\n \"type\": \"integer\"\n },\n \"team_id\": {\n \"description\": \"ID of the team the link is associated with\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"The URL for the link\",\n \"example\": \"https://example.com\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"label\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"team_links\",\n \"description\": \"Team link type\",\n \"enum\": [\n \"team_links\"\n ],\n \"example\": \"team_links\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_LINKS\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamPermission.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamPermission.json new file mode 100644 index 00000000..e85968be --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateTeamPermission.json @@ -0,0 +1,241 @@ +{ + "name": "UpdateTeamPermission", + "fully_qualified_name": "DatadogApi.UpdateTeamPermission@0.1.0", + "description": "Update a team's permission setting in Datadog.\n\nUse this tool to update the permission setting for a specific team in Datadog, allowing for customized access control adjustments.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_identifier", + "required": true, + "description": "The unique identifier of the team for which the permission setting will be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "action_to_update", + "required": true, + "description": "The specific action to update in the team's permission setting, specifying what can be performed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "action" + }, + { + "name": "team_permission_setting_type", + "required": true, + "description": "Specify the team permission setting type. Required value: 'team_permission_settings'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_permission_settings" + ], + "properties": null, + "inner_properties": null, + "description": "Team permission setting type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "allowed_user_type_for_action", + "required": false, + "description": "Specify the user type permitted to perform the action. Options: admins, members, organization, user_access_manage, teams_manage.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "admins", + "members", + "organization", + "user_access_manage", + "teams_manage" + ], + "properties": null, + "inner_properties": null, + "description": "What type of user is allowed to perform the specified action" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.value" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateTeamPermissionSetting'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/permission-settings/{action}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "action", + "tool_parameter_name": "action_to_update", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.value", + "tool_parameter_name": "allowed_user_type_for_action", + "description": "What type of user is allowed to perform the specified action", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "admins", + "members", + "organization", + "user_access_manage", + "teams_manage" + ], + "properties": null, + "inner_properties": null, + "description": "What type of user is allowed to perform the specified action" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "team_permission_setting_type", + "description": "Team permission setting type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_permission_settings" + ], + "properties": null, + "inner_properties": null, + "description": "Team permission setting type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "team_permission_settings", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Team permission setting update request\",\n \"properties\": {\n \"data\": {\n \"description\": \"Team permission setting update\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team permission setting update attributes\",\n \"properties\": {\n \"value\": {\n \"description\": \"What type of user is allowed to perform the specified action\",\n \"enum\": [\n \"admins\",\n \"members\",\n \"organization\",\n \"user_access_manage\",\n \"teams_manage\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADMINS\",\n \"MEMBERS\",\n \"ORGANIZATION\",\n \"USER_ACCESS_MANAGE\",\n \"TEAMS_MANAGE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"team_permission_settings\",\n \"description\": \"Team permission setting type\",\n \"enum\": [\n \"team_permission_settings\"\n ],\n \"example\": \"team_permission_settings\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_PERMISSION_SETTINGS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateUserTeamMembership.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateUserTeamMembership.json new file mode 100644 index 00000000..ed706cab --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateUserTeamMembership.json @@ -0,0 +1,299 @@ +{ + "name": "UpdateUserTeamMembership", + "fully_qualified_name": "DatadogApi.UpdateUserTeamMembership@0.1.0", + "description": "Update a user's membership attributes on a team.\n\nUse this tool to update specific membership attributes for a user within a team's membership in Datadog. This can be useful when user roles or permissions need modification.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "team_id", + "required": true, + "description": "The unique identifier of the team to update the user's membership attributes.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "team_id" + }, + { + "name": "user_identifier", + "required": true, + "description": "The unique identifier for the user whose membership is being updated. This is required to specify which user's attributes will be changed.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "inferrable": true, + "http_endpoint_parameter_name": "user_id" + }, + { + "name": "team_membership_type", + "required": true, + "description": "Specify the type of team membership. The value must be 'team_memberships'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_memberships" + ], + "properties": null, + "inner_properties": null, + "description": "Team membership type" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "provisioning_mechanism", + "required": false, + "description": "Specifies how the team relationship was provisioned. Options: null, \"service_account\", \"saml_mapping\".", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The mechanism responsible for provisioning the team relationship.\nPossible values: null for added by a user, \"service_account\" if added by a service account, and \"saml_mapping\" if provisioned via SAML mapping." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.provisioned_by" + }, + { + "name": "provisioning_identifier", + "required": false, + "description": "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.provisioned_by_id" + }, + { + "name": "user_role_in_team", + "required": false, + "description": "Specify the user's role within the team. Accepts 'admin'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "admin" + ], + "properties": null, + "inner_properties": null, + "description": "The user's role within the team" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.role" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateTeamMembership'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/team/{team_id}/memberships/{user_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "team_id", + "tool_parameter_name": "team_id", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "user_id", + "tool_parameter_name": "user_identifier", + "description": "None", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "None" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.provisioned_by", + "tool_parameter_name": "provisioning_mechanism", + "description": "The mechanism responsible for provisioning the team relationship.\nPossible values: null for added by a user, \"service_account\" if added by a service account, and \"saml_mapping\" if provisioned via SAML mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The mechanism responsible for provisioning the team relationship.\nPossible values: null for added by a user, \"service_account\" if added by a service account, and \"saml_mapping\" if provisioned via SAML mapping." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.provisioned_by_id", + "tool_parameter_name": "provisioning_identifier", + "description": "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.role", + "tool_parameter_name": "user_role_in_team", + "description": "The user's role within the team", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "admin" + ], + "properties": null, + "inner_properties": null, + "description": "The user's role within the team" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "team_membership_type", + "description": "Team membership type", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "team_memberships" + ], + "properties": null, + "inner_properties": null, + "description": "Team membership type" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "team_memberships", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Team membership request\",\n \"properties\": {\n \"data\": {\n \"description\": \"A user's relationship with a team\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Team membership attributes\",\n \"properties\": {\n \"provisioned_by\": {\n \"description\": \"The mechanism responsible for provisioning the team relationship.\\nPossible values: null for added by a user, \\\"service_account\\\" if added by a service account, and \\\"saml_mapping\\\" if provisioned via SAML mapping.\",\n \"nullable\": true,\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"provisioned_by_id\": {\n \"description\": \"UUID of the User or Service Account who provisioned this team membership, or null if provisioned via SAML mapping.\",\n \"nullable\": true,\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"role\": {\n \"description\": \"The user's role within the team\",\n \"enum\": [\n \"admin\"\n ],\n \"nullable\": true,\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADMIN\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"team_memberships\",\n \"description\": \"Team membership type\",\n \"enum\": [\n \"team_memberships\"\n ],\n \"example\": \"team_memberships\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TEAM_MEMBERSHIPS\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWafCustomRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWafCustomRule.json new file mode 100644 index 00000000..ae42c932 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWafCustomRule.json @@ -0,0 +1,763 @@ +{ + "name": "UpdateWafCustomRule", + "fully_qualified_name": "DatadogApi.UpdateWafCustomRule@0.1.0", + "description": "Update a specific WAF custom rule in Datadog.\n\nUse this tool to update a specific Web Application Firewall (WAF) custom rule in Datadog. It returns the updated custom rule object upon successful execution.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_rule_id", + "required": true, + "description": "Specify the ID of the custom WAF rule to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "custom_rule_id" + }, + { + "name": "waf_custom_rule_definition", + "required": true, + "description": "JSON object defining the new attributes for the WAF custom rule, including name, conditions, scope, and actions.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "redirect_request", + "block_request" + ], + "properties": null, + "inner_properties": null, + "description": "Override the default action to take when the WAF custom rule would block." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "location": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The location to redirect to when the WAF custom rule triggers." + }, + "status_code": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The status code to return when the WAF custom rule triggers." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleActionParameters` object." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleAction` object." + }, + "blocking": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule will block the request." + }, + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "match_regex", + "!match_regex", + "phrase_match", + "!phrase_match", + "is_xss", + "is_sqli", + "exact_match", + "!exact_match", + "ip_match", + "!ip_match", + "capture_data" + ], + "properties": null, + "inner_properties": null, + "description": "Operator to use for the WAF Condition." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter." + }, + "inputs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "server.db.statement", + "server.io.fs.file", + "server.io.net.url", + "server.sys.shell.cmd", + "server.request.method", + "server.request.uri.raw", + "server.request.path_params", + "server.request.query", + "server.request.headers.no_cookies", + "server.request.cookies", + "server.request.trailers", + "server.request.body", + "server.response.status", + "server.response.headers.no_cookies", + "server.response.trailers", + "grpc.server.request.metadata", + "grpc.server.request.message", + "grpc.server.method", + "graphql.server.all_resolvers", + "usr.id", + "http.client_ip" + ], + "properties": null, + "inner_properties": null, + "description": "Input from the request on which the condition should apply." + }, + "key_path": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific path for the input." + } + }, + "description": "List of inputs on which at least one should match with the given operator." + }, + "list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and\n!exact_match operator." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_sensitive": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Evaluate the value as case sensitive." + }, + "min_length": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only evaluate this condition if the value has a minimum amount of characters." + } + }, + "inner_properties": null, + "description": "Options for the operator of this condition." + }, + "regex": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Regex to use with the condition. Only used with match_regex and !match_regex operator." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Store the captured value in the specified tag name. Only used with the capture_data operator." + } + }, + "inner_properties": null, + "description": "The scope of the WAF custom rule." + } + }, + "description": "Conditions for which the WAF Custom Rule will triggers, all conditions needs to match in order for the WAF\nrule to trigger." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Name of the WAF custom rule." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path glob for the WAF custom rule." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The environment scope for the WAF custom rule." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service scope for the WAF custom rule." + } + }, + "description": "The scope of the WAF custom rule." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "attack_attempt", + "business_logic", + "security_response" + ], + "properties": null, + "inner_properties": null, + "description": "The category of the WAF Rule, can be either `business_logic`, `attack_attempt` or `security_response`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the WAF rule, associated with the category will form the security activity." + } + }, + "inner_properties": null, + "description": "Tags associated with the WAF Custom Rule. The concatenation of category and type will form the security\nactivity field associated with the traces." + } + }, + "inner_properties": null, + "description": "Update a WAF custom rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_rule`." + } + }, + "inner_properties": null, + "description": "Object for a single WAF Custom Rule." + } + }, + "inner_properties": null, + "description": "New definition of the WAF Custom Rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateApplicationSecurityWafCustomRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/custom_rules/{custom_rule_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "custom_rule_id", + "tool_parameter_name": "custom_rule_id", + "description": "The ID of the custom rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the custom rule." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "waf_custom_rule_definition", + "description": "New definition of the WAF Custom Rule.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "action": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "redirect_request", + "block_request" + ], + "properties": null, + "inner_properties": null, + "description": "Override the default action to take when the WAF custom rule would block." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "location": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The location to redirect to when the WAF custom rule triggers." + }, + "status_code": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The status code to return when the WAF custom rule triggers." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleActionParameters` object." + } + }, + "inner_properties": null, + "description": "The definition of `ApplicationSecurityWafCustomRuleAction` object." + }, + "blocking": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule will block the request." + }, + "conditions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "match_regex", + "!match_regex", + "phrase_match", + "!phrase_match", + "is_xss", + "is_sqli", + "exact_match", + "!exact_match", + "ip_match", + "!ip_match", + "capture_data" + ], + "properties": null, + "inner_properties": null, + "description": "Operator to use for the WAF Condition." + }, + "parameters": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter." + }, + "inputs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "address": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "server.db.statement", + "server.io.fs.file", + "server.io.net.url", + "server.sys.shell.cmd", + "server.request.method", + "server.request.uri.raw", + "server.request.path_params", + "server.request.query", + "server.request.headers.no_cookies", + "server.request.cookies", + "server.request.trailers", + "server.request.body", + "server.response.status", + "server.response.headers.no_cookies", + "server.response.trailers", + "grpc.server.request.metadata", + "grpc.server.request.message", + "grpc.server.method", + "graphql.server.all_resolvers", + "usr.id", + "http.client_ip" + ], + "properties": null, + "inner_properties": null, + "description": "Input from the request on which the condition should apply." + }, + "key_path": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Specific path for the input." + } + }, + "description": "List of inputs on which at least one should match with the given operator." + }, + "list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and\n!exact_match operator." + }, + "options": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "case_sensitive": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Evaluate the value as case sensitive." + }, + "min_length": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Only evaluate this condition if the value has a minimum amount of characters." + } + }, + "inner_properties": null, + "description": "Options for the operator of this condition." + }, + "regex": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Regex to use with the condition. Only used with match_regex and !match_regex operator." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Store the captured value in the specified tag name. Only used with the capture_data operator." + } + }, + "inner_properties": null, + "description": "The scope of the WAF custom rule." + } + }, + "description": "Conditions for which the WAF Custom Rule will triggers, all conditions needs to match in order for the WAF\nrule to trigger." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the WAF custom rule is enabled." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The Name of the WAF custom rule." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The path glob for the WAF custom rule." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The environment scope for the WAF custom rule." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service scope for the WAF custom rule." + } + }, + "description": "The scope of the WAF custom rule." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "attack_attempt", + "business_logic", + "security_response" + ], + "properties": null, + "inner_properties": null, + "description": "The category of the WAF Rule, can be either `business_logic`, `attack_attempt` or `security_response`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the WAF rule, associated with the category will form the security activity." + } + }, + "inner_properties": null, + "description": "Tags associated with the WAF Custom Rule. The concatenation of category and type will form the security\nactivity field associated with the traces." + } + }, + "inner_properties": null, + "description": "Update a WAF custom rule." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "custom_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `custom_rule`." + } + }, + "inner_properties": null, + "description": "Object for a single WAF Custom Rule." + } + }, + "inner_properties": null, + "description": "New definition of the WAF Custom Rule." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the Custom Rule to update.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single WAF Custom Rule.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Update a WAF custom rule.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The definition of `ApplicationSecurityWafCustomRuleAction` object.\",\n \"properties\": {\n \"action\": {\n \"default\": \"block_request\",\n \"description\": \"Override the default action to take when the WAF custom rule would block.\",\n \"enum\": [\n \"redirect_request\",\n \"block_request\"\n ],\n \"example\": \"block_request\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDIRECT_REQUEST\",\n \"BLOCK_REQUEST\"\n ]\n },\n \"parameters\": {\n \"description\": \"The definition of `ApplicationSecurityWafCustomRuleActionParameters` object.\",\n \"properties\": {\n \"location\": {\n \"description\": \"The location to redirect to when the WAF custom rule triggers.\",\n \"example\": \"/blocking\",\n \"type\": \"string\"\n },\n \"status_code\": {\n \"default\": 403,\n \"description\": \"The status code to return when the WAF custom rule triggers.\",\n \"example\": 403,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"blocking\": {\n \"description\": \"Indicates whether the WAF custom rule will block the request.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"conditions\": {\n \"description\": \"Conditions for which the WAF Custom Rule will triggers, all conditions needs to match in order for the WAF\\nrule to trigger.\",\n \"items\": {\n \"description\": \"One condition of the WAF Custom Rule.\",\n \"properties\": {\n \"operator\": {\n \"description\": \"Operator to use for the WAF Condition.\",\n \"enum\": [\n \"match_regex\",\n \"!match_regex\",\n \"phrase_match\",\n \"!phrase_match\",\n \"is_xss\",\n \"is_sqli\",\n \"exact_match\",\n \"!exact_match\",\n \"ip_match\",\n \"!ip_match\",\n \"capture_data\"\n ],\n \"example\": \"match_regex\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MATCH_REGEX\",\n \"NOT_MATCH_REGEX\",\n \"PHRASE_MATCH\",\n \"NOT_PHRASE_MATCH\",\n \"IS_XSS\",\n \"IS_SQLI\",\n \"EXACT_MATCH\",\n \"NOT_EXACT_MATCH\",\n \"IP_MATCH\",\n \"NOT_IP_MATCH\",\n \"CAPTURE_DATA\"\n ]\n },\n \"parameters\": {\n \"description\": \"The scope of the WAF custom rule.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Identifier of a list of data from the denylist. Can only be used as substitution from the list parameter.\",\n \"example\": \"blocked_users\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"List of inputs on which at least one should match with the given operator.\",\n \"items\": {\n \"description\": \"Input from the request on which the condition should apply.\",\n \"properties\": {\n \"address\": {\n \"description\": \"Input from the request on which the condition should apply.\",\n \"enum\": [\n \"server.db.statement\",\n \"server.io.fs.file\",\n \"server.io.net.url\",\n \"server.sys.shell.cmd\",\n \"server.request.method\",\n \"server.request.uri.raw\",\n \"server.request.path_params\",\n \"server.request.query\",\n \"server.request.headers.no_cookies\",\n \"server.request.cookies\",\n \"server.request.trailers\",\n \"server.request.body\",\n \"server.response.status\",\n \"server.response.headers.no_cookies\",\n \"server.response.trailers\",\n \"grpc.server.request.metadata\",\n \"grpc.server.request.message\",\n \"grpc.server.method\",\n \"graphql.server.all_resolvers\",\n \"usr.id\",\n \"http.client_ip\"\n ],\n \"example\": \"server.db.statement\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SERVER_DB_STATEMENT\",\n \"SERVER_IO_FS_FILE\",\n \"SERVER_IO_NET_URL\",\n \"SERVER_SYS_SHELL_CMD\",\n \"SERVER_REQUEST_METHOD\",\n \"SERVER_REQUEST_URI_RAW\",\n \"SERVER_REQUEST_PATH_PARAMS\",\n \"SERVER_REQUEST_QUERY\",\n \"SERVER_REQUEST_HEADERS_NO_COOKIES\",\n \"SERVER_REQUEST_COOKIES\",\n \"SERVER_REQUEST_TRAILERS\",\n \"SERVER_REQUEST_BODY\",\n \"SERVER_RESPONSE_STATUS\",\n \"SERVER_RESPONSE_HEADERS_NO_COOKIES\",\n \"SERVER_RESPONSE_TRAILERS\",\n \"GRPC_SERVER_REQUEST_METADATA\",\n \"GRPC_SERVER_REQUEST_MESSAGE\",\n \"GRPC_SERVER_METHOD\",\n \"GRAPHQL_SERVER_ALL_RESOLVERS\",\n \"USR_ID\",\n \"HTTP_CLIENT_IP\"\n ]\n },\n \"key_path\": {\n \"description\": \"Specific path for the input.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"address\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"list\": {\n \"description\": \"List of value to use with the condition. Only used with the phrase_match, !phrase_match, exact_match and\\n!exact_match operator.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"options\": {\n \"description\": \"Options for the operator of this condition.\",\n \"properties\": {\n \"case_sensitive\": {\n \"default\": false,\n \"description\": \"Evaluate the value as case sensitive.\",\n \"type\": \"boolean\"\n },\n \"min_length\": {\n \"default\": 0,\n \"description\": \"Only evaluate this condition if the value has a minimum amount of characters.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"type\": \"object\"\n },\n \"regex\": {\n \"description\": \"Regex to use with the condition. Only used with match_regex and !match_regex operator.\",\n \"example\": \"path.*\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Store the captured value in the specified tag name. Only used with the capture_data operator.\",\n \"example\": \"custom_tag\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"inputs\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"operator\",\n \"parameters\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"Indicates whether the WAF custom rule is enabled.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The Name of the WAF custom rule.\",\n \"example\": \"Block request from bad useragent\",\n \"type\": \"string\"\n },\n \"path_glob\": {\n \"description\": \"The path glob for the WAF custom rule.\",\n \"example\": \"/api/search/*\",\n \"type\": \"string\"\n },\n \"scope\": {\n \"description\": \"The scope of the WAF custom rule.\",\n \"items\": {\n \"description\": \"The scope of the WAF custom rule.\",\n \"properties\": {\n \"env\": {\n \"description\": \"The environment scope for the WAF custom rule.\",\n \"example\": \"prod\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The service scope for the WAF custom rule.\",\n \"example\": \"billing-service\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"service\",\n \"env\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Tags associated with the WAF Custom Rule. The concatenation of category and type will form the security\\nactivity field associated with the traces.\",\n \"maxProperties\": 32,\n \"properties\": {\n \"category\": {\n \"description\": \"The category of the WAF Rule, can be either `business_logic`, `attack_attempt` or `security_response`.\",\n \"enum\": [\n \"attack_attempt\",\n \"business_logic\",\n \"security_response\"\n ],\n \"example\": \"business_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ATTACK_ATTEMPT\",\n \"BUSINESS_LOGIC\",\n \"SECURITY_RESPONSE\"\n ]\n },\n \"type\": {\n \"description\": \"The type of the WAF rule, associated with the category will form the security activity.\",\n \"example\": \"users.login.success\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"category\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"enabled\",\n \"blocking\",\n \"name\",\n \"tags\",\n \"conditions\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"custom_rule\",\n \"description\": \"The type of the resource. The value should always be `custom_rule`.\",\n \"enum\": [\n \"custom_rule\"\n ],\n \"example\": \"custom_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_RULE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the WAF Custom Rule.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWafExclusionFilter.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWafExclusionFilter.json new file mode 100644 index 00000000..cee7fa0a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWafExclusionFilter.json @@ -0,0 +1,451 @@ +{ + "name": "UpdateWafExclusionFilter", + "fully_qualified_name": "DatadogApi.UpdateWafExclusionFilter@0.1.0", + "description": "Updates a WAF exclusion filter by its identifier.\n\nUse this tool to update a specific Web Application Firewall (WAF) exclusion filter using its ID. It returns the updated exclusion filter object upon a successful request.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "waf_exclusion_filter_identifier", + "required": true, + "description": "The unique identifier of the WAF exclusion filter to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the WAF exclusion filter." + }, + "inferrable": true, + "http_endpoint_parameter_name": "exclusion_filter_id" + }, + { + "name": "exclusion_filter_update", + "required": true, + "description": "A JSON object containing the WAF exclusion filter details to update, including attributes like description, enabled status, IP list, and matching criteria.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 description for the exclusion filter." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the exclusion filter is enabled." + }, + "ip_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client IP addresses matched by the exclusion filter (CIDR notation is supported)." + }, + "on_match": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor" + ], + "properties": null, + "inner_properties": null, + "description": "The action taken when the exclusion filter matches. When set to `monitor`, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The HTTP path glob expression matched by the exclusion filter." + }, + "rules_target": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target a single WAF rule based on its identifier." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the targeted WAF rules." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the targeted WAF rules." + } + }, + "inner_properties": null, + "description": "Target multiple WAF rules based on their tags." + } + }, + "description": "The WAF rules targeted by the exclusion filter." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this environment." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this service." + } + }, + "description": "The services where the exclusion filter is deployed." + } + }, + "inner_properties": null, + "description": "Attributes for updating a WAF exclusion filter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "exclusion_filter" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the resource. The value should always be `exclusion_filter`." + } + }, + "inner_properties": null, + "description": "Object for updating a single WAF exclusion filter." + } + }, + "inner_properties": null, + "description": "The exclusion filter to update." + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateApplicationSecurityWafExclusionFilter'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/asm/waf/exclusion_filters/{exclusion_filter_id}", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "exclusion_filter_id", + "tool_parameter_name": "waf_exclusion_filter_identifier", + "description": "The identifier of the WAF exclusion filter.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The identifier of the WAF exclusion filter." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "exclusion_filter_update", + "description": "The exclusion filter to update.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 description for the exclusion filter." + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Indicates whether the exclusion filter is enabled." + }, + "ip_list": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The client IP addresses matched by the exclusion filter (CIDR notation is supported)." + }, + "on_match": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor" + ], + "properties": null, + "inner_properties": null, + "description": "The action taken when the exclusion filter matches. When set to `monitor`, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character." + }, + "path_glob": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The HTTP path glob expression matched by the exclusion filter." + }, + "rules_target": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "rule_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Target a single WAF rule based on its identifier." + }, + "tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "category": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The category of the targeted WAF rules." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The type of the targeted WAF rules." + } + }, + "inner_properties": null, + "description": "Target multiple WAF rules based on their tags." + } + }, + "description": "The WAF rules targeted by the exclusion filter." + }, + "scope": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this environment." + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Deploy on this service." + } + }, + "description": "The services where the exclusion filter is deployed." + } + }, + "inner_properties": null, + "description": "Attributes for updating a WAF exclusion filter." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "exclusion_filter" + ], + "properties": null, + "inner_properties": null, + "description": "Type of the resource. The value should always be `exclusion_filter`." + } + }, + "inner_properties": null, + "description": "Object for updating a single WAF exclusion filter." + } + }, + "inner_properties": null, + "description": "The exclusion filter to update." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object for updating a single WAF exclusion filter.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for updating a single WAF exclusion filter.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Attributes for updating a WAF exclusion filter.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A description for the exclusion filter.\",\n \"example\": \"Exclude false positives on a path\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Indicates whether the exclusion filter is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"ip_list\": {\n \"description\": \"The client IP addresses matched by the exclusion filter (CIDR notation is supported).\",\n \"items\": {\n \"example\": \"198.51.100.72\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"on_match\": {\n \"description\": \"The action taken when the exclusion filter matches. When set to `monitor`, security traces are emitted but the requests are not blocked. By default, security traces are not emitted and the requests are not blocked.\",\n \"enum\": [\n \"monitor\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR\"\n ]\n },\n \"parameters\": {\n \"description\": \"A list of parameters matched by the exclusion filter in the HTTP query string and HTTP request body. Nested parameters can be matched by joining fields with a dot character.\",\n \"items\": {\n \"example\": \"list.search.query\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"path_glob\": {\n \"description\": \"The HTTP path glob expression matched by the exclusion filter.\",\n \"example\": \"/accounts/*\",\n \"type\": \"string\"\n },\n \"rules_target\": {\n \"description\": \"The WAF rules targeted by the exclusion filter.\",\n \"items\": {\n \"description\": \"Target WAF rules based either on an identifier or tags.\",\n \"properties\": {\n \"rule_id\": {\n \"description\": \"Target a single WAF rule based on its identifier.\",\n \"example\": \"dog-913-009\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Target multiple WAF rules based on their tags.\",\n \"properties\": {\n \"category\": {\n \"description\": \"The category of the targeted WAF rules.\",\n \"example\": \"attack_attempt\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The type of the targeted WAF rules.\",\n \"example\": \"lfi\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"scope\": {\n \"description\": \"The services where the exclusion filter is deployed.\",\n \"items\": {\n \"description\": \"Deploy on services based on their environment and/or service name.\",\n \"properties\": {\n \"env\": {\n \"description\": \"Deploy on this environment.\",\n \"example\": \"www\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"Deploy on this service.\",\n \"example\": \"prod\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"description\",\n \"enabled\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"exclusion_filter\",\n \"description\": \"Type of the resource. The value should always be `exclusion_filter`.\",\n \"enum\": [\n \"exclusion_filter\"\n ],\n \"example\": \"exclusion_filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EXCLUSION_FILTER\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"The exclusion filter to update.\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkflowById.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkflowById.json new file mode 100644 index 00000000..c3dd31b8 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkflowById.json @@ -0,0 +1,1757 @@ +{ + "name": "UpdateWorkflowById", + "fully_qualified_name": "DatadogApi.UpdateWorkflowById@0.1.0", + "description": "Update a specific workflow by its ID.\n\nUse this tool to update the details of a workflow in Datadog by providing its ID. Ensure required permissions via a registered application key or configure them in the UI.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "workflow_identifier", + "required": true, + "description": "The unique identifier for the workflow you wish to update in Datadog.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "inferrable": true, + "http_endpoint_parameter_name": "workflow_id" + }, + { + "name": "workflow_update_data", + "required": true, + "description": "The JSON data for updating the workflow, including its attributes, specifications, and relationships.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "createdAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was created." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the workflow." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the workflow." + }, + "published": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set the workflow to published or unpublished. Workflows in an unpublished state will only be executable via manual runs. Automatic triggers such as Schedule will not execute the workflow until it is published." + }, + "spec": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "annotations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `height`." + }, + "width": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `width`." + }, + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplay` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Annotation` `id`." + }, + "markdownTextAnnotation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "text": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `markdownTextAnnotation` `text`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationMarkdownTextAnnotation` object." + } + }, + "description": "A list of annotations used in the workflow. These are like sticky notes for your workflow!" + }, + "connectionEnvs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroups": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroupId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `connectionGroupId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `label`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `tags`." + } + }, + "description": "The `ConnectionEnv` `connectionGroups`." + }, + "connections": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `connectionId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `label`." + } + }, + "description": "The `ConnectionEnv` `connections`." + }, + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ConnectionEnvEnv` object." + } + }, + "description": "A list of connections or connection groups used in the workflow." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier used to trigger workflows automatically in Datadog." + }, + "inputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `InputSchemaParametersType` object." + } + }, + "description": "The `InputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of input parameters for the workflow. These can be used as dynamic runtime values in your workflow." + }, + "outputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `OutputSchemaParametersType` object." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `value`." + } + }, + "description": "The `OutputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of output parameters for the workflow." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of an action." + }, + "completionGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "completionCondition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "operand1": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand1`." + }, + "operand2": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand2`." + }, + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `CompletionConditionOperator` object." + } + }, + "inner_properties": null, + "description": "The definition of `CompletionCondition` object." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "inner_properties": null, + "description": "Used to create conditions before running subsequent actions." + }, + "connectionLabel": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of a connection defined in the spec." + }, + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplay` object." + }, + "errorHandlers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "fallbackStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ErrorHandler` `fallbackStepName`." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "description": "The `Step` `errorHandlers`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the step." + }, + "outboundEdges": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "branchName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `branchName`." + }, + "nextStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `nextStepName`." + } + }, + "description": "A list of subsequent actions to run." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `name`." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `value`." + } + }, + "description": "A list of inputs for an action." + }, + "readinessGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "thresholdType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ANY", + "ALL" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ReadinessGateThresholdType` object." + } + }, + "inner_properties": null, + "description": "Used to merge multiple branches into a single branch." + } + }, + "description": "A `Step` is a sub-component of a workflow. Each `Step` performs an action." + }, + "triggers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The list of triggers that activate this workflow. At least one trigger is required, and each trigger type may appear at most once." + } + }, + "inner_properties": null, + "description": "The spec defines what the workflow does." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags of the workflow." + }, + "updatedAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was last updated." + }, + "webhookSecret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If a Webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataUpdateAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The workflow identifier" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "creator": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + }, + "owner": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the workflow being updated." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateWorkflow'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/workflows/{workflow_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "workflow_id", + "tool_parameter_name": "workflow_identifier", + "description": "The ID of the workflow.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the workflow." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "workflow_update_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "createdAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was created." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description of the workflow." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the workflow." + }, + "published": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Set the workflow to published or unpublished. Workflows in an unpublished state will only be executable via manual runs. Automatic triggers such as Schedule will not execute the workflow until it is published." + }, + "spec": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "annotations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "height": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `height`." + }, + "width": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `width`." + }, + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationDisplay` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Annotation` `id`." + }, + "markdownTextAnnotation": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "text": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `markdownTextAnnotation` `text`." + } + }, + "inner_properties": null, + "description": "The definition of `AnnotationMarkdownTextAnnotation` object." + } + }, + "description": "A list of annotations used in the workflow. These are like sticky notes for your workflow!" + }, + "connectionEnvs": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroups": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionGroupId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `connectionGroupId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `label`." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ConnectionGroup` `tags`." + } + }, + "description": "The `ConnectionEnv` `connectionGroups`." + }, + "connections": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "connectionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `connectionId`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Connection` `label`." + } + }, + "description": "The `ConnectionEnv` `connections`." + }, + "env": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "default" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ConnectionEnvEnv` object." + } + }, + "description": "A list of connections or connection groups used in the workflow." + }, + "handle": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Unique identifier used to trigger workflows automatically in Datadog." + }, + "inputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `InputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `InputSchemaParametersType` object." + } + }, + "description": "The `InputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of input parameters for the workflow. These can be used as dynamic runtime values in your workflow." + }, + "outputSchema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "defaultValue": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `defaultValue`." + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `description`." + }, + "label": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `label`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `name`." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "STRING", + "NUMBER", + "BOOLEAN", + "OBJECT", + "ARRAY_STRING", + "ARRAY_NUMBER", + "ARRAY_BOOLEAN", + "ARRAY_OBJECT" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `OutputSchemaParametersType` object." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutputSchemaParameters` `value`." + } + }, + "description": "The `OutputSchema` `parameters`." + } + }, + "inner_properties": null, + "description": "A list of output parameters for the workflow." + }, + "steps": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "actionId": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of an action." + }, + "completionGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "completionCondition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "operand1": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand1`." + }, + "operand2": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `CompletionCondition` `operand2`." + }, + "operator": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "OPERATOR_EQUAL", + "OPERATOR_NOT_EQUAL", + "OPERATOR_GREATER_THAN", + "OPERATOR_LESS_THAN", + "OPERATOR_GREATER_THAN_OR_EQUAL_TO", + "OPERATOR_LESS_THAN_OR_EQUAL_TO", + "OPERATOR_CONTAINS", + "OPERATOR_DOES_NOT_CONTAIN", + "OPERATOR_IS_NULL", + "OPERATOR_IS_NOT_NULL", + "OPERATOR_IS_EMPTY", + "OPERATOR_IS_NOT_EMPTY" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `CompletionConditionOperator` object." + } + }, + "inner_properties": null, + "description": "The definition of `CompletionCondition` object." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "inner_properties": null, + "description": "Used to create conditions before running subsequent actions." + }, + "connectionLabel": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier of a connection defined in the spec." + }, + "display": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "bounds": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "x": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `x`." + }, + "y": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `bounds` `y`." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplayBounds` object." + } + }, + "inner_properties": null, + "description": "The definition of `StepDisplay` object." + }, + "errorHandlers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "fallbackStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `ErrorHandler` `fallbackStepName`." + }, + "retryStrategy": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "kind": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "RETRY_STRATEGY_LINEAR" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `RetryStrategyKind` object." + }, + "linear": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "interval": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s" + }, + "maxRetries": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RetryStrategyLinear` `maxRetries`." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategyLinear` object." + } + }, + "inner_properties": null, + "description": "The definition of `RetryStrategy` object." + } + }, + "description": "The `Step` `errorHandlers`." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the step." + }, + "outboundEdges": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "branchName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `branchName`." + }, + "nextStepName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `OutboundEdge` `nextStepName`." + } + }, + "description": "A list of subsequent actions to run." + }, + "parameters": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `name`." + }, + "value": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `Parameter` `value`." + } + }, + "description": "A list of inputs for an action." + }, + "readinessGate": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "thresholdType": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "ANY", + "ALL" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `ReadinessGateThresholdType` object." + } + }, + "inner_properties": null, + "description": "Used to merge multiple branches into a single branch." + } + }, + "description": "A `Step` is a sub-component of a workflow. Each `Step` performs an action." + }, + "triggers": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "The list of triggers that activate this workflow. At least one trigger is required, and each trigger type may appear at most once." + } + }, + "inner_properties": null, + "description": "The spec defines what the workflow does." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Tags of the workflow." + }, + "updatedAt": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "When the workflow was last updated." + }, + "webhookSecret": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "If a Webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataUpdateAttributes` object." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The workflow identifier" + }, + "relationships": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "creator": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + }, + "owner": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The user identifier" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "users" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipType` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationshipData` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowUserRelationship` object." + } + }, + "inner_properties": null, + "description": "The definition of `WorkflowDataRelationships` object." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows" + ], + "properties": null, + "inner_properties": null, + "description": "The definition of `WorkflowDataType` object." + } + }, + "inner_properties": null, + "description": "Data related to the workflow being updated." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"A request object for updating an existing workflow.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"description\": \"A sample workflow.\",\n \"name\": \"Example Workflow\",\n \"published\": true,\n \"spec\": {\n \"annotations\": [\n {\n \"display\": {\n \"bounds\": {\n \"height\": 150,\n \"width\": 300,\n \"x\": -375,\n \"y\": -0.5\n }\n },\n \"id\": \"99999999-9999-9999-9999-999999999999\",\n \"markdownTextAnnotation\": {\n \"text\": \"Example annotation.\"\n }\n }\n ],\n \"connectionEnvs\": [\n {\n \"connections\": [\n {\n \"connectionId\": \"11111111-1111-1111-1111-111111111111\",\n \"label\": \"INTEGRATION_DATADOG\"\n }\n ],\n \"env\": \"default\"\n }\n ],\n \"handle\": \"my-handle\",\n \"inputSchema\": {\n \"parameters\": [\n {\n \"defaultValue\": \"default\",\n \"name\": \"input\",\n \"type\": \"STRING\"\n }\n ]\n },\n \"outputSchema\": {\n \"parameters\": [\n {\n \"name\": \"output\",\n \"type\": \"ARRAY_OBJECT\",\n \"value\": \"{{ Steps.Step1 }}\"\n }\n ]\n },\n \"steps\": [\n {\n \"actionId\": \"com.datadoghq.dd.monitor.listMonitors\",\n \"connectionLabel\": \"INTEGRATION_DATADOG\",\n \"name\": \"Step1\",\n \"outboundEdges\": [\n {\n \"branchName\": \"main\",\n \"nextStepName\": \"Step2\"\n }\n ],\n \"parameters\": [\n {\n \"name\": \"tags\",\n \"value\": \"service:monitoring\"\n }\n ]\n },\n {\n \"actionId\": \"com.datadoghq.core.noop\",\n \"name\": \"Step2\"\n }\n ],\n \"triggers\": [\n {\n \"monitorTrigger\": {\n \"rateLimit\": {\n \"count\": 1,\n \"interval\": \"3600s\"\n }\n },\n \"startStepNames\": [\n \"Step1\"\n ]\n },\n {\n \"githubWebhookTrigger\": {},\n \"startStepNames\": [\n \"Step1\"\n ]\n }\n ]\n },\n \"tags\": [\n \"team:infra\",\n \"service:monitoring\",\n \"foo:bar\"\n ]\n },\n \"id\": \"22222222-2222-2222-2222-222222222222\",\n \"type\": \"workflows\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"Data related to the workflow being updated.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `WorkflowDataUpdateAttributes` object.\",\n \"properties\": {\n \"createdAt\": {\n \"description\": \"When the workflow was created.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Description of the workflow.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the workflow.\",\n \"type\": \"string\"\n },\n \"published\": {\n \"description\": \"Set the workflow to published or unpublished. Workflows in an unpublished state will only be executable via manual runs. Automatic triggers such as Schedule will not execute the workflow until it is published.\",\n \"type\": \"boolean\"\n },\n \"spec\": {\n \"description\": \"The spec defines what the workflow does.\",\n \"properties\": {\n \"annotations\": {\n \"description\": \"A list of annotations used in the workflow. These are like sticky notes for your workflow!\",\n \"items\": {\n \"description\": \"A list of annotations used in the workflow. These are like sticky notes for your workflow!\",\n \"properties\": {\n \"display\": {\n \"description\": \"The definition of `AnnotationDisplay` object.\",\n \"properties\": {\n \"bounds\": {\n \"description\": \"The definition of `AnnotationDisplayBounds` object.\",\n \"properties\": {\n \"height\": {\n \"description\": \"The `bounds` `height`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"width\": {\n \"description\": \"The `bounds` `width`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"x\": {\n \"description\": \"The `bounds` `x`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"y\": {\n \"description\": \"The `bounds` `y`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `Annotation` `id`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"markdownTextAnnotation\": {\n \"description\": \"The definition of `AnnotationMarkdownTextAnnotation` object.\",\n \"properties\": {\n \"text\": {\n \"description\": \"The `markdownTextAnnotation` `text`.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"id\",\n \"display\",\n \"markdownTextAnnotation\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"connectionEnvs\": {\n \"description\": \"A list of connections or connection groups used in the workflow.\",\n \"items\": {\n \"description\": \"A list of connections or connection groups used in the workflow.\",\n \"properties\": {\n \"connectionGroups\": {\n \"description\": \"The `ConnectionEnv` `connectionGroups`.\",\n \"items\": {\n \"description\": \"The definition of `ConnectionGroup` object.\",\n \"properties\": {\n \"connectionGroupId\": {\n \"description\": \"The `ConnectionGroup` `connectionGroupId`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `ConnectionGroup` `label`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"tags\": {\n \"description\": \"The `ConnectionGroup` `tags`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"connectionGroupId\",\n \"label\",\n \"tags\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"connections\": {\n \"description\": \"The `ConnectionEnv` `connections`.\",\n \"items\": {\n \"description\": \"The definition of `Connection` object.\",\n \"properties\": {\n \"connectionId\": {\n \"description\": \"The `Connection` `connectionId`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `Connection` `label`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"connectionId\",\n \"label\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"env\": {\n \"description\": \"The definition of `ConnectionEnvEnv` object.\",\n \"enum\": [\n \"default\"\n ],\n \"example\": \"default\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DEFAULT\"\n ]\n }\n },\n \"required\": [\n \"env\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"handle\": {\n \"description\": \"Unique identifier used to trigger workflows automatically in Datadog.\",\n \"type\": \"string\"\n },\n \"inputSchema\": {\n \"description\": \"A list of input parameters for the workflow. These can be used as dynamic runtime values in your workflow.\",\n \"properties\": {\n \"parameters\": {\n \"description\": \"The `InputSchema` `parameters`.\",\n \"items\": {\n \"description\": \"The definition of `InputSchemaParameters` object.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"The `InputSchemaParameters` `defaultValue`.\"\n },\n \"description\": {\n \"description\": \"The `InputSchemaParameters` `description`.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `InputSchemaParameters` `label`.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The `InputSchemaParameters` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `InputSchemaParametersType` object.\",\n \"enum\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ],\n \"example\": \"STRING\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"outputSchema\": {\n \"description\": \"A list of output parameters for the workflow.\",\n \"properties\": {\n \"parameters\": {\n \"description\": \"The `OutputSchema` `parameters`.\",\n \"items\": {\n \"description\": \"The definition of `OutputSchemaParameters` object.\",\n \"properties\": {\n \"defaultValue\": {\n \"description\": \"The `OutputSchemaParameters` `defaultValue`.\"\n },\n \"description\": {\n \"description\": \"The `OutputSchemaParameters` `description`.\",\n \"type\": \"string\"\n },\n \"label\": {\n \"description\": \"The `OutputSchemaParameters` `label`.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The `OutputSchemaParameters` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `OutputSchemaParametersType` object.\",\n \"enum\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ],\n \"example\": \"STRING\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"NUMBER\",\n \"BOOLEAN\",\n \"OBJECT\",\n \"ARRAY_STRING\",\n \"ARRAY_NUMBER\",\n \"ARRAY_BOOLEAN\",\n \"ARRAY_OBJECT\"\n ]\n },\n \"value\": {\n \"description\": \"The `OutputSchemaParameters` `value`.\"\n }\n },\n \"required\": [\n \"name\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"steps\": {\n \"description\": \"A `Step` is a sub-component of a workflow. Each `Step` performs an action.\",\n \"items\": {\n \"description\": \"A Step is a sub-component of a workflow. Each Step performs an action.\",\n \"properties\": {\n \"actionId\": {\n \"description\": \"The unique identifier of an action.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"completionGate\": {\n \"description\": \"Used to create conditions before running subsequent actions.\",\n \"properties\": {\n \"completionCondition\": {\n \"description\": \"The definition of `CompletionCondition` object.\",\n \"properties\": {\n \"operand1\": {\n \"description\": \"The `CompletionCondition` `operand1`.\"\n },\n \"operand2\": {\n \"description\": \"The `CompletionCondition` `operand2`.\"\n },\n \"operator\": {\n \"description\": \"The definition of `CompletionConditionOperator` object.\",\n \"enum\": [\n \"OPERATOR_EQUAL\",\n \"OPERATOR_NOT_EQUAL\",\n \"OPERATOR_GREATER_THAN\",\n \"OPERATOR_LESS_THAN\",\n \"OPERATOR_GREATER_THAN_OR_EQUAL_TO\",\n \"OPERATOR_LESS_THAN_OR_EQUAL_TO\",\n \"OPERATOR_CONTAINS\",\n \"OPERATOR_DOES_NOT_CONTAIN\",\n \"OPERATOR_IS_NULL\",\n \"OPERATOR_IS_NOT_NULL\",\n \"OPERATOR_IS_EMPTY\",\n \"OPERATOR_IS_NOT_EMPTY\"\n ],\n \"example\": \"OPERATOR_EQUAL\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPERATOR_EQUAL\",\n \"OPERATOR_NOT_EQUAL\",\n \"OPERATOR_GREATER_THAN\",\n \"OPERATOR_LESS_THAN\",\n \"OPERATOR_GREATER_THAN_OR_EQUAL_TO\",\n \"OPERATOR_LESS_THAN_OR_EQUAL_TO\",\n \"OPERATOR_CONTAINS\",\n \"OPERATOR_DOES_NOT_CONTAIN\",\n \"OPERATOR_IS_NULL\",\n \"OPERATOR_IS_NOT_NULL\",\n \"OPERATOR_IS_EMPTY\",\n \"OPERATOR_IS_NOT_EMPTY\"\n ]\n }\n },\n \"required\": [\n \"operand1\",\n \"operator\"\n ],\n \"type\": \"object\"\n },\n \"retryStrategy\": {\n \"description\": \"The definition of `RetryStrategy` object.\",\n \"properties\": {\n \"kind\": {\n \"description\": \"The definition of `RetryStrategyKind` object.\",\n \"enum\": [\n \"RETRY_STRATEGY_LINEAR\"\n ],\n \"example\": \"RETRY_STRATEGY_LINEAR\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RETRY_STRATEGY_LINEAR\"\n ]\n },\n \"linear\": {\n \"description\": \"The definition of `RetryStrategyLinear` object.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"The `RetryStrategyLinear` `maxRetries`.\",\n \"example\": 0.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"maxRetries\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"completionCondition\",\n \"retryStrategy\"\n ],\n \"type\": \"object\"\n },\n \"connectionLabel\": {\n \"description\": \"The unique identifier of a connection defined in the spec.\",\n \"type\": \"string\"\n },\n \"display\": {\n \"description\": \"The definition of `StepDisplay` object.\",\n \"properties\": {\n \"bounds\": {\n \"description\": \"The definition of `StepDisplayBounds` object.\",\n \"properties\": {\n \"x\": {\n \"description\": \"The `bounds` `x`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"y\": {\n \"description\": \"The `bounds` `y`.\",\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"errorHandlers\": {\n \"description\": \"The `Step` `errorHandlers`.\",\n \"items\": {\n \"description\": \"Used to handle errors in an action.\",\n \"properties\": {\n \"fallbackStepName\": {\n \"description\": \"The `ErrorHandler` `fallbackStepName`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"retryStrategy\": {\n \"description\": \"The definition of `RetryStrategy` object.\",\n \"properties\": {\n \"kind\": {\n \"description\": \"The definition of `RetryStrategyKind` object.\",\n \"enum\": [\n \"RETRY_STRATEGY_LINEAR\"\n ],\n \"example\": \"RETRY_STRATEGY_LINEAR\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RETRY_STRATEGY_LINEAR\"\n ]\n },\n \"linear\": {\n \"description\": \"The definition of `RetryStrategyLinear` object.\",\n \"properties\": {\n \"interval\": {\n \"description\": \"The `RetryStrategyLinear` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"maxRetries\": {\n \"description\": \"The `RetryStrategyLinear` `maxRetries`.\",\n \"example\": 0.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"interval\",\n \"maxRetries\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"kind\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"retryStrategy\",\n \"fallbackStepName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the step.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"outboundEdges\": {\n \"description\": \"A list of subsequent actions to run.\",\n \"items\": {\n \"description\": \"The definition of `OutboundEdge` object.\",\n \"properties\": {\n \"branchName\": {\n \"description\": \"The `OutboundEdge` `branchName`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"nextStepName\": {\n \"description\": \"The `OutboundEdge` `nextStepName`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"nextStepName\",\n \"branchName\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"parameters\": {\n \"description\": \"A list of inputs for an action.\",\n \"items\": {\n \"description\": \"The definition of `Parameter` object.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The `Parameter` `name`.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The `Parameter` `value`.\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"readinessGate\": {\n \"description\": \"Used to merge multiple branches into a single branch.\",\n \"properties\": {\n \"thresholdType\": {\n \"description\": \"The definition of `ReadinessGateThresholdType` object.\",\n \"enum\": [\n \"ANY\",\n \"ALL\"\n ],\n \"example\": \"ANY\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ANY\",\n \"ALL\"\n ]\n }\n },\n \"required\": [\n \"thresholdType\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"name\",\n \"actionId\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"triggers\": {\n \"description\": \"The list of triggers that activate this workflow. At least one trigger is required, and each trigger type may appear at most once.\",\n \"items\": {\n \"description\": \"One of the triggers that can start the execution of a workflow.\",\n \"oneOf\": [\n {\n \"description\": \"Schema for an API-based trigger.\",\n \"properties\": {\n \"apiTrigger\": {\n \"description\": \"Trigger a workflow from an API request. The workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"apiTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for an App-based trigger.\",\n \"properties\": {\n \"appTrigger\": {\n \"description\": \"Trigger a workflow from an App.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"appTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Case-based trigger.\",\n \"properties\": {\n \"caseTrigger\": {\n \"description\": \"Trigger a workflow from a Case. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"caseTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Change Event-based trigger.\",\n \"properties\": {\n \"changeEventTrigger\": {\n \"description\": \"Trigger a workflow from a Change Event.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"changeEventTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Database Monitoring-based trigger.\",\n \"properties\": {\n \"databaseMonitoringTrigger\": {\n \"description\": \"Trigger a workflow from Database Monitoring.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"databaseMonitoringTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Datastore-based trigger.\",\n \"properties\": {\n \"datastoreTrigger\": {\n \"description\": \"Trigger a workflow from a Datastore. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"datastoreTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Dashboard-based trigger.\",\n \"properties\": {\n \"dashboardTrigger\": {\n \"description\": \"Trigger a workflow from a Dashboard.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"dashboardTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a GitHub webhook-based trigger.\",\n \"properties\": {\n \"githubWebhookTrigger\": {\n \"description\": \"Trigger a workflow from a GitHub webhook. To trigger a workflow from GitHub, you must set a `webhookSecret`. In your GitHub Webhook Settings, set the Payload URL to \\\"base_url\\\"/api/v2/workflows/\\\"workflow_id\\\"/webhook?orgId=\\\"org_id\\\", select application/json for the content type, and be highly recommend enabling SSL verification for security. The workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"githubWebhookTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for an Incident-based trigger.\",\n \"properties\": {\n \"incidentTrigger\": {\n \"description\": \"Trigger a workflow from an Incident. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"incidentTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Monitor-based trigger.\",\n \"properties\": {\n \"monitorTrigger\": {\n \"description\": \"Trigger a workflow from a Monitor. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"monitorTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Notebook-based trigger.\",\n \"properties\": {\n \"notebookTrigger\": {\n \"description\": \"Trigger a workflow from a Notebook.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"notebookTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Schedule-based trigger.\",\n \"properties\": {\n \"scheduleTrigger\": {\n \"description\": \"Trigger a workflow from a Schedule. The workflow must be published.\",\n \"properties\": {\n \"rruleExpression\": {\n \"description\": \"Recurrence rule expression for scheduling.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"rruleExpression\"\n ],\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"scheduleTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Security-based trigger.\",\n \"properties\": {\n \"securityTrigger\": {\n \"description\": \"Trigger a workflow from a Security Signal or Finding. For automatic triggering a handle must be configured and the workflow must be published.\",\n \"properties\": {\n \"rateLimit\": {\n \"description\": \"Defines a rate limit for a trigger.\",\n \"properties\": {\n \"count\": {\n \"description\": \"The `TriggerRateLimit` `count`.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"interval\": {\n \"description\": \"The `TriggerRateLimit` `interval`. The expected format is the number of seconds ending with an s. For example, 1 day is 86400s\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"securityTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Self Service-based trigger.\",\n \"properties\": {\n \"selfServiceTrigger\": {\n \"description\": \"Trigger a workflow from Self Service.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"selfServiceTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Slack-based trigger.\",\n \"properties\": {\n \"slackTrigger\": {\n \"description\": \"Trigger a workflow from Slack. The workflow must be published.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"slackTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Software Catalog-based trigger.\",\n \"properties\": {\n \"softwareCatalogTrigger\": {\n \"description\": \"Trigger a workflow from Software Catalog.\",\n \"type\": \"object\"\n },\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"softwareCatalogTrigger\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Schema for a Workflow-based trigger.\",\n \"properties\": {\n \"startStepNames\": {\n \"description\": \"A list of steps that run first after a trigger fires.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"description\": \"The `StartStepNames` `items`.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"workflowTrigger\": {\n \"description\": \"Trigger a workflow from the Datadog UI. Only required if no other trigger exists.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"workflowTrigger\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags of the workflow.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"updatedAt\": {\n \"description\": \"When the workflow was last updated.\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"type\": \"string\"\n },\n \"webhookSecret\": {\n \"description\": \"If a Webhook trigger is defined on this workflow, a webhookSecret is required and should be provided here.\",\n \"type\": \"string\",\n \"writeOnly\": true\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The workflow identifier\",\n \"type\": \"string\"\n },\n \"relationships\": {\n \"description\": \"The definition of `WorkflowDataRelationships` object.\",\n \"properties\": {\n \"creator\": {\n \"description\": \"The definition of `WorkflowUserRelationship` object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `WorkflowUserRelationshipData` object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The user identifier\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `WorkflowUserRelationshipType` object.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"owner\": {\n \"description\": \"The definition of `WorkflowUserRelationship` object.\",\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `WorkflowUserRelationshipData` object.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The user identifier\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"The definition of `WorkflowUserRelationshipType` object.\",\n \"enum\": [\n \"users\"\n ],\n \"example\": \"users\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"USERS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"id\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"readOnly\": true,\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The definition of `WorkflowDataType` object.\",\n \"enum\": [\n \"workflows\"\n ],\n \"example\": \"workflows\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"WORKFLOWS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkflowsWebhookHandle.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkflowsWebhookHandle.json new file mode 100644 index 00000000..ecd20260 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkflowsWebhookHandle.json @@ -0,0 +1,229 @@ +{ + "name": "UpdateWorkflowsWebhookHandle", + "fully_qualified_name": "DatadogApi.UpdateWorkflowsWebhookHandle@0.1.0", + "description": "Update a webhook handle in Datadog's Microsoft Teams integration.\n\nThis tool updates a Workflows webhook handle for the Datadog Microsoft Teams integration. Use it to modify existing webhook configurations.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "webhook_handle_id", + "required": true, + "description": "The unique identifier for the Workflows webhook handle to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle id." + }, + "inferrable": true, + "http_endpoint_parameter_name": "handle_id" + }, + { + "name": "webhook_handle_resource_type", + "required": true, + "description": "Specifies the Workflows webhook handle resource type. Use 'workflows-webhook-handle'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows-webhook-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the Workflows webhook handle resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "webhook_handle_name", + "required": false, + "description": "The name of the Workflows Webhook handle to be updated. This should be a descriptive string identifying the webhook.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook handle name." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "workflows_webhook_url", + "required": false, + "description": "The URL for the Workflows Webhook. Specify the endpoint to send requests to.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook URL." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.url" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateWorkflowsWebhookHandle'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/integration/ms-teams/configuration/workflows-webhook-handles/{handle_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "handle_id", + "tool_parameter_name": "webhook_handle_id", + "description": "Your Workflows webhook handle id.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Your Workflows webhook handle id." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "webhook_handle_name", + "description": "Workflows Webhook handle name.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook handle name." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.url", + "tool_parameter_name": "workflows_webhook_url", + "description": "Workflows Webhook URL.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Workflows Webhook URL." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "webhook_handle_resource_type", + "description": "Specifies the Workflows webhook handle resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "workflows-webhook-handle" + ], + "properties": null, + "inner_properties": null, + "description": "Specifies the Workflows webhook handle resource type." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "workflows-webhook-handle", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Update Workflows webhook handle request.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Workflows Webhook handle data from a response.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Workflows Webhook handle attributes.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Workflows Webhook handle name.\",\n \"example\": \"fake-handle-name\",\n \"maxLength\": 255,\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Workflows Webhook URL.\",\n \"example\": \"https://fake.url.com\",\n \"maxLength\": 255,\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"workflows-webhook-handle\",\n \"description\": \"Specifies the Workflows webhook handle resource type.\",\n \"enum\": [\n \"workflows-webhook-handle\"\n ],\n \"example\": \"workflows-webhook-handle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"WORKFLOWS_WEBHOOK_HANDLE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"Workflows Webhook handle payload.\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkloadProtectionAgentRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkloadProtectionAgentRule.json new file mode 100644 index 00000000..b32bcc8a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkloadProtectionAgentRule.json @@ -0,0 +1,754 @@ +{ + "name": "UpdateWorkloadProtectionAgentRule", + "fully_qualified_name": "DatadogApi.UpdateWorkloadProtectionAgentRule@0.1.0", + "description": "Update a specific Workload Protection Agent rule.\n\nUse this tool to update a specific Workload Protection Agent rule. This is helpful when you need to modify existing rules for workload protection. Please note that this endpoint is not available for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_rule_id", + "required": true, + "description": "The unique identifier of the specific Agent rule to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "agent_rule_id" + }, + { + "name": "new_agent_rule_definition", + "required": true, + "description": "JSON object defining the new configuration for the agent rule, including actions, metadata, agent version, and more.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent" + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule" + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to" + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule" + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to" + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved" + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule" + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Update an existing Cloud Workload Security Agent rule" + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "New definition of the agent rule" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + }, + { + "name": "agent_policy_id", + "required": false, + "description": "The ID of the Agent policy to be updated in the Workload Protection Agent rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCSMThreatsAgentRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/agent_rules/{agent_rule_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "agent_policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "query", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "agent_rule_id", + "tool_parameter_name": "agent_rule_id", + "description": "The ID of the Agent rule", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "new_agent_rule_definition", + "description": "New definition of the agent rule", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "actions": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "filter": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "SECL expression used to target the container to apply the action on" + }, + "hash": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An empty object indicating the hash action" + }, + "kill": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "signal": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Supported signals for the kill system call" + } + }, + "inner_properties": null, + "description": "Kill system call applied on the container matching the rule" + }, + "metadata": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "image_tag": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The image tag of the metadata action" + }, + "service": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The service of the metadata action" + }, + "short_image": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The short image of the metadata action" + } + }, + "inner_properties": null, + "description": "The metadata action applied on the scope matching the rule" + }, + "set": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "append": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be appended to the field." + }, + "default_value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The default value of the set action" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The expression of the set action." + }, + "field": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The field of the set action" + }, + "inherited": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the value should be inherited." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the set action" + }, + "scope": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The scope of the set action." + }, + "size": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The size of the set action." + }, + "ttl": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The time to live of the set action." + }, + "value": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The value of the set action" + } + }, + "inner_properties": null, + "description": "The set action applied on the scope matching the rule" + } + }, + "description": "The array of actions the rule can perform if triggered" + }, + "agent_version": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Constrain the rule to specific versions of the Datadog Agent" + }, + "blocking": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The blocking policies that the rule belongs to" + }, + "description": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the Agent rule" + }, + "disabled": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The disabled policies that the rule belongs to" + }, + "enabled": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the Agent rule is enabled" + }, + "expression": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The SECL expression of the Agent rule" + }, + "monitoring": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The monitoring policies that the rule belongs to" + }, + "policy_id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the policy where the Agent rule is saved" + }, + "product_tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The list of product tags associated with the rule" + }, + "silent": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the rule is silent." + } + }, + "inner_properties": null, + "description": "Update an existing Cloud Workload Security Agent rule" + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent rule" + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "agent_rule" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `agent_rule`" + } + }, + "inner_properties": null, + "description": "Object for a single Agent rule" + } + }, + "inner_properties": null, + "description": "New definition of the agent rule" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the Agent rule with the attributes to update\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single Agent rule\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Update an existing Cloud Workload Security Agent rule\",\n \"properties\": {\n \"actions\": {\n \"description\": \"The array of actions the rule can perform if triggered\",\n \"items\": {\n \"description\": \"The action the rule can perform if triggered\",\n \"properties\": {\n \"filter\": {\n \"description\": \"SECL expression used to target the container to apply the action on\",\n \"type\": \"string\"\n },\n \"hash\": {\n \"additionalProperties\": {},\n \"description\": \"An empty object indicating the hash action\",\n \"type\": \"object\"\n },\n \"kill\": {\n \"description\": \"Kill system call applied on the container matching the rule\",\n \"properties\": {\n \"signal\": {\n \"description\": \"Supported signals for the kill system call\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"metadata\": {\n \"description\": \"The metadata action applied on the scope matching the rule\",\n \"properties\": {\n \"image_tag\": {\n \"description\": \"The image tag of the metadata action\",\n \"type\": \"string\"\n },\n \"service\": {\n \"description\": \"The service of the metadata action\",\n \"type\": \"string\"\n },\n \"short_image\": {\n \"description\": \"The short image of the metadata action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"set\": {\n \"description\": \"The set action applied on the scope matching the rule\",\n \"properties\": {\n \"append\": {\n \"description\": \"Whether the value should be appended to the field.\",\n \"type\": \"boolean\"\n },\n \"default_value\": {\n \"description\": \"The default value of the set action\",\n \"type\": \"string\"\n },\n \"expression\": {\n \"description\": \"The expression of the set action.\",\n \"type\": \"string\"\n },\n \"field\": {\n \"description\": \"The field of the set action\",\n \"type\": \"string\"\n },\n \"inherited\": {\n \"description\": \"Whether the value should be inherited.\",\n \"type\": \"boolean\"\n },\n \"name\": {\n \"description\": \"The name of the set action\",\n \"type\": \"string\"\n },\n \"scope\": {\n \"description\": \"The scope of the set action.\",\n \"type\": \"string\"\n },\n \"size\": {\n \"description\": \"The size of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"ttl\": {\n \"description\": \"The time to live of the set action.\",\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"value\": {\n \"description\": \"The value of the set action\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"agent_version\": {\n \"description\": \"Constrain the rule to specific versions of the Datadog Agent\",\n \"type\": \"string\"\n },\n \"blocking\": {\n \"description\": \"The blocking policies that the rule belongs to\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"description\": {\n \"description\": \"The description of the Agent rule\",\n \"example\": \"My Agent rule\",\n \"type\": \"string\"\n },\n \"disabled\": {\n \"description\": \"The disabled policies that the rule belongs to\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"enabled\": {\n \"description\": \"Whether the Agent rule is enabled\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"expression\": {\n \"description\": \"The SECL expression of the Agent rule\",\n \"example\": \"exec.file.name == \\\"sh\\\"\",\n \"type\": \"string\"\n },\n \"monitoring\": {\n \"description\": \"The monitoring policies that the rule belongs to\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"policy_id\": {\n \"description\": \"The ID of the policy where the Agent rule is saved\",\n \"example\": \"a8c8e364-6556-434d-b798-a4c23de29c0b\",\n \"type\": \"string\"\n },\n \"product_tags\": {\n \"description\": \"The list of product tags associated with the rule\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"silent\": {\n \"description\": \"Whether the rule is silent.\",\n \"example\": false,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the Agent rule\",\n \"example\": \"3dd-0uc-h1s\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"agent_rule\",\n \"description\": \"The type of the resource, must always be `agent_rule`\",\n \"enum\": [\n \"agent_rule\"\n ],\n \"example\": \"agent_rule\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AGENT_RULE\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the agent rule\",\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkloadProtectionPolicy.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkloadProtectionPolicy.json new file mode 100644 index 00000000..dc7a8e22 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UpdateWorkloadProtectionPolicy.json @@ -0,0 +1,361 @@ +{ + "name": "UpdateWorkloadProtectionPolicy", + "fully_qualified_name": "DatadogApi.UpdateWorkloadProtectionPolicy@0.1.0", + "description": "Update a specific Workload Protection policy in Datadog.\n\nThis tool updates a specified Workload Protection policy using the Datadog API. It should be called when modifications to security policies are needed. Note that the endpoint is not available for the Government (US1-FED) site.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "agent_policy_id", + "required": true, + "description": "The unique identifier for the Agent policy to update.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "policy_id" + }, + { + "name": "resource_type", + "required": true, + "description": "The type of the resource, always set to 'policy'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policy" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `policy`" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "policy_description", + "required": false, + "description": "A string that provides the description of the Workload Protection policy. This should explain the policy's purpose or key features.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "host_tags_for_policy_deployment", + "required": false, + "description": "An array of strings representing the host tags defining where this policy is deployed.", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.hostTags" + }, + { + "name": "host_tags_conditions", + "required": false, + "description": "Array of host tags specifying policy deployment conditions. Inner values use AND logic, outer values use OR logic.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.hostTagsLists" + }, + { + "name": "policy_name", + "required": false, + "description": "The name of the Workload Protection policy to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "policy_id", + "required": false, + "description": "The unique identifier of the Agent policy to be updated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "policy_enabled", + "required": false, + "description": "Indicates if the policy is enabled. Use true for enabled, false for disabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the policy is enabled" + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UpdateCSMThreatsAgentPolicy'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/cws/policy/{policy_id}", + "http_method": "PATCH", + "headers": {}, + "parameters": [ + { + "name": "policy_id", + "tool_parameter_name": "agent_policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "policy_description", + "description": "The description of the policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The description of the policy" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "policy_enabled", + "description": "Whether the policy is enabled", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the policy is enabled" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.hostTags", + "tool_parameter_name": "host_tags_for_policy_deployment", + "description": "The host tags defining where this policy is deployed", + "value_schema": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.hostTagsLists", + "tool_parameter_name": "host_tags_conditions", + "description": "The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "policy_name", + "description": "The name of the policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the policy" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "policy_id", + "description": "The ID of the Agent policy", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The ID of the Agent policy" + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource, must always be `policy`", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "policy" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource, must always be `policy`" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "policy", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the Agent policy with the attributes to update\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single Agent policy\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Update an existing Cloud Workload Security Agent policy\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the policy\",\n \"example\": \"My agent policy\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Whether the policy is enabled\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"hostTags\": {\n \"description\": \"The host tags defining where this policy is deployed\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hostTagsLists\": {\n \"description\": \"The host tags defining where this policy is deployed, the inner values are linked with AND, the outer values are linked with OR\",\n \"items\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the policy\",\n \"example\": \"my_agent_policy\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The ID of the Agent policy\",\n \"example\": \"6517fcc1-cec7-4394-a655-8d6e9d085255\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"policy\",\n \"description\": \"The type of the resource, must always be `policy`\",\n \"enum\": [\n \"policy\"\n ],\n \"example\": \"policy\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"POLICY\"\n ]\n }\n },\n \"required\": [\n \"attributes\",\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"description\": \"New definition of the Agent policy\",\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UploadCustomCostsFile.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UploadCustomCostsFile.json new file mode 100644 index 00000000..3e6cb2a6 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/UploadCustomCostsFile.json @@ -0,0 +1,240 @@ +{ + "name": "UploadCustomCostsFile", + "fully_qualified_name": "DatadogApi.UploadCustomCostsFile@0.1.0", + "description": "Upload a custom costs file to Datadog.\n\nThis tool uploads a custom costs file to Datadog. Use it when you need to update or input new cost data into the system.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "custom_costs_data", + "required": true, + "description": "An array of JSON objects specifying each line item's billing details. Each item should contain BilledCost, BillingCurrency, ChargeDescription, ChargePeriodStart, ChargePeriodEnd, ProviderName, and optional Tags.", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "BilledCost": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total cost in the cost file." + }, + "BillingCurrency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency used in the Custom Costs file." + }, + "ChargeDescription": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the line item cost." + }, + "ChargePeriodEnd": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date of the usage charge." + }, + "ChargePeriodStart": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the usage charge." + }, + "ProviderName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the provider for the line item." + }, + "Tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional tags for the line item." + } + }, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'UploadCustomCostsFile'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/cost/custom_costs", + "http_method": "PUT", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "custom_costs_data", + "description": "", + "value_schema": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "BilledCost": { + "val_type": "number", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Total cost in the cost file." + }, + "BillingCurrency": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Currency used in the Custom Costs file." + }, + "ChargeDescription": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Description for the line item cost." + }, + "ChargePeriodEnd": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "End date of the usage charge." + }, + "ChargePeriodStart": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Start date of the usage charge." + }, + "ProviderName": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the provider for the line item." + }, + "Tags": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Additional tags for the line item." + } + }, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for uploading a Custom Costs file.\",\n \"items\": {\n \"description\": \"Line item details from a Custom Costs file.\",\n \"properties\": {\n \"BilledCost\": {\n \"description\": \"Total cost in the cost file.\",\n \"example\": 100.5,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"BillingCurrency\": {\n \"description\": \"Currency used in the Custom Costs file.\",\n \"example\": \"USD\",\n \"type\": \"string\"\n },\n \"ChargeDescription\": {\n \"description\": \"Description for the line item cost.\",\n \"example\": \"Monthly usage charge for my service\",\n \"type\": \"string\"\n },\n \"ChargePeriodEnd\": {\n \"description\": \"End date of the usage charge.\",\n \"example\": \"2023-02-28\",\n \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n \"type\": \"string\"\n },\n \"ChargePeriodStart\": {\n \"description\": \"Start date of the usage charge.\",\n \"example\": \"2023-02-01\",\n \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n \"type\": \"string\"\n },\n \"ProviderName\": {\n \"description\": \"Name of the provider for the line item.\",\n \"type\": \"string\"\n },\n \"Tags\": {\n \"additionalProperties\": {\n \"type\": \"string\"\n },\n \"description\": \"Additional tags for the line item.\",\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateMonitorTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateMonitorTemplate.json new file mode 100644 index 00000000..84cb13c9 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateMonitorTemplate.json @@ -0,0 +1,379 @@ +{ + "name": "ValidateMonitorTemplate", + "fully_qualified_name": "DatadogApi.ValidateMonitorTemplate@0.1.0", + "description": "Validate the structure and content of a monitor template update.\n\nThis tool is used to validate the structure and content of an existing monitor user template being updated to a new version. It ensures that the changes align with the required format and content guidelines.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_template_id", + "required": true, + "description": "ID of the monitor user template to be validated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "inferrable": true, + "http_endpoint_parameter_name": "template_id" + }, + { + "name": "monitor_template_data", + "required": true, + "description": "JSON object detailing the monitor template's attributes, including description, monitor definition, tags, variables, title, and type.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ValidateExistingMonitorUserTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/template/{template_id}/validate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "template_id", + "tool_parameter_name": "monitor_template_id", + "description": "ID of the monitor user template.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "ID of the monitor user template." + }, + "accepted_as": "path", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "requestBody", + "tool_parameter_name": "monitor_template_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "id": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The unique identifier." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating a new monitor user template version.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Monitor user template data.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": false,\n \"description\": \"Attributes for a monitor user template.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A brief description of the monitor user template.\",\n \"example\": \"This is a template for monitoring user activity.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"monitor_definition\": {\n \"additionalProperties\": {},\n \"description\": \"A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).\",\n \"example\": {\n \"message\": \"You may need to add web hosts if this is consistently high.\",\n \"name\": \"Bytes received on host0\",\n \"query\": \"avg(last_5m):sum:system.net.bytes_rcvd{host:host0} > 100\",\n \"type\": \"query alert\"\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"The definition of `MonitorUserTemplateTags` object.\",\n \"example\": [\n \"product:Our Custom App\",\n \"integration:Azure\"\n ],\n \"items\": {\n \"description\": \"Tags associated with the monitor user template. Must be key value. Only 'product' and 'integration' keys are\\nallowed. The value is the name of the category to display the template under. Integrations can be filtered out in the UI.\\n(Review note: This modeling of 'categories' is subject to change.)\",\n \"example\": \"us-east1\",\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"template_variables\": {\n \"description\": \"The definition of `MonitorUserTemplateTemplateVariables` object.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"List of objects representing template variables on the monitor which can have selectable values.\",\n \"properties\": {\n \"available_values\": {\n \"description\": \"Available values for the variable.\",\n \"example\": [\n \"value1\",\n \"value2\"\n ],\n \"items\": {\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"defaults\": {\n \"description\": \"Default values of the template variable.\",\n \"example\": [\n \"defaultValue\"\n ],\n \"items\": {\n \"minLength\": 0,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the template variable.\",\n \"example\": \"regionName\",\n \"type\": \"string\"\n },\n \"tag_key\": {\n \"description\": \"The tag key associated with the variable. This works the same as dashboard template variables.\",\n \"example\": \"datacenter\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"title\": {\n \"description\": \"The title of the monitor user template.\",\n \"example\": \"Postgres CPU Monitor\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"monitor_definition\",\n \"tags\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier.\",\n \"example\": \"00000000-0000-1234-0000-000000000000\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"monitor-user-template\",\n \"description\": \"Monitor user template resource type.\",\n \"enum\": [\n \"monitor-user-template\"\n ],\n \"example\": \"monitor-user-template\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_USER_TEMPLATE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateMonitorUserTemplate.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateMonitorUserTemplate.json new file mode 100644 index 00000000..ffc2ae8b --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateMonitorUserTemplate.json @@ -0,0 +1,330 @@ +{ + "name": "ValidateMonitorUserTemplate", + "fully_qualified_name": "DatadogApi.ValidateMonitorUserTemplate@0.1.0", + "description": "Validate the structure and content of a monitor user template.\n\nUse this tool to ensure that a monitor user template in Datadog meets the required structural and content standards. This is essential for verifying templates before implementation.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "monitor_user_template_data", + "required": true, + "description": "JSON object containing the structure and content of a monitor user template. Includes attributes like description, monitor definition, tags, template variables, and title.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ValidateMonitorUserTemplate'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/monitor/template/validate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "monitor_user_template_data", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "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 brief description of the monitor user template." + }, + "monitor_definition": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor)." + }, + "tags": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The definition of `MonitorUserTemplateTags` object." + }, + "template_variables": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": { + "available_values": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Available values for the variable." + }, + "defaults": { + "val_type": "array", + "inner_val_type": "string", + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Default values of the template variable." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the template variable." + }, + "tag_key": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The tag key associated with the variable. This works the same as dashboard template variables." + } + }, + "description": "The definition of `MonitorUserTemplateTemplateVariables` object." + }, + "title": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The title of the monitor user template." + } + }, + "inner_properties": null, + "description": "Attributes for a monitor user template." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "monitor-user-template" + ], + "properties": null, + "inner_properties": null, + "description": "Monitor user template resource type." + } + }, + "inner_properties": null, + "description": "Monitor user template data." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request for creating a monitor user template.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Monitor user template data.\",\n \"properties\": {\n \"attributes\": {\n \"additionalProperties\": false,\n \"description\": \"Attributes for a monitor user template.\",\n \"properties\": {\n \"description\": {\n \"description\": \"A brief description of the monitor user template.\",\n \"example\": \"This is a template for monitoring user activity.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"monitor_definition\": {\n \"additionalProperties\": {},\n \"description\": \"A valid monitor definition in the same format as the [V1 Monitor API](https://docs.datadoghq.com/api/latest/monitors/#create-a-monitor).\",\n \"example\": {\n \"message\": \"You may need to add web hosts if this is consistently high.\",\n \"name\": \"Bytes received on host0\",\n \"query\": \"avg(last_5m):sum:system.net.bytes_rcvd{host:host0} > 100\",\n \"type\": \"query alert\"\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"The definition of `MonitorUserTemplateTags` object.\",\n \"example\": [\n \"product:Our Custom App\",\n \"integration:Azure\"\n ],\n \"items\": {\n \"description\": \"Tags associated with the monitor user template. Must be key value. Only 'product' and 'integration' keys are\\nallowed. The value is the name of the category to display the template under. Integrations can be filtered out in the UI.\\n(Review note: This modeling of 'categories' is subject to change.)\",\n \"example\": \"us-east1\",\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"template_variables\": {\n \"description\": \"The definition of `MonitorUserTemplateTemplateVariables` object.\",\n \"items\": {\n \"additionalProperties\": false,\n \"description\": \"List of objects representing template variables on the monitor which can have selectable values.\",\n \"properties\": {\n \"available_values\": {\n \"description\": \"Available values for the variable.\",\n \"example\": [\n \"value1\",\n \"value2\"\n ],\n \"items\": {\n \"minLength\": 1,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"defaults\": {\n \"description\": \"Default values of the template variable.\",\n \"example\": [\n \"defaultValue\"\n ],\n \"items\": {\n \"minLength\": 0,\n \"type\": \"string\",\n \"uniqueItems\": true\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"The name of the template variable.\",\n \"example\": \"regionName\",\n \"type\": \"string\"\n },\n \"tag_key\": {\n \"description\": \"The tag key associated with the variable. This works the same as dashboard template variables.\",\n \"example\": \"datacenter\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"title\": {\n \"description\": \"The title of the monitor user template.\",\n \"example\": \"Postgres CPU Monitor\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"monitor_definition\",\n \"tags\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"monitor-user-template\",\n \"description\": \"Monitor user template resource type.\",\n \"enum\": [\n \"monitor-user-template\"\n ],\n \"example\": \"monitor-user-template\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MONITOR_USER_TEMPLATE\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidatePipelineConfig.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidatePipelineConfig.json new file mode 100644 index 00000000..e7455b1a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidatePipelineConfig.json @@ -0,0 +1,262 @@ +{ + "name": "ValidatePipelineConfig", + "fully_qualified_name": "DatadogApi.ValidatePipelineConfig@0.1.0", + "description": "Validate a pipeline configuration without making changes.\n\nUse this tool to check the correctness of a pipeline configuration in Datadog. It helps identify any potential errors without altering existing resources.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "pipeline_config", + "required": true, + "description": "JSON object containing the pipeline's configuration, including its name, type, sources, processors, and destinations.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destinations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of destination components where processed logs are sent." + }, + "processors": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of processors that transform or enrich log data." + }, + "sources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of configured data sources for the pipeline." + } + }, + "inner_properties": null, + "description": "Specifies the pipeline's configuration, including its sources, processors, and destinations." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the pipeline." + } + }, + "inner_properties": null, + "description": "Defines the pipeline\u2019s name and its components (sources, processors, and destinations)." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type identifier. For pipeline resources, this should always be set to `pipelines`." + } + }, + "inner_properties": null, + "description": "Contains the the pipeline configuration." + } + }, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ValidatePipeline'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/remote_config/products/obs_pipelines/pipelines/validate", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "pipeline_config", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "data": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "attributes": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "config": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": { + "destinations": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of destination components where processed logs are sent." + }, + "processors": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of processors that transform or enrich log data." + }, + "sources": { + "val_type": "array", + "inner_val_type": "json", + "enum": null, + "properties": null, + "inner_properties": {}, + "description": "A list of configured data sources for the pipeline." + } + }, + "inner_properties": null, + "description": "Specifies the pipeline's configuration, including its sources, processors, and destinations." + }, + "name": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Name of the pipeline." + } + }, + "inner_properties": null, + "description": "Defines the pipeline\u2019s name and its components (sources, processors, and destinations)." + }, + "type": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The resource type identifier. For pipeline resources, this should always be set to `pipelines`." + } + }, + "inner_properties": null, + "description": "Contains the the pipeline configuration." + } + }, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Input schema representing an observability pipeline configuration. Used in create and validate requests.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Contains the the pipeline configuration.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Defines the pipeline\\u2019s name and its components (sources, processors, and destinations).\",\n \"properties\": {\n \"config\": {\n \"description\": \"Specifies the pipeline's configuration, including its sources, processors, and destinations.\",\n \"properties\": {\n \"destinations\": {\n \"description\": \"A list of destination components where processed logs are sent.\",\n \"example\": [\n {\n \"id\": \"datadog-logs-destination\",\n \"inputs\": [\n \"filter-processor\"\n ],\n \"type\": \"datadog_logs\"\n }\n ],\n \"items\": {\n \"description\": \"A destination for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `datadog_logs` destination forwards logs to Datadog Log Management.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"datadog-logs-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"datadog_logs\",\n \"description\": \"The destination type. The value should always be `datadog_logs`.\",\n \"enum\": [\n \"datadog_logs\"\n ],\n \"example\": \"datadog_logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_LOGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_s3` destination sends your logs in Datadog-rehydratable format to an Amazon S3 bucket for archiving.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"S3 bucket name.\",\n \"example\": \"error-logs\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"amazon-s3-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_prefix\": {\n \"description\": \"Optional prefix for object keys.\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"AWS region of the S3 bucket.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"storage_class\": {\n \"description\": \"S3 storage class.\",\n \"enum\": [\n \"STANDARD\",\n \"REDUCED_REDUNDANCY\",\n \"INTELLIGENT_TIERING\",\n \"STANDARD_IA\",\n \"EXPRESS_ONEZONE\",\n \"ONEZONE_IA\",\n \"GLACIER\",\n \"GLACIER_IR\",\n \"DEEP_ARCHIVE\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"REDUCED_REDUNDANCY\",\n \"INTELLIGENT_TIERING\",\n \"STANDARD_IA\",\n \"EXPRESS_ONEZONE\",\n \"ONEZONE_IA\",\n \"GLACIER\",\n \"GLACIER_IR\",\n \"DEEP_ARCHIVE\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_s3\",\n \"description\": \"The destination type. Always `amazon_s3`.\",\n \"enum\": [\n \"amazon_s3\"\n ],\n \"example\": \"amazon_s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_S3\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"region\",\n \"storage_class\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_cloud_storage` destination stores logs in a Google Cloud Storage (GCS) bucket.\\nIt requires a bucket name, GCP authentication, and metadata fields.\",\n \"properties\": {\n \"acl\": {\n \"description\": \"Access control list setting for objects written to the bucket.\",\n \"enum\": [\n \"private\",\n \"project-private\",\n \"public-read\",\n \"authenticated-read\",\n \"bucket-owner-read\",\n \"bucket-owner-full-control\"\n ],\n \"example\": \"private\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PRIVATE\",\n \"PROJECTNOT_PRIVATE\",\n \"PUBLICNOT_READ\",\n \"AUTHENTICATEDNOT_READ\",\n \"BUCKETNOT_OWNERNOT_READ\",\n \"BUCKETNOT_OWNERNOT_FULLNOT_CONTROL\"\n ]\n },\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"Name of the GCS bucket.\",\n \"example\": \"error-logs\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"gcs-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"key_prefix\": {\n \"description\": \"Optional prefix for object keys within the GCS bucket.\",\n \"type\": \"string\"\n },\n \"metadata\": {\n \"description\": \"Custom metadata to attach to each object uploaded to the GCS bucket.\",\n \"items\": {\n \"description\": \"A custom metadata entry.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The metadata key.\",\n \"example\": \"environment\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The metadata value.\",\n \"example\": \"production\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"storage_class\": {\n \"description\": \"Storage class used for objects stored in GCS.\",\n \"enum\": [\n \"STANDARD\",\n \"NEARLINE\",\n \"COLDLINE\",\n \"ARCHIVE\"\n ],\n \"example\": \"STANDARD\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STANDARD\",\n \"NEARLINE\",\n \"COLDLINE\",\n \"ARCHIVE\"\n ]\n },\n \"type\": {\n \"default\": \"google_cloud_storage\",\n \"description\": \"The destination type. Always `google_cloud_storage`.\",\n \"enum\": [\n \"google_cloud_storage\"\n ],\n \"example\": \"google_cloud_storage\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_CLOUD_STORAGE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"auth\",\n \"storage_class\",\n \"acl\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_hec` destination forwards logs to Splunk using the HTTP Event Collector (HEC).\",\n \"properties\": {\n \"auto_extract_timestamp\": {\n \"description\": \"If `true`, Splunk tries to extract timestamps from incoming log events.\\nIf `false`, Splunk assigns the time the event was received.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-hec-destination\",\n \"type\": \"string\"\n },\n \"index\": {\n \"description\": \"Optional name of the Splunk index where logs are written.\",\n \"example\": \"main\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"sourcetype\": {\n \"description\": \"The Splunk sourcetype to assign to log events.\",\n \"example\": \"custom_sourcetype\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"The destination type. Always `splunk_hec`.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sumo_logic` destination forwards logs to Sumo Logic.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"The output encoding format.\",\n \"enum\": [\n \"json\",\n \"raw_message\",\n \"logfmt\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\",\n \"LOGFMT\"\n ]\n },\n \"header_custom_fields\": {\n \"description\": \"A list of custom headers to include in the request to Sumo Logic.\",\n \"items\": {\n \"description\": \"Single key-value pair used as a custom log header for Sumo Logic.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The header field name.\",\n \"example\": \"X-Sumo-Category\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The header field value.\",\n \"example\": \"my-app-logs\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"header_host_name\": {\n \"description\": \"Optional override for the host name header.\",\n \"example\": \"host-123\",\n \"type\": \"string\"\n },\n \"header_source_category\": {\n \"description\": \"Optional override for the source category header.\",\n \"example\": \"source-category\",\n \"type\": \"string\"\n },\n \"header_source_name\": {\n \"description\": \"Optional override for the source name header.\",\n \"example\": \"source-name\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sumo-logic-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"sumo_logic\",\n \"description\": \"The destination type. The value should always be `sumo_logic`.\",\n \"enum\": [\n \"sumo_logic\"\n ],\n \"example\": \"sumo_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUMO_LOGIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `elasticsearch` destination writes logs to an Elasticsearch cluster.\",\n \"properties\": {\n \"api_version\": {\n \"description\": \"The Elasticsearch API version to use. Set to `auto` to auto-detect.\",\n \"enum\": [\n \"auto\",\n \"v6\",\n \"v7\",\n \"v8\"\n ],\n \"example\": \"auto\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AUTO\",\n \"V6\",\n \"V7\",\n \"V8\"\n ]\n },\n \"bulk_index\": {\n \"description\": \"The index to write logs to in Elasticsearch.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"elasticsearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"elasticsearch\",\n \"description\": \"The destination type. The value should always be `elasticsearch`.\",\n \"enum\": [\n \"elasticsearch\"\n ],\n \"example\": \"elasticsearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ELASTICSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rsyslog` destination forwards logs to an external `rsyslog` server over TCP or UDP using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"rsyslog-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keepalive\": {\n \"description\": \"Optional socket keepalive duration in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rsyslog\",\n \"description\": \"The destination type. The value should always be `rsyslog`.\",\n \"enum\": [\n \"rsyslog\"\n ],\n \"example\": \"rsyslog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RSYSLOG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `syslog_ng` destination forwards logs to an external `syslog-ng` server over TCP or UDP using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"syslog-ng-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keepalive\": {\n \"description\": \"Optional socket keepalive duration in milliseconds.\",\n \"example\": 60000,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"syslog_ng\",\n \"description\": \"The destination type. The value should always be `syslog_ng`.\",\n \"enum\": [\n \"syslog_ng\"\n ],\n \"example\": \"syslog_ng\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SYSLOG_NG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `azure_storage` destination forwards logs to an Azure Blob Storage container.\",\n \"properties\": {\n \"blob_prefix\": {\n \"description\": \"Optional prefix for blobs written to the container.\",\n \"example\": \"logs/\",\n \"type\": \"string\"\n },\n \"container_name\": {\n \"description\": \"The name of the Azure Blob Storage container to store logs in.\",\n \"example\": \"my-log-container\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"azure-storage-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"processor-id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"azure_storage\",\n \"description\": \"The destination type. The value should always be `azure_storage`.\",\n \"enum\": [\n \"azure_storage\"\n ],\n \"example\": \"azure_storage\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AZURE_STORAGE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"container_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `microsoft_sentinel` destination forwards logs to Microsoft Sentinel.\",\n \"properties\": {\n \"client_id\": {\n \"description\": \"Azure AD client ID used for authentication.\",\n \"example\": \"a1b2c3d4-5678-90ab-cdef-1234567890ab\",\n \"type\": \"string\"\n },\n \"dcr_immutable_id\": {\n \"description\": \"The immutable ID of the Data Collection Rule (DCR).\",\n \"example\": \"dcr-uuid-1234\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sentinel-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"table\": {\n \"description\": \"The name of the Log Analytics table where logs are sent.\",\n \"example\": \"CustomLogsTable\",\n \"type\": \"string\"\n },\n \"tenant_id\": {\n \"description\": \"Azure AD tenant ID.\",\n \"example\": \"abcdef12-3456-7890-abcd-ef1234567890\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"microsoft_sentinel\",\n \"description\": \"The destination type. The value should always be `microsoft_sentinel`.\",\n \"enum\": [\n \"microsoft_sentinel\"\n ],\n \"example\": \"microsoft_sentinel\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MICROSOFT_SENTINEL\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"client_id\",\n \"tenant_id\",\n \"dcr_immutable_id\",\n \"table\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_chronicle` destination sends logs to Google Chronicle.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"customer_id\": {\n \"description\": \"The Google Chronicle customer ID.\",\n \"example\": \"abcdefg123456789\",\n \"type\": \"string\"\n },\n \"encoding\": {\n \"description\": \"The encoding format for the logs sent to Chronicle.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"google-chronicle-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"log_type\": {\n \"description\": \"The log type metadata associated with the Chronicle destination.\",\n \"example\": \"nginx_logs\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"google_chronicle\",\n \"description\": \"The destination type. The value should always be `google_chronicle`.\",\n \"enum\": [\n \"google_chronicle\"\n ],\n \"example\": \"google_chronicle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_CHRONICLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"auth\",\n \"customer_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `new_relic` destination sends logs to the New Relic platform.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"new-relic-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"The New Relic region.\",\n \"enum\": [\n \"us\",\n \"eu\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\"\n ]\n },\n \"type\": {\n \"default\": \"new_relic\",\n \"description\": \"The destination type. The value should always be `new_relic`.\",\n \"enum\": [\n \"new_relic\"\n ],\n \"example\": \"new_relic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEW_RELIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sentinel_one` destination sends logs to SentinelOne.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"sentinelone-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"The SentinelOne region to send logs to.\",\n \"enum\": [\n \"us\",\n \"eu\",\n \"ca\",\n \"data_set_us\"\n ],\n \"example\": \"us\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"US\",\n \"EU\",\n \"CA\",\n \"DATA_SET_US\"\n ]\n },\n \"type\": {\n \"default\": \"sentinel_one\",\n \"description\": \"The destination type. The value should always be `sentinel_one`.\",\n \"enum\": [\n \"sentinel_one\"\n ],\n \"example\": \"sentinel_one\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENTINEL_ONE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `opensearch` destination writes logs to an OpenSearch cluster.\",\n \"properties\": {\n \"bulk_index\": {\n \"description\": \"The index to write logs to.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"opensearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"opensearch\",\n \"description\": \"The destination type. The value should always be `opensearch`.\",\n \"enum\": [\n \"opensearch\"\n ],\n \"example\": \"opensearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OPENSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_opensearch` destination writes logs to Amazon OpenSearch.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"Authentication settings for the Amazon OpenSearch destination.\\nThe `strategy` field determines whether basic or AWS-based authentication is used.\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The ARN of the role to assume (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"aws_region\": {\n \"description\": \"AWS region\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"External ID for the assumed role (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"Session name for the assumed role (used with `aws` strategy).\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The authentication strategy to use.\",\n \"enum\": [\n \"basic\",\n \"aws\"\n ],\n \"example\": \"aws\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\",\n \"AWS\"\n ]\n }\n },\n \"required\": [\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n \"bulk_index\": {\n \"description\": \"The index to write logs to.\",\n \"example\": \"logs-index\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"elasticsearch-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"amazon_opensearch\",\n \"description\": \"The destination type. The value should always be `amazon_opensearch`.\",\n \"enum\": [\n \"amazon_opensearch\"\n ],\n \"example\": \"amazon_opensearch\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_OPENSEARCH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"auth\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `socket` destination sends logs over TCP or UDP to a remote server.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"framing\": {\n \"description\": \"Framing method configuration.\",\n \"oneOf\": [\n {\n \"description\": \"Each log event is delimited by a newline character.\",\n \"properties\": {\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingNewlineDelimitedMethod` object.\",\n \"enum\": [\n \"newline_delimited\"\n ],\n \"example\": \"newline_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEWLINE_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Event data is not delimited at all.\",\n \"properties\": {\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingBytesMethod` object.\",\n \"enum\": [\n \"bytes\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Each log event is separated using the specified delimiter character.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"A single ASCII character used as a delimiter.\",\n \"example\": \"|\",\n \"maxLength\": 1,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"The definition of `ObservabilityPipelineSocketDestinationFramingCharacterDelimitedMethod` object.\",\n \"enum\": [\n \"character_delimited\"\n ],\n \"example\": \"character_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHARACTER_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\",\n \"delimiter\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"socket-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"Protocol used to send logs.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"socket\",\n \"description\": \"The destination type. The value should always be `socket`.\",\n \"enum\": [\n \"socket\"\n ],\n \"example\": \"socket\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SOCKET\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\",\n \"framing\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_security_lake` destination sends your logs to Amazon Security Lake.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"bucket\": {\n \"description\": \"Name of the Amazon S3 bucket in Security Lake (3-63 characters).\",\n \"example\": \"security-lake-bucket\",\n \"type\": \"string\"\n },\n \"custom_source_name\": {\n \"description\": \"Custom source name for the logs in Security Lake.\",\n \"example\": \"my-custom-source\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique identifier for the destination component.\",\n \"example\": \"amazon-security-lake-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"region\": {\n \"description\": \"AWS region of the S3 bucket.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_security_lake\",\n \"description\": \"The destination type. Always `amazon_security_lake`.\",\n \"enum\": [\n \"amazon_security_lake\"\n ],\n \"example\": \"amazon_security_lake\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_SECURITY_LAKE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"bucket\",\n \"region\",\n \"custom_source_name\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `crowdstrike_next_gen_siem` destination forwards logs to CrowdStrike Next Gen SIEM.\",\n \"properties\": {\n \"compression\": {\n \"description\": \"Compression configuration for log events.\",\n \"properties\": {\n \"algorithm\": {\n \"description\": \"Compression algorithm for log events.\",\n \"enum\": [\n \"gzip\",\n \"zlib\"\n ],\n \"example\": \"gzip\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GZIP\",\n \"ZLIB\"\n ]\n },\n \"level\": {\n \"description\": \"Compression level.\",\n \"example\": 6,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"algorithm\"\n ],\n \"type\": \"object\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"crowdstrike-ngsiem-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"crowdstrike_next_gen_siem\",\n \"description\": \"The destination type. The value should always be `crowdstrike_next_gen_siem`.\",\n \"enum\": [\n \"crowdstrike_next_gen_siem\"\n ],\n \"example\": \"crowdstrike_next_gen_siem\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CROWDSTRIKE_NEXT_GEN_SIEM\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_pubsub` destination publishes logs to a Google Cloud Pub/Sub topic.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"encoding\": {\n \"description\": \"Encoding format for log events.\",\n \"enum\": [\n \"json\",\n \"raw_message\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"JSON\",\n \"RAW_MESSAGE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component.\",\n \"example\": \"google-pubsub-destination\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"project\": {\n \"description\": \"The GCP project ID that owns the Pub/Sub topic.\",\n \"example\": \"my-gcp-project\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"topic\": {\n \"description\": \"The Pub/Sub topic name to publish logs to.\",\n \"example\": \"logs-subscription\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"google_pubsub\",\n \"description\": \"The destination type. The value should always be `google_pubsub`.\",\n \"enum\": [\n \"google_pubsub\"\n ],\n \"example\": \"google_pubsub\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_PUBSUB\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"encoding\",\n \"project\",\n \"topic\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"processors\": {\n \"description\": \"A list of processors that transform or enrich log data.\",\n \"example\": [\n {\n \"id\": \"filter-processor\",\n \"include\": \"service:my-service\",\n \"inputs\": [\n \"datadog-agent-source\"\n ],\n \"type\": \"filter\"\n }\n ],\n \"items\": {\n \"description\": \"A processor for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `filter` processor allows conditional processing of logs based on a Datadog search query. Logs that match the `include` query are passed through; others are discarded.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"filter-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs should pass through the filter. Logs that match this query continue to downstream components; others are dropped.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"filter\",\n \"description\": \"The processor type. The value should always be `filter`.\",\n \"enum\": [\n \"filter\"\n ],\n \"example\": \"filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FILTER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `parse_json` processor extracts JSON from a specified field and flattens it into the event. This is useful when logs contain embedded JSON as a string.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The name of the log field that contains a JSON string.\",\n \"example\": \"message\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"parse-json-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"parse_json\",\n \"description\": \"The processor type. The value should always be `parse_json`.\",\n \"enum\": [\n \"parse_json\"\n ],\n \"example\": \"parse_json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARSE_JSON\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"field\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The Quota Processor measures logging traffic for logs that match a specified filter. When the configured daily quota is met, the processor can drop or alert.\",\n \"properties\": {\n \"drop_events\": {\n \"description\": \"If set to `true`, logs that matched the quota filter and sent after the quota has been met are dropped; only logs that did not match the filter query continue through the pipeline.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"quota-processor\",\n \"type\": \"string\"\n },\n \"ignore_when_missing_partitions\": {\n \"description\": \"If `true`, the processor skips quota checks when partition fields are missing from the logs.\",\n \"type\": \"boolean\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"description\": \"The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events.\",\n \"properties\": {\n \"enforce\": {\n \"description\": \"Unit for quota enforcement in bytes for data size or events for count.\",\n \"enum\": [\n \"bytes\",\n \"events\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\",\n \"EVENTS\"\n ]\n },\n \"limit\": {\n \"description\": \"The limit for quota enforcement.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"enforce\",\n \"limit\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the quota.\",\n \"example\": \"MyQuota\",\n \"type\": \"string\"\n },\n \"overflow_action\": {\n \"description\": \"The action to take when the quota is exceeded. Options:\\n- `drop`: Drop the event.\\n- `no_action`: Let the event pass through.\\n- `overflow_routing`: Route to an overflow destination.\",\n \"enum\": [\n \"drop\",\n \"no_action\",\n \"overflow_routing\"\n ],\n \"example\": \"drop\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DROP\",\n \"NO_ACTION\",\n \"OVERFLOW_ROUTING\"\n ]\n },\n \"overrides\": {\n \"description\": \"A list of alternate quota rules that apply to specific sets of events, identified by matching field values. Each override can define a custom limit.\",\n \"items\": {\n \"description\": \"Defines a custom quota limit that applies to specific log events based on matching field values.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of field matchers used to apply a specific override. If an event matches all listed key-value pairs, the corresponding override limit is enforced.\",\n \"items\": {\n \"description\": \"Represents a static key-value pair used in various processors.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"field_name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The field value.\",\n \"example\": \"field_value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"limit\": {\n \"description\": \"The maximum amount of data or number of events allowed before the quota is enforced. Can be specified in bytes or events.\",\n \"properties\": {\n \"enforce\": {\n \"description\": \"Unit for quota enforcement in bytes for data size or events for count.\",\n \"enum\": [\n \"bytes\",\n \"events\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\",\n \"EVENTS\"\n ]\n },\n \"limit\": {\n \"description\": \"The limit for quota enforcement.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"enforce\",\n \"limit\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"fields\",\n \"limit\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"partition_fields\": {\n \"description\": \"A list of fields used to segment log traffic for quota enforcement. Quotas are tracked independently by unique combinations of these field values.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"quota\",\n \"description\": \"The processor type. The value should always be `quota`.\",\n \"enum\": [\n \"quota\"\n ],\n \"example\": \"quota\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"QUOTA\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"name\",\n \"drop_events\",\n \"limit\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `add_fields` processor adds static key-value fields to logs.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of static fields (key-value pairs) that is added to each log event processed by this component.\",\n \"items\": {\n \"description\": \"Represents a static key-value pair used in various processors.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The field name.\",\n \"example\": \"field_name\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The field value.\",\n \"example\": \"field_value\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"add-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"add_fields\",\n \"description\": \"The processor type. The value should always be `add_fields`.\",\n \"enum\": [\n \"add_fields\"\n ],\n \"example\": \"add_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADD_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `remove_fields` processor deletes specified fields from logs.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of field names to be removed from each log event.\",\n \"example\": [\n \"field1\",\n \"field2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"remove-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"The `PipelineRemoveFieldsProcessor` `inputs`.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"remove_fields\",\n \"description\": \"The processor type. The value should always be `remove_fields`.\",\n \"enum\": [\n \"remove_fields\"\n ],\n \"example\": \"remove_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REMOVE_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rename_fields` processor changes field names.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of rename rules specifying which fields to rename in the event, what to rename them to, and whether to preserve the original fields.\",\n \"items\": {\n \"description\": \"Defines how to rename a field in log events.\",\n \"properties\": {\n \"destination\": {\n \"description\": \"The field name to assign the renamed value to.\",\n \"example\": \"destination_field\",\n \"type\": \"string\"\n },\n \"preserve_source\": {\n \"description\": \"Indicates whether the original field, that is received from the source, should be kept (`true`) or removed (`false`) after renaming.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"source\": {\n \"description\": \"The original field name in the log event that should be renamed.\",\n \"example\": \"source_field\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"source\",\n \"destination\",\n \"preserve_source\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"rename-fields-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"rename_fields\",\n \"description\": \"The processor type. The value should always be `rename_fields`.\",\n \"enum\": [\n \"rename_fields\"\n ],\n \"example\": \"rename_fields\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RENAME_FIELDS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"fields\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `generate_datadog_metrics` processor creates custom metrics from logs and sends them to Datadog.\\nMetrics can be counters, gauges, or distributions and optionally grouped by log fields.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline.\",\n \"example\": \"generate-metrics-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this processor.\",\n \"example\": [\n \"source-id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metrics\": {\n \"description\": \"Configuration for generating individual metrics.\",\n \"items\": {\n \"description\": \"Defines a log-based custom metric, including its name, type, filter, value computation strategy,\\nand optional grouping fields.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"Optional fields used to group the metric series.\",\n \"example\": [\n \"service\",\n \"env\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"include\": {\n \"description\": \"Datadog filter query to match logs for metric generation.\",\n \"example\": \"service:billing\",\n \"type\": \"string\"\n },\n \"metric_type\": {\n \"description\": \"Type of metric to create.\",\n \"enum\": [\n \"count\",\n \"gauge\",\n \"distribution\"\n ],\n \"example\": \"count\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"GAUGE\",\n \"DISTRIBUTION\"\n ]\n },\n \"name\": {\n \"description\": \"Name of the custom metric to be created.\",\n \"example\": \"logs.processed\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Specifies how the value of the generated metric is computed.\",\n \"oneOf\": [\n {\n \"description\": \"Strategy that increments a generated metric by one for each matching event.\",\n \"properties\": {\n \"strategy\": {\n \"description\": \"Increments the metric by 1 for each matching event.\",\n \"enum\": [\n \"increment_by_one\"\n ],\n \"example\": \"increment_by_one\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCREMENT_BY_ONE\"\n ]\n }\n },\n \"required\": [\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Strategy that increments a generated metric based on the value of a log field.\",\n \"properties\": {\n \"field\": {\n \"description\": \"Name of the log field containing the numeric value to increment the metric by.\",\n \"example\": \"errors\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"Uses a numeric field in the log event as the metric increment.\",\n \"enum\": [\n \"increment_by_field\"\n ],\n \"example\": \"increment_by_field\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCREMENT_BY_FIELD\"\n ]\n }\n },\n \"required\": [\n \"strategy\",\n \"field\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"name\",\n \"include\",\n \"metric_type\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"generate_datadog_metrics\",\n \"description\": \"The processor type. Always `generate_datadog_metrics`.\",\n \"enum\": [\n \"generate_datadog_metrics\"\n ],\n \"example\": \"generate_datadog_metrics\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GENERATE_DATADOG_METRICS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"inputs\",\n \"include\",\n \"metrics\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sample` processor allows probabilistic sampling of logs at a fixed rate.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"sample-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"percentage\": {\n \"description\": \"The percentage of logs to sample.\",\n \"example\": 10.0,\n \"format\": \"double\",\n \"type\": \"number\"\n },\n \"rate\": {\n \"description\": \"Number of events to sample (1 in N).\",\n \"example\": 10,\n \"format\": \"int64\",\n \"minimum\": 1,\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"sample\",\n \"description\": \"The processor type. The value should always be `sample`.\",\n \"enum\": [\n \"sample\"\n ],\n \"example\": \"sample\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SAMPLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `parse_grok` processor extracts structured fields from unstructured log messages using Grok patterns.\",\n \"properties\": {\n \"disable_library_rules\": {\n \"default\": false,\n \"description\": \"If set to `true`, disables the default Grok rules provided by Datadog.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"id\": {\n \"description\": \"A unique identifier for this processor.\",\n \"example\": \"parse-grok-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rules\": {\n \"description\": \"The list of Grok parsing rules. If multiple matching rules are provided, they are evaluated in order. The first successful match is applied.\",\n \"items\": {\n \"description\": \"A Grok parsing rule used in the `parse_grok` processor. Each rule defines how to extract structured fields\\nfrom a specific log field using Grok patterns.\",\n \"properties\": {\n \"match_rules\": {\n \"description\": \"A list of Grok parsing rules that define how to extract fields from the source field.\\nEach rule must contain a name and a valid Grok pattern.\",\n \"example\": [\n {\n \"name\": \"MyParsingRule\",\n \"rule\": \"%{word:user} connected on %{date(\\\"MM/dd/yyyy\\\"):date}\"\n }\n ],\n \"items\": {\n \"description\": \"Defines a Grok parsing rule, which extracts structured fields from log content using named Grok patterns.\\nEach rule must have a unique name and a valid Datadog Grok pattern that will be applied to the source field.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"MyParsingRule\",\n \"type\": \"string\"\n },\n \"rule\": {\n \"description\": \"The definition of the Grok rule.\",\n \"example\": \"%{word:user} connected on %{date(\\\"MM/dd/yyyy\\\"):date}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"source\": {\n \"description\": \"The name of the field in the log event to apply the Grok rules to.\",\n \"example\": \"message\",\n \"type\": \"string\"\n },\n \"support_rules\": {\n \"description\": \"A list of Grok helper rules that can be referenced by the parsing rules.\",\n \"example\": [\n {\n \"name\": \"user\",\n \"rule\": \"%{word:user.name}\"\n }\n ],\n \"items\": {\n \"description\": \"The Grok helper rule referenced in the parsing rules.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the Grok helper rule.\",\n \"example\": \"user\",\n \"type\": \"string\"\n },\n \"rule\": {\n \"description\": \"The definition of the Grok helper rule.\",\n \"example\": \" %{word:user.name}\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"source\",\n \"match_rules\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"parse_grok\",\n \"description\": \"The processor type. The value should always be `parse_grok`.\",\n \"enum\": [\n \"parse_grok\"\n ],\n \"example\": \"parse_grok\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARSE_GROK\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sensitive_data_scanner` processor detects and optionally redacts sensitive data in log events.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"sensitive-scanner\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"source:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"rules\": {\n \"description\": \"A list of rules for identifying and acting on sensitive data patterns.\",\n \"items\": {\n \"description\": \"Defines a rule for detecting sensitive data, including matching pattern, scope, and the action to take.\",\n \"properties\": {\n \"keyword_options\": {\n \"description\": \"Configuration for keywords used to reinforce sensitive data pattern detection.\",\n \"properties\": {\n \"keywords\": {\n \"description\": \"A list of keywords to match near the sensitive pattern.\",\n \"example\": [\n \"ssn\",\n \"card\",\n \"account\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"proximity\": {\n \"description\": \"Maximum number of tokens between a keyword and a sensitive value match.\",\n \"example\": 5,\n \"format\": \"int64\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"keywords\",\n \"proximity\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"A name identifying the rule.\",\n \"example\": \"Redact Credit Card Numbers\",\n \"type\": \"string\"\n },\n \"on_match\": {\n \"description\": \"Defines what action to take when sensitive data is matched.\",\n \"oneOf\": [\n {\n \"description\": \"Configuration for completely redacting matched sensitive data.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that completely replaces the matched sensitive data with a fixed replacement string to remove all visibility.\",\n \"enum\": [\n \"redact\"\n ],\n \"example\": \"redact\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDACT\"\n ]\n },\n \"options\": {\n \"description\": \"Configuration for fully redacting sensitive data.\",\n \"properties\": {\n \"replace\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionRedactOptions` `replace`.\",\n \"example\": \"***\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"replace\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Configuration for hashing matched sensitive values.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that replaces the matched sensitive data with a hashed representation, preserving structure while securing content.\",\n \"enum\": [\n \"hash\"\n ],\n \"example\": \"hash\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HASH\"\n ]\n },\n \"options\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionHash` `options`.\",\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Configuration for partially redacting matched sensitive data.\",\n \"properties\": {\n \"action\": {\n \"description\": \"Action type that redacts part of the sensitive data while preserving a configurable number of characters, typically used for masking purposes (e.g., show last 4 digits of a credit card).\",\n \"enum\": [\n \"partial_redact\"\n ],\n \"example\": \"partial_redact\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PARTIAL_REDACT\"\n ]\n },\n \"options\": {\n \"description\": \"Controls how partial redaction is applied, including character count and direction.\",\n \"properties\": {\n \"characters\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorActionPartialRedactOptions` `characters`.\",\n \"example\": 4,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"direction\": {\n \"description\": \"Indicates whether to redact characters from the first or last part of the matched value.\",\n \"enum\": [\n \"first\",\n \"last\"\n ],\n \"example\": \"last\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FIRST\",\n \"LAST\"\n ]\n }\n },\n \"required\": [\n \"characters\",\n \"direction\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"action\",\n \"options\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"pattern\": {\n \"description\": \"Pattern detection configuration for identifying sensitive data using either a custom regex or a library reference.\",\n \"oneOf\": [\n {\n \"description\": \"Defines a custom regex-based pattern for identifying sensitive data in logs.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Options for defining a custom regex pattern.\",\n \"properties\": {\n \"rule\": {\n \"description\": \"A regular expression used to detect sensitive values. Must be a valid regex.\",\n \"example\": \"\\\\b\\\\d{16}\\\\b\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"rule\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Indicates a custom regular expression is used for matching.\",\n \"enum\": [\n \"custom\"\n ],\n \"example\": \"custom\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Specifies a pattern from Datadog\\u2019s sensitive data detection library to match known sensitive data types.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Options for selecting a predefined library pattern and enabling keyword support.\",\n \"properties\": {\n \"id\": {\n \"description\": \"Identifier for a predefined pattern from the sensitive data scanner pattern library.\",\n \"example\": \"credit_card\",\n \"type\": \"string\"\n },\n \"use_recommended_keywords\": {\n \"description\": \"Whether to augment the pattern with recommended keywords (optional).\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"Indicates that a predefined library pattern is used.\",\n \"enum\": [\n \"library\"\n ],\n \"example\": \"library\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LIBRARY\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"options\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"scope\": {\n \"description\": \"Determines which parts of the log the pattern-matching rule should be applied to.\",\n \"oneOf\": [\n {\n \"description\": \"Includes only specific fields for sensitive data scanning.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Fields to which the scope rule applies.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` `fields`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\"\n ],\n \"type\": \"object\"\n },\n \"target\": {\n \"description\": \"Applies the rule only to included fields.\",\n \"enum\": [\n \"include\"\n ],\n \"example\": \"include\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCLUDE\"\n ]\n }\n },\n \"required\": [\n \"target\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Excludes specific fields from sensitive data scanning.\",\n \"properties\": {\n \"options\": {\n \"description\": \"Fields to which the scope rule applies.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"The `ObservabilityPipelineSensitiveDataScannerProcessorScopeOptions` `fields`.\",\n \"example\": [\n \"\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"fields\"\n ],\n \"type\": \"object\"\n },\n \"target\": {\n \"description\": \"Excludes specific fields from processing.\",\n \"enum\": [\n \"exclude\"\n ],\n \"example\": \"exclude\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EXCLUDE\"\n ]\n }\n },\n \"required\": [\n \"target\",\n \"options\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Applies scanning across all available fields.\",\n \"properties\": {\n \"target\": {\n \"description\": \"Applies the rule to all fields.\",\n \"enum\": [\n \"all\"\n ],\n \"example\": \"all\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ALL\"\n ]\n }\n },\n \"required\": [\n \"target\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"tags\": {\n \"description\": \"Tags assigned to this rule for filtering and classification.\",\n \"example\": [\n \"pii\",\n \"ccn\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"name\",\n \"tags\",\n \"pattern\",\n \"scope\",\n \"on_match\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"sensitive_data_scanner\",\n \"description\": \"The processor type. The value should always be `sensitive_data_scanner`.\",\n \"enum\": [\n \"sensitive_data_scanner\"\n ],\n \"example\": \"sensitive_data_scanner\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SENSITIVE_DATA_SCANNER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"rules\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `ocsf_mapper` processor transforms logs into the OCSF schema using a predefined mapping configuration.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline.\",\n \"example\": \"ocsf-mapper-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this processor.\",\n \"example\": [\n \"filter-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mappings\": {\n \"description\": \"A list of mapping rules to convert events to the OCSF format.\",\n \"items\": {\n \"description\": \"Defines how specific events are transformed to OCSF using a mapping configuration.\",\n \"properties\": {\n \"include\": {\n \"description\": \"A Datadog search query used to select the logs that this mapping should apply to.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"mapping\": {\n \"description\": \"Defines a single mapping rule for transforming logs into the OCSF schema.\",\n \"oneOf\": [\n {\n \"description\": \"Predefined library mappings for common log formats.\",\n \"enum\": [\n \"CloudTrail Account Change\",\n \"GCP Cloud Audit CreateBucket\",\n \"GCP Cloud Audit CreateSink\",\n \"GCP Cloud Audit SetIamPolicy\",\n \"GCP Cloud Audit UpdateSink\",\n \"Github Audit Log API Activity\",\n \"Google Workspace Admin Audit addPrivilege\",\n \"Microsoft 365 Defender Incident\",\n \"Microsoft 365 Defender UserLoggedIn\",\n \"Okta System Log Authentication\",\n \"Palo Alto Networks Firewall Traffic\"\n ],\n \"example\": \"CloudTrail Account Change\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUDTRAIL_ACCOUNT_CHANGE\",\n \"GCP_CLOUD_AUDIT_CREATEBUCKET\",\n \"GCP_CLOUD_AUDIT_CREATESINK\",\n \"GCP_CLOUD_AUDIT_SETIAMPOLICY\",\n \"GCP_CLOUD_AUDIT_UPDATESINK\",\n \"GITHUB_AUDIT_LOG_API_ACTIVITY\",\n \"GOOGLE_WORKSPACE_ADMIN_AUDIT_ADDPRIVILEGE\",\n \"MICROSOFT_365_DEFENDER_INCIDENT\",\n \"MICROSOFT_365_DEFENDER_USERLOGGEDIN\",\n \"OKTA_SYSTEM_LOG_AUTHENTICATION\",\n \"PALO_ALTO_NETWORKS_FIREWALL_TRAFFIC\"\n ]\n }\n ]\n }\n },\n \"required\": [\n \"include\",\n \"mapping\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"ocsf_mapper\",\n \"description\": \"The processor type. The value should always be `ocsf_mapper`.\",\n \"enum\": [\n \"ocsf_mapper\"\n ],\n \"example\": \"ocsf_mapper\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OCSF_MAPPER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"mappings\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `add_env_vars` processor adds environment variable values to log events.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this processor in the pipeline.\",\n \"example\": \"add-env-vars-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"add_env_vars\",\n \"description\": \"The processor type. The value should always be `add_env_vars`.\",\n \"enum\": [\n \"add_env_vars\"\n ],\n \"example\": \"add_env_vars\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ADD_ENV_VARS\"\n ]\n },\n \"variables\": {\n \"description\": \"A list of environment variable mappings to apply to log fields.\",\n \"items\": {\n \"description\": \"Defines a mapping between an environment variable and a log field.\",\n \"properties\": {\n \"field\": {\n \"description\": \"The target field in the log event.\",\n \"example\": \"log.environment.region\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the environment variable to read.\",\n \"example\": \"AWS_REGION\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"field\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"variables\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `dedupe` processor removes duplicate fields in log events.\",\n \"properties\": {\n \"fields\": {\n \"description\": \"A list of log field paths to check for duplicates.\",\n \"example\": [\n \"log.message\",\n \"log.error\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"dedupe-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"The deduplication mode to apply to the fields.\",\n \"enum\": [\n \"match\",\n \"ignore\"\n ],\n \"example\": \"match\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"MATCH\",\n \"IGNORE\"\n ]\n },\n \"type\": {\n \"default\": \"dedupe\",\n \"description\": \"The processor type. The value should always be `dedupe`.\",\n \"enum\": [\n \"dedupe\"\n ],\n \"example\": \"dedupe\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DEDUPE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"fields\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `enrichment_table` processor enriches logs using a static CSV file or GeoIP database.\",\n \"properties\": {\n \"file\": {\n \"description\": \"Defines a static enrichment table loaded from a CSV file.\",\n \"properties\": {\n \"encoding\": {\n \"description\": \"File encoding format.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"The `encoding` `delimiter`.\",\n \"example\": \",\",\n \"type\": \"string\"\n },\n \"includes_headers\": {\n \"description\": \"The `encoding` `includes_headers`.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"type\": {\n \"description\": \"Specifies the encoding format (e.g., CSV) used for enrichment tables.\",\n \"enum\": [\n \"csv\"\n ],\n \"example\": \"csv\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CSV\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"delimiter\",\n \"includes_headers\"\n ],\n \"type\": \"object\"\n },\n \"key\": {\n \"description\": \"Key fields used to look up enrichment values.\",\n \"items\": {\n \"description\": \"Defines how to map log fields to enrichment table columns during lookups.\",\n \"properties\": {\n \"column\": {\n \"description\": \"The `items` `column`.\",\n \"example\": \"user_id\",\n \"type\": \"string\"\n },\n \"comparison\": {\n \"description\": \"Defines how to compare key fields for enrichment table lookups.\",\n \"enum\": [\n \"equals\"\n ],\n \"example\": \"equals\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"EQUALS\"\n ]\n },\n \"field\": {\n \"description\": \"The `items` `field`.\",\n \"example\": \"log.user.id\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"column\",\n \"comparison\",\n \"field\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"path\": {\n \"description\": \"Path to the CSV file.\",\n \"example\": \"/etc/enrichment/lookup.csv\",\n \"type\": \"string\"\n },\n \"schema\": {\n \"description\": \"Schema defining column names and their types.\",\n \"items\": {\n \"description\": \"Describes a single column and its type in an enrichment table schema.\",\n \"properties\": {\n \"column\": {\n \"description\": \"The `items` `column`.\",\n \"example\": \"region\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Declares allowed data types for enrichment table columns.\",\n \"enum\": [\n \"string\",\n \"boolean\",\n \"integer\",\n \"float\",\n \"date\",\n \"timestamp\"\n ],\n \"example\": \"string\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"STRING\",\n \"BOOLEAN\",\n \"INTEGER\",\n \"FLOAT\",\n \"DATE\",\n \"TIMESTAMP\"\n ]\n }\n },\n \"required\": [\n \"column\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"encoding\",\n \"key\",\n \"path\",\n \"schema\"\n ],\n \"type\": \"object\"\n },\n \"geoip\": {\n \"description\": \"Uses a GeoIP database to enrich logs based on an IP field.\",\n \"properties\": {\n \"key_field\": {\n \"description\": \"Path to the IP field in the log.\",\n \"example\": \"log.source.ip\",\n \"type\": \"string\"\n },\n \"locale\": {\n \"description\": \"Locale used to resolve geographical names.\",\n \"example\": \"en\",\n \"type\": \"string\"\n },\n \"path\": {\n \"description\": \"Path to the GeoIP database file.\",\n \"example\": \"/etc/geoip/GeoLite2-City.mmdb\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"key_field\",\n \"locale\",\n \"path\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"enrichment-table-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"source:my-source\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"add-fields-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"target\": {\n \"description\": \"Path where enrichment results should be stored in the log.\",\n \"example\": \"enriched.geoip\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"enrichment_table\",\n \"description\": \"The processor type. The value should always be `enrichment_table`.\",\n \"enum\": [\n \"enrichment_table\"\n ],\n \"example\": \"enrichment_table\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"ENRICHMENT_TABLE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"target\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `reduce` processor aggregates and merges logs based on matching keys and merge strategies.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"A list of fields used to group log events for merging.\",\n \"example\": [\n \"log.user.id\",\n \"log.device.id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"reduce-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"parse-json-processor\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"merge_strategies\": {\n \"description\": \"List of merge strategies defining how values from grouped events should be combined.\",\n \"items\": {\n \"description\": \"Defines how a specific field should be merged across grouped events.\",\n \"properties\": {\n \"path\": {\n \"description\": \"The field path in the log event.\",\n \"example\": \"log.user.roles\",\n \"type\": \"string\"\n },\n \"strategy\": {\n \"description\": \"The merge strategy to apply.\",\n \"enum\": [\n \"discard\",\n \"retain\",\n \"sum\",\n \"max\",\n \"min\",\n \"array\",\n \"concat\",\n \"concat_newline\",\n \"concat_raw\",\n \"shortest_array\",\n \"longest_array\",\n \"flat_unique\"\n ],\n \"example\": \"flat_unique\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DISCARD\",\n \"RETAIN\",\n \"SUM\",\n \"MAX\",\n \"MIN\",\n \"ARRAY\",\n \"CONCAT\",\n \"CONCAT_NEWLINE\",\n \"CONCAT_RAW\",\n \"SHORTEST_ARRAY\",\n \"LONGEST_ARRAY\",\n \"FLAT_UNIQUE\"\n ]\n }\n },\n \"required\": [\n \"path\",\n \"strategy\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"reduce\",\n \"description\": \"The processor type. The value should always be `reduce`.\",\n \"enum\": [\n \"reduce\"\n ],\n \"example\": \"reduce\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REDUCE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"group_by\",\n \"merge_strategies\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `throttle` processor limits the number of events that pass through over a given time window.\",\n \"properties\": {\n \"group_by\": {\n \"description\": \"Optional list of fields used to group events before the threshold has been reached.\",\n \"example\": [\n \"log.user.id\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"throttle-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"env:prod\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"threshold\": {\n \"description\": \"the number of events allowed in a given time window. Events sent after the threshold has been reached, are dropped.\",\n \"example\": 1000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"type\": {\n \"default\": \"throttle\",\n \"description\": \"The processor type. The value should always be `throttle`.\",\n \"enum\": [\n \"throttle\"\n ],\n \"example\": \"throttle\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THROTTLE\"\n ]\n },\n \"window\": {\n \"description\": \"The time window in seconds over which the threshold applies.\",\n \"example\": 60.0,\n \"format\": \"double\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"inputs\",\n \"threshold\",\n \"window\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `custom_processor` processor transforms events using [Vector Remap Language (VRL)](https://vector.dev/docs/reference/vrl/) scripts with advanced filtering capabilities.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this processor.\",\n \"example\": \"remap-vrl-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"default\": \"*\",\n \"description\": \"A Datadog search query used to determine which logs this processor targets. This field should always be set to `*` for the custom_processor processor.\",\n \"example\": \"*\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the input for this processor.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"remaps\": {\n \"description\": \"Array of VRL remap rules.\",\n \"items\": {\n \"description\": \"Defines a single VRL remap rule with its own filtering and transformation logic.\",\n \"properties\": {\n \"drop_on_error\": {\n \"description\": \"Whether to drop events that caused errors during processing.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"enabled\": {\n \"description\": \"Whether this remap rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to filter events for this specific remap rule.\",\n \"example\": \"service:web\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"A descriptive name for this remap rule.\",\n \"example\": \"Parse JSON from message field\",\n \"type\": \"string\"\n },\n \"source\": {\n \"description\": \"The VRL script source code that defines the processing logic.\",\n \"example\": \". = parse_json!(.message)\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"include\",\n \"name\",\n \"source\",\n \"enabled\",\n \"drop_on_error\"\n ],\n \"type\": \"object\"\n },\n \"minItems\": 1,\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"custom_processor\",\n \"description\": \"The processor type. The value should always be `custom_processor`.\",\n \"enum\": [\n \"custom_processor\"\n ],\n \"example\": \"custom_processor\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CUSTOM_PROCESSOR\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"remaps\",\n \"inputs\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `datadog_tags` processor includes or excludes specific Datadog tags in your logs.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The action to take on tags with matching keys.\",\n \"enum\": [\n \"include\",\n \"exclude\"\n ],\n \"example\": \"include\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INCLUDE\",\n \"EXCLUDE\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"datadog-tags-processor\",\n \"type\": \"string\"\n },\n \"include\": {\n \"description\": \"A Datadog search query used to determine which logs this processor targets.\",\n \"example\": \"service:my-service\",\n \"type\": \"string\"\n },\n \"inputs\": {\n \"description\": \"A list of component IDs whose output is used as the `input` for this component.\",\n \"example\": [\n \"datadog-agent-source\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"keys\": {\n \"description\": \"A list of tag keys.\",\n \"example\": [\n \"env\",\n \"service\",\n \"version\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"mode\": {\n \"description\": \"The processing mode.\",\n \"enum\": [\n \"filter\"\n ],\n \"example\": \"filter\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FILTER\"\n ]\n },\n \"type\": {\n \"default\": \"datadog_tags\",\n \"description\": \"The processor type. The value should always be `datadog_tags`.\",\n \"enum\": [\n \"datadog_tags\"\n ],\n \"example\": \"datadog_tags\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_TAGS\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"include\",\n \"mode\",\n \"action\",\n \"keys\",\n \"inputs\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n },\n \"sources\": {\n \"description\": \"A list of configured data sources for the pipeline.\",\n \"example\": [\n {\n \"id\": \"datadog-agent-source\",\n \"type\": \"datadog_agent\"\n }\n ],\n \"items\": {\n \"description\": \"A data source for the pipeline.\",\n \"oneOf\": [\n {\n \"description\": \"The `kafka` source ingests data from Apache Kafka topics.\",\n \"properties\": {\n \"group_id\": {\n \"description\": \"Consumer group ID used by the Kafka client.\",\n \"example\": \"consumer-group-0\",\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"kafka-source\",\n \"type\": \"string\"\n },\n \"librdkafka_options\": {\n \"description\": \"Optional list of advanced Kafka client configuration options, defined as key-value pairs.\",\n \"items\": {\n \"description\": \"Represents a key-value pair used to configure low-level `librdkafka` client options for Kafka sources, such as timeouts, buffer sizes, and security settings.\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the `librdkafka` configuration option to set.\",\n \"example\": \"fetch.message.max.bytes\",\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"The value assigned to the specified `librdkafka` configuration option.\",\n \"example\": \"1048576\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"value\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sasl\": {\n \"description\": \"Specifies the SASL mechanism for authenticating with a Kafka cluster.\",\n \"properties\": {\n \"mechanism\": {\n \"description\": \"SASL mechanism used for Kafka authentication.\",\n \"enum\": [\n \"PLAIN\",\n \"SCRAM-SHA-256\",\n \"SCRAM-SHA-512\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"PLAIN\",\n \"SCRAMNOT_SHANOT_256\",\n \"SCRAMNOT_SHANOT_512\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"topics\": {\n \"description\": \"A list of Kafka topic names to subscribe to. The source ingests messages from each topic specified.\",\n \"example\": [\n \"topic1\",\n \"topic2\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"default\": \"kafka\",\n \"description\": \"The source type. The value should always be `kafka`.\",\n \"enum\": [\n \"kafka\"\n ],\n \"example\": \"kafka\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"KAFKA\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"group_id\",\n \"topics\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `datadog_agent` source collects logs from the Datadog Agent.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"datadog-agent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"datadog_agent\",\n \"description\": \"The source type. The value should always be `datadog_agent`.\",\n \"enum\": [\n \"datadog_agent\"\n ],\n \"example\": \"datadog_agent\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DATADOG_AGENT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_tcp` source receives logs from a Splunk Universal Forwarder over TCP.\\nTLS is supported for secure transmission.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-tcp-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"splunk_tcp\",\n \"description\": \"The source type. Always `splunk_tcp`.\",\n \"enum\": [\n \"splunk_tcp\"\n ],\n \"example\": \"splunk_tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_TCP\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `splunk_hec` source implements the Splunk HTTP Event Collector (HEC) API.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"splunk-hec-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"splunk_hec\",\n \"description\": \"The source type. Always `splunk_hec`.\",\n \"enum\": [\n \"splunk_hec\"\n ],\n \"example\": \"splunk_hec\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SPLUNK_HEC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_s3` source ingests logs from an Amazon S3 bucket.\\nIt supports AWS authentication and TLS encryption.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"aws-s3-source\",\n \"type\": \"string\"\n },\n \"region\": {\n \"description\": \"AWS region where the S3 bucket resides.\",\n \"example\": \"us-east-1\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_s3\",\n \"description\": \"The source type. Always `amazon_s3`.\",\n \"enum\": [\n \"amazon_s3\"\n ],\n \"example\": \"amazon_s3\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_S3\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"region\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `fluentd` source ingests logs from a Fluentd-compatible service.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"fluent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fluentd\",\n \"description\": \"The source type. The value should always be `fluentd.\",\n \"enum\": [\n \"fluentd\"\n ],\n \"example\": \"fluentd\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FLUENTD\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `fluent_bit` source ingests logs from Fluent Bit.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (for example, as the `input` to downstream components).\",\n \"example\": \"fluent-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"fluent_bit\",\n \"description\": \"The source type. The value should always be `fluent_bit`.\",\n \"enum\": [\n \"fluent_bit\"\n ],\n \"example\": \"fluent_bit\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"FLUENT_BIT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `http_server` source collects logs over HTTP POST from external services.\",\n \"properties\": {\n \"auth_strategy\": {\n \"description\": \"HTTP authentication method.\",\n \"enum\": [\n \"none\",\n \"plain\"\n ],\n \"example\": \"plain\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NONE\",\n \"PLAIN\"\n ]\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"Unique ID for the HTTP server source.\",\n \"example\": \"http-server-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"http_server\",\n \"description\": \"The source type. The value should always be `http_server`.\",\n \"enum\": [\n \"http_server\"\n ],\n \"example\": \"http_server\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP_SERVER\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"auth_strategy\",\n \"decoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `sumo_logic` source receives logs from Sumo Logic collectors.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"sumo-logic-source\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"sumo_logic\",\n \"description\": \"The source type. The value should always be `sumo_logic`.\",\n \"enum\": [\n \"sumo_logic\"\n ],\n \"example\": \"sumo_logic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUMO_LOGIC\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `rsyslog` source listens for logs over TCP or UDP from an `rsyslog` server using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"rsyslog-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used by the syslog source to receive messages.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"rsyslog\",\n \"description\": \"The source type. The value should always be `rsyslog`.\",\n \"enum\": [\n \"rsyslog\"\n ],\n \"example\": \"rsyslog\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"RSYSLOG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `syslog_ng` source listens for logs over TCP or UDP from a `syslog-ng` server using the syslog protocol.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"syslog-ng-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used by the syslog source to receive messages.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"syslog_ng\",\n \"description\": \"The source type. The value should always be `syslog_ng`.\",\n \"enum\": [\n \"syslog_ng\"\n ],\n \"example\": \"syslog_ng\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SYSLOG_NG\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `amazon_data_firehose` source ingests logs from AWS Data Firehose.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"AWS authentication credentials used for accessing AWS services such as S3.\\nIf omitted, the system\\u2019s default credentials are used (for example, the IAM role and environment variables).\",\n \"properties\": {\n \"assume_role\": {\n \"description\": \"The Amazon Resource Name (ARN) of the role to assume.\",\n \"type\": \"string\"\n },\n \"external_id\": {\n \"description\": \"A unique identifier for cross-account role assumption.\",\n \"type\": \"string\"\n },\n \"session_name\": {\n \"description\": \"A session identifier used for logging and tracing the assumed role session.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"amazon-firehose-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"amazon_data_firehose\",\n \"description\": \"The source type. The value should always be `amazon_data_firehose`.\",\n \"enum\": [\n \"amazon_data_firehose\"\n ],\n \"example\": \"amazon_data_firehose\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"AMAZON_DATA_FIREHOSE\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `google_pubsub` source ingests logs from a Google Cloud Pub/Sub subscription.\",\n \"properties\": {\n \"auth\": {\n \"description\": \"GCP credentials used to authenticate with Google Cloud Storage.\",\n \"properties\": {\n \"credentials_file\": {\n \"description\": \"Path to the GCP service account key file.\",\n \"example\": \"/var/secrets/gcp-credentials.json\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"credentials_file\"\n ],\n \"type\": \"object\"\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"google-pubsub-source\",\n \"type\": \"string\"\n },\n \"project\": {\n \"description\": \"The GCP project ID that owns the Pub/Sub subscription.\",\n \"example\": \"my-gcp-project\",\n \"type\": \"string\"\n },\n \"subscription\": {\n \"description\": \"The Pub/Sub subscription name from which messages are consumed.\",\n \"example\": \"logs-subscription\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"google_pubsub\",\n \"description\": \"The source type. The value should always be `google_pubsub`.\",\n \"enum\": [\n \"google_pubsub\"\n ],\n \"example\": \"google_pubsub\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"GOOGLE_PUBSUB\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"auth\",\n \"decoding\",\n \"project\",\n \"subscription\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `http_client` source scrapes logs from HTTP endpoints at regular intervals.\",\n \"properties\": {\n \"auth_strategy\": {\n \"description\": \"Optional authentication strategy for HTTP requests.\",\n \"enum\": [\n \"basic\",\n \"bearer\"\n ],\n \"example\": \"basic\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BASIC\",\n \"BEARER\"\n ]\n },\n \"decoding\": {\n \"description\": \"The decoding format used to interpret incoming logs.\",\n \"enum\": [\n \"bytes\",\n \"gelf\",\n \"json\",\n \"syslog\"\n ],\n \"example\": \"json\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DECODE_BYTES\",\n \"DECODE_GELF\",\n \"DECODE_JSON\",\n \"DECODE_SYSLOG\"\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"http-client-source\",\n \"type\": \"string\"\n },\n \"scrape_interval_secs\": {\n \"description\": \"The interval (in seconds) between HTTP scrape requests.\",\n \"example\": 60,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"scrape_timeout_secs\": {\n \"description\": \"The timeout (in seconds) for each scrape request.\",\n \"example\": 10,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"http_client\",\n \"description\": \"The source type. The value should always be `http_client`.\",\n \"enum\": [\n \"http_client\"\n ],\n \"example\": \"http_client\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"HTTP_CLIENT\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"decoding\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `logstash` source ingests logs from a Logstash forwarder.\",\n \"properties\": {\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"logstash-source\",\n \"type\": \"string\"\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"logstash\",\n \"description\": \"The source type. The value should always be `logstash`.\",\n \"enum\": [\n \"logstash\"\n ],\n \"example\": \"logstash\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGSTASH\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The `socket` source ingests logs over TCP or UDP.\",\n \"properties\": {\n \"framing\": {\n \"description\": \"Framing method configuration for the socket source.\",\n \"oneOf\": [\n {\n \"description\": \"Byte frames which are delimited by a newline character.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames which are delimited by a newline character.\",\n \"enum\": [\n \"newline_delimited\"\n ],\n \"example\": \"newline_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"NEWLINE_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames are passed through as-is according to the underlying I/O boundaries (for example, split between messages or stream segments).\",\n \"enum\": [\n \"bytes\"\n ],\n \"example\": \"bytes\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BYTES\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames which are delimited by a chosen character.\",\n \"properties\": {\n \"delimiter\": {\n \"description\": \"A single ASCII character used to delimit events.\",\n \"example\": \"|\",\n \"maxLength\": 1,\n \"minLength\": 1,\n \"type\": \"string\"\n },\n \"method\": {\n \"description\": \"Byte frames which are delimited by a chosen character.\",\n \"enum\": [\n \"character_delimited\"\n ],\n \"example\": \"character_delimited\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHARACTER_DELIMITED\"\n ]\n }\n },\n \"required\": [\n \"method\",\n \"delimiter\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames according to the octet counting format as per RFC6587.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames according to the octet counting format as per RFC6587.\",\n \"enum\": [\n \"octet_counting\"\n ],\n \"example\": \"octet_counting\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"OCTET_COUNTING\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Byte frames which are chunked GELF messages.\",\n \"properties\": {\n \"method\": {\n \"description\": \"Byte frames which are chunked GELF messages.\",\n \"enum\": [\n \"chunked_gelf\"\n ],\n \"example\": \"chunked_gelf\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CHUNKED_GELF\"\n ]\n }\n },\n \"required\": [\n \"method\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"id\": {\n \"description\": \"The unique identifier for this component. Used to reference this component in other parts of the pipeline (e.g., as input to downstream components).\",\n \"example\": \"socket-source\",\n \"type\": \"string\"\n },\n \"mode\": {\n \"description\": \"Protocol used to receive logs.\",\n \"enum\": [\n \"tcp\",\n \"udp\"\n ],\n \"example\": \"tcp\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"TCP\",\n \"UDP\"\n ]\n },\n \"tls\": {\n \"description\": \"Configuration for enabling TLS encryption between the pipeline component and external services.\",\n \"properties\": {\n \"ca_file\": {\n \"description\": \"Path to the Certificate Authority (CA) file used to validate the server\\u2019s TLS certificate.\",\n \"type\": \"string\"\n },\n \"crt_file\": {\n \"description\": \"Path to the TLS client certificate file used to authenticate the pipeline component with upstream or downstream services.\",\n \"example\": \"/path/to/cert.crt\",\n \"type\": \"string\"\n },\n \"key_file\": {\n \"description\": \"Path to the private key file associated with the TLS client certificate. Used for mutual TLS authentication.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"crt_file\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"socket\",\n \"description\": \"The source type. The value should always be `socket`.\",\n \"enum\": [\n \"socket\"\n ],\n \"example\": \"socket\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SOCKET\"\n ]\n }\n },\n \"required\": [\n \"id\",\n \"type\",\n \"mode\",\n \"framing\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"sources\",\n \"destinations\"\n ],\n \"type\": \"object\"\n },\n \"name\": {\n \"description\": \"Name of the pipeline.\",\n \"example\": \"Main Observability Pipeline\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"config\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"pipelines\",\n \"description\": \"The resource type identifier. For pipeline resources, this should always be set to `pipelines`.\",\n \"example\": \"pipelines\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateSecurityMonitoringRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateSecurityMonitoringRule.json new file mode 100644 index 00000000..e9263983 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateSecurityMonitoringRule.json @@ -0,0 +1,126 @@ +{ + "name": "ValidateSecurityMonitoringRule", + "fully_qualified_name": "DatadogApi.ValidateSecurityMonitoringRule@0.1.0", + "description": "Validate a detection rule in Datadog.\n\nUse this tool to validate the configuration of a detection rule in Datadog's security monitoring. It checks if the rule meets all necessary criteria and returns whether it is valid.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "rule_configuration", + "required": true, + "description": "JSON object containing the details of the detection rule to validate. It should include all necessary configurations and criteria.", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "inferrable": true, + "http_endpoint_parameter_name": "requestBody" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ValidateSecurityMonitoringRule'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/rules/validation", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "requestBody", + "tool_parameter_name": "rule_configuration", + "description": "", + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "" + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Validate a rule.\",\n \"oneOf\": [\n {\n \"description\": \"The payload of a rule.\",\n \"properties\": {\n \"calculatedFields\": {\n \"description\": \"Calculated fields. Only allowed for scheduled rules - in other words, when schedulingOptions is also defined.\",\n \"items\": {\n \"description\": \"Calculated field.\",\n \"properties\": {\n \"expression\": {\n \"description\": \"Expression.\",\n \"example\": \"@request_end_timestamp - @request_start_timestamp\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Field name.\",\n \"example\": \"response_time\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"expression\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"customMessage\": {\n \"description\": \"Custom/Overridden message for generated signals (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"customName\": {\n \"description\": \"Custom/Overridden name of the rule (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"groupSignalsBy\": {\n \"description\": \"Additional grouping to perform on top of the existing groups in the query section. Must be a subset of the existing groups.\",\n \"example\": [\n \"service\"\n ],\n \"items\": {\n \"description\": \"Field to group by.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting logs which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"customQueryExtension\": {\n \"description\": \"Query extension to append to the logs query.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n },\n \"dataSource\": {\n \"default\": \"logs\",\n \"description\": \"Source of events, either logs, audit trail, or Datadog events.\",\n \"enum\": [\n \"logs\",\n \"audit\",\n \"app_sec_spans\",\n \"spans\",\n \"security_runtime\",\n \"network\",\n \"events\"\n ],\n \"example\": \"logs\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOGS\",\n \"AUDIT\",\n \"APP_SEC_SPANS\",\n \"SPANS\",\n \"SECURITY_RUNTIME\",\n \"NETWORK\",\n \"EVENTS\"\n ]\n },\n \"distinctFields\": {\n \"description\": \"Field for which the cardinality is measured. Sent as an array.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"hasOptionalGroupByFields\": {\n \"default\": false,\n \"description\": \"When false, events without a group-by value are ignored by the rule. When true, events with missing group-by fields are processed with `N/A`, replacing the missing values.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"index\": {\n \"description\": \"**This field is currently unstable and might be removed in a minor version upgrade.**\\nThe index to run the query on, if the `dataSource` is `logs`. Only used for scheduled rules - in other words, when the `schedulingOptions` field is present in the rule payload.\",\n \"type\": \"string\"\n },\n \"indexes\": {\n \"description\": \"List of indexes to query when the `dataSource` is `logs`. Only used for scheduled rules, such as when the `schedulingOptions` field is present in the rule payload.\",\n \"items\": {\n \"description\": \"Index.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"metric\": {\n \"deprecated\": true,\n \"description\": \"(Deprecated) The target field to aggregate over when using the sum or max\\naggregations. `metrics` field should be used instead.\",\n \"type\": \"string\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over when using the sum, max, geo data, or new value aggregations. The sum, max, and geo data aggregations only accept one value in this list, whereas the new value aggregation accepts up to five values.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"a > 3\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"referenceTables\": {\n \"description\": \"Reference tables for the rule.\",\n \"items\": {\n \"description\": \"Reference tables used in the queries.\",\n \"properties\": {\n \"checkPresence\": {\n \"description\": \"Whether to include or exclude the matched values.\",\n \"type\": \"boolean\"\n },\n \"columnName\": {\n \"description\": \"The name of the column in the reference table.\",\n \"type\": \"string\"\n },\n \"logFieldPath\": {\n \"description\": \"The field in the log to match against the reference table.\",\n \"type\": \"string\"\n },\n \"ruleQueryName\": {\n \"description\": \"The name of the query to apply the reference table to.\",\n \"type\": \"string\"\n },\n \"tableName\": {\n \"description\": \"The name of the reference table.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"schedulingOptions\": {\n \"description\": \"Options for scheduled rules. When this field is present, the rule runs based on the schedule. When absent, it runs real-time on ingested logs.\",\n \"nullable\": true,\n \"properties\": {\n \"rrule\": {\n \"description\": \"Schedule for the rule queries, written in RRULE syntax. See [RFC](https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html) for syntax reference.\",\n \"example\": \"FREQ=HOURLY;INTERVAL=1;\",\n \"type\": \"string\"\n },\n \"start\": {\n \"description\": \"Start date for the schedule, in ISO 8601 format without timezone.\",\n \"example\": \"2025-07-14T12:00:00\",\n \"type\": \"string\"\n },\n \"timezone\": {\n \"description\": \"Time zone of the start date, in the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format.\",\n \"example\": \"America/New_York\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"thirdPartyCases\": {\n \"description\": \"Cases for generating signals from third-party rules. Only available for third-party rules.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when a signal is generated by a third party rule.\",\n \"properties\": {\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets for each case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"A query to map a third party event to this case.\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"api_security\",\n \"application_security\",\n \"log_detection\",\n \"workload_security\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"API_SECURITY\",\n \"APPLICATION_SECURITY\",\n \"LOG_DETECTION\",\n \"WORKLOAD_SECURITY\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The payload of a signal correlation rule.\",\n \"properties\": {\n \"cases\": {\n \"description\": \"Cases for generating signals.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Case when signal is generated.\",\n \"properties\": {\n \"actions\": {\n \"description\": \"Action to perform for each rule case.\",\n \"items\": {\n \"description\": \"Action to perform when a signal is triggered. Only available for Application Security rule type.\",\n \"properties\": {\n \"options\": {\n \"additionalProperties\": {},\n \"description\": \"Options for the rule action\",\n \"properties\": {\n \"duration\": {\n \"description\": \"Duration of the action in seconds. 0 indicates no expiration.\",\n \"example\": 0,\n \"format\": \"int64\",\n \"minimum\": 0,\n \"type\": \"integer\"\n },\n \"flaggedIPType\": {\n \"description\": \"Used with the case action of type 'flag_ip'. The value specified in this field is applied as a flag to the IP addresses.\",\n \"enum\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ],\n \"example\": \"FLAGGED\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUSPICIOUS\",\n \"FLAGGED\"\n ]\n },\n \"userBehaviorName\": {\n \"description\": \"Used with the case action of type 'user_behavior'. The value specified in this field is applied as a risk tag to all users affected by the rule.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": {\n \"description\": \"The action type.\",\n \"enum\": [\n \"block_ip\",\n \"block_user\",\n \"user_behavior\",\n \"flag_ip\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"BLOCK_IP\",\n \"BLOCK_USER\",\n \"USER_BEHAVIOR\",\n \"FLAG_IP\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"condition\": {\n \"description\": \"A case contains logical operations (`>`,`>=`, `&&`, `||`) to determine if a signal should be generated\\nbased on the event counts in the previously defined queries.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the case.\",\n \"type\": \"string\"\n },\n \"notifications\": {\n \"description\": \"Notification targets.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"customMessage\": {\n \"description\": \"Custom/Overridden message for generated signals (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"customName\": {\n \"description\": \"Custom/Overridden name of the rule (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed. This field is deprecated for log detection, signal correlation, and workload security rules.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"hasExtendedTitle\": {\n \"description\": \"Whether the notifications include the triggering group-by values in their title.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message for generated signals.\",\n \"example\": \"\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"decreaseCriticalityBasedOnEnv\": {\n \"description\": \"If true, signals in non-production environments have a lower severity than what is defined by the rule case, which can reduce signal noise.\\nThe severity is decreased by one level: `CRITICAL` in production becomes `HIGH` in non-production, `HIGH` becomes `MEDIUM` and so on. `INFO` remains `INFO`.\\nThe decrement is applied when the environment tag of the signal starts with `staging`, `test` or `dev`.\",\n \"example\": false,\n \"type\": \"boolean\"\n },\n \"detectionMethod\": {\n \"description\": \"The detection method.\",\n \"enum\": [\n \"threshold\",\n \"new_value\",\n \"anomaly_detection\",\n \"impossible_travel\",\n \"hardcoded\",\n \"third_party\",\n \"anomaly_threshold\",\n \"sequence_detection\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"THRESHOLD\",\n \"NEW_VALUE\",\n \"ANOMALY_DETECTION\",\n \"IMPOSSIBLE_TRAVEL\",\n \"HARDCODED\",\n \"THIRD_PARTY\",\n \"ANOMALY_THRESHOLD\",\n \"SEQUENCE_DETECTION\"\n ]\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"hardcodedEvaluatorType\": {\n \"description\": \"Hardcoded evaluator type.\",\n \"enum\": [\n \"log4shell\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"LOG4SHELL\"\n ]\n },\n \"impossibleTravelOptions\": {\n \"description\": \"Options on impossible travel detection method.\",\n \"properties\": {\n \"baselineUserLocations\": {\n \"description\": \"If true, signals are suppressed for the first 24 hours. In that time, Datadog learns the user's regular\\naccess locations. This can be helpful to reduce noise and infer VPN usage or credentialed API access.\",\n \"example\": true,\n \"type\": \"boolean\"\n }\n },\n \"type\": \"object\"\n },\n \"keepAlive\": {\n \"description\": \"Once a signal is generated, the signal will remain \\\"open\\\" if a case is matched at least once within\\nthis keep alive window. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"maxSignalDuration\": {\n \"description\": \"A signal will \\\"close\\\" regardless of the query being matched once the time exceeds the maximum duration.\\nThis time is calculated from the first seen timestamp.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"newValueOptions\": {\n \"description\": \"Options on new value detection method.\",\n \"properties\": {\n \"forgetAfter\": {\n \"description\": \"The duration in days after which a learned value is forgotten.\",\n \"enum\": [\n 1,\n 2,\n 7,\n 14,\n 21,\n 28\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ONE_DAY\",\n \"TWO_DAYS\",\n \"ONE_WEEK\",\n \"TWO_WEEKS\",\n \"THREE_WEEKS\",\n \"FOUR_WEEKS\"\n ]\n },\n \"learningDuration\": {\n \"default\": 0,\n \"description\": \"The duration in days during which values are learned, and after which signals will be generated for values that\\nweren't learned. If set to 0, a signal will be generated for all new values after the first value is learned.\",\n \"enum\": [\n 0,\n 1,\n 7\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_DAYS\",\n \"ONE_DAY\",\n \"SEVEN_DAYS\"\n ]\n },\n \"learningMethod\": {\n \"default\": \"duration\",\n \"description\": \"The learning method used to determine when signals should be generated for values that weren't learned.\",\n \"enum\": [\n \"duration\",\n \"threshold\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"DURATION\",\n \"THRESHOLD\"\n ]\n },\n \"learningThreshold\": {\n \"default\": 0,\n \"description\": \"A number of occurrences after which signals will be generated for values that weren't learned.\",\n \"enum\": [\n 0,\n 1\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_OCCURRENCES\",\n \"ONE_OCCURRENCE\"\n ]\n }\n },\n \"type\": \"object\"\n },\n \"sequenceDetectionOptions\": {\n \"description\": \"Options on sequence detection method.\",\n \"properties\": {\n \"stepTransitions\": {\n \"description\": \"Transitions defining the allowed order of steps and their evaluation windows.\",\n \"items\": {\n \"description\": \"Transition from a parent step to a child step within a sequence detection rule.\",\n \"properties\": {\n \"child\": {\n \"description\": \"Name of the child step.\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"parent\": {\n \"description\": \"Name of the parent step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"steps\": {\n \"description\": \"Steps that define the conditions to be matched in sequence.\",\n \"items\": {\n \"description\": \"Step definition for sequence detection containing the step name, condition, and evaluation window.\",\n \"properties\": {\n \"condition\": {\n \"description\": \"Condition referencing rule queries (e.g., `a > 0`).\",\n \"type\": \"string\"\n },\n \"evaluationWindow\": {\n \"description\": \"A time window is specified to match when at least one of the cases matches true. This is a sliding window\\nand evaluates in real time. For third party detection method, this field is not used.\",\n \"enum\": [\n 0,\n 60,\n 300,\n 600,\n 900,\n 1800,\n 3600,\n 7200,\n 10800,\n 21600,\n 43200,\n 86400\n ],\n \"format\": \"int32\",\n \"type\": \"integer\",\n \"x-enum-varnames\": [\n \"ZERO_MINUTES\",\n \"ONE_MINUTE\",\n \"FIVE_MINUTES\",\n \"TEN_MINUTES\",\n \"FIFTEEN_MINUTES\",\n \"THIRTY_MINUTES\",\n \"ONE_HOUR\",\n \"TWO_HOURS\",\n \"THREE_HOURS\",\n \"SIX_HOURS\",\n \"TWELVE_HOURS\",\n \"ONE_DAY\"\n ]\n },\n \"name\": {\n \"description\": \"Unique name identifying the step.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"thirdPartyRuleOptions\": {\n \"description\": \"Options on third party detection method.\",\n \"properties\": {\n \"defaultNotifications\": {\n \"description\": \"Notification targets for the logs that do not correspond to any of the cases.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"defaultStatus\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n },\n \"rootQueries\": {\n \"description\": \"Queries to be combined with third party case queries. Each of them can have different group by fields, to aggregate differently based on the type of alert.\",\n \"items\": {\n \"description\": \"A query to be combined with the third party case query.\",\n \"properties\": {\n \"groupByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"query\": {\n \"description\": \"Query to run on logs.\",\n \"example\": \"source:cloudtrail\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"signalTitleTemplate\": {\n \"description\": \"A template for the signal title; if omitted, the title is generated based on the case name.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n },\n \"queries\": {\n \"description\": \"Queries for selecting signals which are part of the rule.\",\n \"example\": [],\n \"items\": {\n \"description\": \"Query for matching rule on signals.\",\n \"properties\": {\n \"aggregation\": {\n \"description\": \"The aggregation type.\",\n \"enum\": [\n \"count\",\n \"cardinality\",\n \"sum\",\n \"max\",\n \"new_value\",\n \"geo_data\",\n \"event_count\",\n \"none\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"COUNT\",\n \"CARDINALITY\",\n \"SUM\",\n \"MAX\",\n \"NEW_VALUE\",\n \"GEO_DATA\",\n \"EVENT_COUNT\",\n \"NONE\"\n ]\n },\n \"correlatedByFields\": {\n \"description\": \"Fields to group by.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"correlatedQueryIndex\": {\n \"description\": \"Index of the rule query used to retrieve the correlated field.\",\n \"format\": \"int32\",\n \"maximum\": 9,\n \"type\": \"integer\"\n },\n \"metrics\": {\n \"description\": \"Group of target fields to aggregate over.\",\n \"items\": {\n \"description\": \"Field.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"name\": {\n \"description\": \"Name of the query.\",\n \"type\": \"string\"\n },\n \"ruleId\": {\n \"description\": \"Rule ID to match on signals.\",\n \"example\": \"org-ru1-e1d\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"ruleId\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags for generated signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"signal_correlation\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SIGNAL_CORRELATION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"queries\",\n \"options\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"The payload of a cloud configuration rule.\",\n \"properties\": {\n \"cases\": {\n \"description\": \"Description of generated findings and signals (severity and channels to be notified in case of a signal). Must contain exactly one item.\",\n \"items\": {\n \"description\": \"Description of signals.\",\n \"properties\": {\n \"notifications\": {\n \"description\": \"Notification targets for each rule case.\",\n \"items\": {\n \"description\": \"Notification.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Severity of the Security Signal.\",\n \"enum\": [\n \"info\",\n \"low\",\n \"medium\",\n \"high\",\n \"critical\"\n ],\n \"example\": \"critical\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"INFO\",\n \"LOW\",\n \"MEDIUM\",\n \"HIGH\",\n \"CRITICAL\"\n ]\n }\n },\n \"required\": [\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"complianceSignalOptions\": {\n \"description\": \"How to generate compliance signals. Useful for cloud_configuration rules only.\",\n \"properties\": {\n \"defaultActivationStatus\": {\n \"description\": \"The default activation status.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"defaultGroupByFields\": {\n \"description\": \"The default group by fields.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"userActivationStatus\": {\n \"description\": \"Whether signals will be sent.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"userGroupByFields\": {\n \"description\": \"Fields to use to group findings by when sending signals.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n }\n },\n \"type\": \"object\"\n },\n \"customMessage\": {\n \"description\": \"Custom/Overridden message for generated signals (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"customName\": {\n \"description\": \"Custom/Overridden name of the rule (used in case of Default rule update).\",\n \"type\": \"string\"\n },\n \"filters\": {\n \"description\": \"Additional queries to filter matched events before they are processed.\",\n \"items\": {\n \"description\": \"The rule's suppression filter.\",\n \"properties\": {\n \"action\": {\n \"description\": \"The type of filtering action.\",\n \"enum\": [\n \"require\",\n \"suppress\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"REQUIRE\",\n \"SUPPRESS\"\n ]\n },\n \"query\": {\n \"description\": \"Query for selecting logs to apply the filtering action.\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"isEnabled\": {\n \"description\": \"Whether the rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"message\": {\n \"description\": \"Message in markdown format for generated findings and signals.\",\n \"example\": \"#Description\\nExplanation of the rule.\\n\\n#Remediation\\nHow to fix the security issue.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"The name of the rule.\",\n \"example\": \"My security monitoring rule.\",\n \"type\": \"string\"\n },\n \"options\": {\n \"description\": \"Options on cloud configuration rules.\",\n \"properties\": {\n \"complianceRuleOptions\": {\n \"additionalProperties\": {},\n \"description\": \"Options for cloud_configuration rules.\\nFields `resourceType` and `regoRule` are mandatory when managing custom `cloud_configuration` rules.\",\n \"properties\": {\n \"complexRule\": {\n \"description\": \"Whether the rule is a complex one.\\nMust be set to true if `regoRule.resourceTypes` contains more than one item. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"regoRule\": {\n \"description\": \"Rule details.\",\n \"properties\": {\n \"policy\": {\n \"description\": \"The policy written in `rego`, see: https://www.openpolicyagent.org/docs/latest/policy-language/\",\n \"example\": \"package datadog\\n\\nimport data.datadog.output as dd_output\\nimport future.keywords.contains\\nimport future.keywords.if\\nimport future.keywords.in\\n\\neval(resource) = \\\"skip\\\" if {\\n # Logic that evaluates to true if the resource should be skipped\\n true\\n} else = \\\"pass\\\" {\\n # Logic that evaluates to true if the resource is compliant\\n true\\n} else = \\\"fail\\\" {\\n # Logic that evaluates to true if the resource is not compliant\\n true\\n}\\n\\n# This part remains unchanged for all rules\\nresults contains result if {\\n some resource in input.resources[input.main_resource_type]\\n result := dd_output.format(resource, eval(resource))\\n}\",\n \"type\": \"string\"\n },\n \"resourceTypes\": {\n \"description\": \"List of resource types that will be evaluated upon. Must have at least one element.\",\n \"example\": [\n \"gcp_iam_service_account\",\n \"gcp_iam_policy\"\n ],\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"policy\",\n \"resourceTypes\"\n ],\n \"type\": \"object\"\n },\n \"resourceType\": {\n \"description\": \"Main resource type to be checked by the rule. It should be specified again in `regoRule.resourceTypes`.\",\n \"example\": \"aws_acm\",\n \"type\": \"string\"\n }\n },\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"complianceRuleOptions\"\n ],\n \"type\": \"object\"\n },\n \"tags\": {\n \"description\": \"Tags for generated findings and signals.\",\n \"example\": [\n \"env:prod\",\n \"team:security\"\n ],\n \"items\": {\n \"description\": \"Tag.\",\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"The rule type.\",\n \"enum\": [\n \"cloud_configuration\"\n ],\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"CLOUD_CONFIGURATION\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"isEnabled\",\n \"options\",\n \"complianceSignalOptions\",\n \"cases\",\n \"message\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": true, + "validate_request_body_schema": true + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateSuppressionRule.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateSuppressionRule.json new file mode 100644 index 00000000..e3c5104a --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateSuppressionRule.json @@ -0,0 +1,394 @@ +{ + "name": "ValidateSuppressionRule", + "fully_qualified_name": "DatadogApi.ValidateSuppressionRule@0.1.0", + "description": "Validate a suppression rule in Datadog's monitoring system.\n\nThis tool validates suppression rules in Datadog's security monitoring configuration. Use it to ensure rules are correctly set up and functioning as intended.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "suppression_rule_name", + "required": true, + "description": "The name of the suppression rule to be validated.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the suppression rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.name" + }, + { + "name": "suppression_rule_query", + "required": true, + "description": "The rule query for the suppression rule, using detection rules search bar syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.rule_query" + }, + { + "name": "resource_type", + "required": true, + "description": "Defines the type of the resource. Always set to `suppressions`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "suppressions" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `suppressions`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + }, + { + "name": "is_suppression_rule_enabled", + "required": true, + "description": "Indicates whether the suppression rule is currently active.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the suppression rule is enabled." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.enabled" + }, + { + "name": "exclusion_query_on_input_data", + "required": false, + "description": "An exclusion query for input data, such as logs or events. Events matching this are ignored by detection rules in the suppression rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.data_exclusion_query" + }, + { + "name": "suppression_rule_description", + "required": false, + "description": "A text description of the suppression rule, explaining its purpose and details.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A description for the suppression rule." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.description" + }, + { + "name": "suppression_rule_expiration_date", + "required": false, + "description": "A Unix millisecond timestamp for when the suppression rule expires and stops suppressing signals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.expiration_date" + }, + { + "name": "suppression_rule_start_date", + "required": false, + "description": "Unix millisecond timestamp for the start date of the suppression rule, when it begins suppressing signals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.start_date" + }, + { + "name": "suppression_query", + "required": false, + "description": "The query for the suppression rule. Signals matching this query are suppressed, using Signals Explorer syntax.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.suppression_query" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ValidateSecurityMonitoringSuppression'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/security_monitoring/configuration/suppressions/validation", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.data_exclusion_query", + "tool_parameter_name": "exclusion_query_on_input_data", + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.description", + "tool_parameter_name": "suppression_rule_description", + "description": "A description for the suppression rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A description for the suppression rule." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.enabled", + "tool_parameter_name": "is_suppression_rule_enabled", + "description": "Whether the suppression rule is enabled.", + "value_schema": { + "val_type": "boolean", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "Whether the suppression rule is enabled." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.expiration_date", + "tool_parameter_name": "suppression_rule_expiration_date", + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.name", + "tool_parameter_name": "suppression_rule_name", + "description": "The name of the suppression rule.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The name of the suppression rule." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.rule_query", + "tool_parameter_name": "suppression_rule_query", + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The rule query of the suppression rule, with the same syntax as the search bar for detection rules." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.start_date", + "tool_parameter_name": "suppression_rule_start_date", + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals.", + "value_schema": { + "val_type": "integer", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.attributes.suppression_query", + "tool_parameter_name": "suppression_query", + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "resource_type", + "description": "The type of the resource. The value should always be `suppressions`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "suppressions" + ], + "properties": null, + "inner_properties": null, + "description": "The type of the resource. The value should always be `suppressions`." + }, + "accepted_as": "body", + "required": true, + "deprecated": false, + "default": "suppressions", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"Request object that includes the suppression rule that you would like to create.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Object for a single suppression rule.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"Object containing the attributes of the suppression rule to be created.\",\n \"properties\": {\n \"data_exclusion_query\": {\n \"description\": \"An exclusion query on the input data of the security rules, which could be logs, Agent events, or other types of data based on the security rule. Events matching this query are ignored by any detection rules referenced in the suppression rule.\",\n \"example\": \"source:cloudtrail account_id:12345\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"A description for the suppression rule.\",\n \"example\": \"This rule suppresses low-severity signals in staging environments.\",\n \"type\": \"string\"\n },\n \"enabled\": {\n \"description\": \"Whether the suppression rule is enabled.\",\n \"example\": true,\n \"type\": \"boolean\"\n },\n \"expiration_date\": {\n \"description\": \"A Unix millisecond timestamp giving an expiration date for the suppression rule. After this date, it won't suppress signals anymore.\",\n \"example\": 1703187336000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"The name of the suppression rule.\",\n \"example\": \"Custom suppression\",\n \"type\": \"string\"\n },\n \"rule_query\": {\n \"description\": \"The rule query of the suppression rule, with the same syntax as the search bar for detection rules.\",\n \"example\": \"type:log_detection source:cloudtrail\",\n \"type\": \"string\"\n },\n \"start_date\": {\n \"description\": \"A Unix millisecond timestamp giving the start date for the suppression rule. After this date, it starts suppressing signals.\",\n \"example\": 1703187336000,\n \"format\": \"int64\",\n \"type\": \"integer\"\n },\n \"suppression_query\": {\n \"description\": \"The suppression query of the suppression rule. If a signal matches this query, it is suppressed and is not triggered. It uses the same syntax as the queries to search signals in the Signals Explorer.\",\n \"example\": \"env:staging status:low\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"enabled\",\n \"rule_query\"\n ],\n \"type\": \"object\"\n },\n \"type\": {\n \"default\": \"suppressions\",\n \"description\": \"The type of the resource. The value should always be `suppressions`.\",\n \"enum\": [\n \"suppressions\"\n ],\n \"example\": \"suppressions\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"SUPPRESSIONS\"\n ]\n }\n },\n \"required\": [\n \"type\",\n \"attributes\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"data\"\n ],\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateTagPipelineQuery.json b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateTagPipelineQuery.json new file mode 100644 index 00000000..60fe8260 --- /dev/null +++ b/toolkits/datadog_api/arcade_datadog_api/wrapper_tools/ValidateTagPipelineQuery.json @@ -0,0 +1,196 @@ +{ + "name": "ValidateTagPipelineQuery", + "fully_qualified_name": "DatadogApi.ValidateTagPipelineQuery@0.1.0", + "description": "Validate the syntax and structure of a tag pipeline query.\n\nUse this tool to ensure that a tag pipeline query is correctly structured and free of syntax errors.", + "toolkit": { + "name": "ArcadeDatadogApi", + "description": null, + "version": "0.1.0" + }, + "input": { + "parameters": [ + { + "name": "query_attributes", + "required": false, + "description": "The tag pipeline query to validate. Ensure it is correctly structured and free of syntax errors.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `Query`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.attributes.Query" + }, + { + "name": "query_request_data_id", + "required": false, + "description": "The unique identifier for the RulesValidateQueryRequestData.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RulesValidateQueryRequestData` `id`." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.id" + }, + { + "name": "query_resource_type", + "required": false, + "description": "Specify the type of resource for query validation, always use 'validate_query'.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "validate_query" + ], + "properties": null, + "inner_properties": null, + "description": "Validate query resource type." + }, + "inferrable": true, + "http_endpoint_parameter_name": "data.type" + } + ] + }, + "output": { + "description": "Response from the API endpoint 'ValidateQuery'.", + "available_modes": [ + "value", + "error", + "null" + ], + "value_schema": { + "val_type": "json", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": null + } + }, + "requirements": { + "authorization": null, + "secrets": [ + { + "key": "DATADOG_API_KEY" + }, + { + "key": "DATADOG_APPLICATION_KEY" + }, + { + "key": "DATADOG_BASE_URL" + } + ], + "metadata": null + }, + "deprecation_message": null, + "metadata": { + "object_type": "api_wrapper_tool", + "version": "1.1.0", + "description": "Tools that enable LLMs to interact directly with the Datadog API." + }, + "http_endpoint": { + "metadata": { + "object_type": "http_endpoint", + "version": "1.2.0", + "description": "" + }, + "url": "https://{datadog_base_url}/api/v2/tags/enrichment/validate-query", + "http_method": "POST", + "headers": {}, + "parameters": [ + { + "name": "data.attributes.Query", + "tool_parameter_name": "query_attributes", + "description": "The `attributes` `Query`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `attributes` `Query`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.id", + "tool_parameter_name": "query_request_data_id", + "description": "The `RulesValidateQueryRequestData` `id`.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": null, + "properties": null, + "inner_properties": null, + "description": "The `RulesValidateQueryRequestData` `id`." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": null, + "documentation_urls": [] + }, + { + "name": "data.type", + "tool_parameter_name": "query_resource_type", + "description": "Validate query resource type.", + "value_schema": { + "val_type": "string", + "inner_val_type": null, + "enum": [ + "validate_query" + ], + "properties": null, + "inner_properties": null, + "description": "Validate query resource type." + }, + "accepted_as": "body", + "required": false, + "deprecated": false, + "default": "validate_query", + "documentation_urls": [] + } + ], + "documentation_urls": [], + "secrets": [ + { + "arcade_key": "DATADOG_API_KEY", + "parameter_name": "DD-API-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_APPLICATION_KEY", + "parameter_name": "DD-APPLICATION-KEY", + "accepted_as": "header", + "formatted_value": null, + "description": "", + "is_auth_token": false + }, + { + "arcade_key": "DATADOG_BASE_URL", + "parameter_name": "datadog_base_url", + "accepted_as": "path", + "formatted_value": null, + "description": "", + "is_auth_token": false + } + ], + "request_body_spec": "{\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"description\": \"The definition of `RulesValidateQueryRequest` object.\",\n \"example\": {\n \"data\": {\n \"attributes\": {\n \"Query\": \"example:query AND test:true\"\n },\n \"type\": \"validate_query\"\n }\n },\n \"properties\": {\n \"data\": {\n \"description\": \"The definition of `RulesValidateQueryRequestData` object.\",\n \"properties\": {\n \"attributes\": {\n \"description\": \"The definition of `RulesValidateQueryRequestDataAttributes` object.\",\n \"properties\": {\n \"Query\": {\n \"description\": \"The `attributes` `Query`.\",\n \"example\": \"\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"Query\"\n ],\n \"type\": \"object\"\n },\n \"id\": {\n \"description\": \"The `RulesValidateQueryRequestData` `id`.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"default\": \"validate_query\",\n \"description\": \"Validate query resource type.\",\n \"enum\": [\n \"validate_query\"\n ],\n \"example\": \"validate_query\",\n \"type\": \"string\",\n \"x-enum-varnames\": [\n \"VALIDATE_QUERY\"\n ]\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n },\n \"type\": \"object\"\n }\n }\n },\n \"required\": true\n}", + "use_request_body_schema_mode": false, + "validate_request_body_schema": false + } +} diff --git a/toolkits/datadog_api/pyproject.toml b/toolkits/datadog_api/pyproject.toml new file mode 100644 index 00000000..b1b7bec0 --- /dev/null +++ b/toolkits/datadog_api/pyproject.toml @@ -0,0 +1,61 @@ +[build-system] +requires = [ "hatchling",] +build-backend = "hatchling.build" + +[project] +name = "arcade_datadog_api" +version = "0.1.0" +description = "Tools that enable LLMs to interact directly with the Datadog 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_datadog_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_datadog_api/__init__.py",] +exclude = [] +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_datadog_api",] diff --git a/toolkits/datadog_api/tests/__init__.py b/toolkits/datadog_api/tests/__init__.py new file mode 100644 index 00000000..e69de29b